###前提・実現したいこと
ここに質問したいことを詳細に書いてください
cでマインスイーパー作成を作成しています。
###発生している問題・エラーメッセージ
最初からばんめんにいくつか数字が表示されてしまっている点と、座標を指定しても開かない点が問題になってます。 エラーめっせーじはありません。
###該当のソースコード
c言語 //min.c #include<stdio.h> #include<string.h> #include<sys/time.h> #include<stdlib.h> #include<stdbool.h> #define MINE 10 #define BORD_wide 9 #define BORD_high 9 bool g_open[BORD_wide+2][BORD_high+2]; bool g_mine[BORD_wide+2][BORD_high+2]; char g_near[BORD_wide+2][BORD_high+2]; int init_board(){ int x,y,i; for(x=0;x<11;x++){ for(y=0;y<11;y++){ g_mine[x][y]=false; g_near[x][y]=0; g_open[x][y]=false; } } for(i=0;i<10;i++){ int x,y; do{ x=rand()%10; y=rand()%10; } while(g_mine[x][y]); g_mine[x][y]=true; g_near[x-1][y-1]+=1; g_near[x][y-1]+=1; g_near[x+1][y-1]+=1; g_near[x-1][y]+=1; g_near[x][y]+=1; g_near[x+1][y]+=1; g_near[x-1][y+1]+=1; g_near[x][y+1]+=1; g_near[x+1][y+1]+=1; } } const char *digitStr[]={ "1","2","3","4","5","6","7","8","9", }; int pboard(bool sweeped){ int x,y; printf("\n 123456789\n"); for(y=1;y<=9;y++){ printf("%d",y); for(x=1;x<=9;x++){ if(!g_mine[x][y]) printf("?"); else if(sweeped&&g_mine[x][y]) printf("*"); else if(sweeped&&!g_near[x][y]) printf("#"); else printf("%d",g_near[x][y]); } printf("\n"); } printf("\n"); } bool checkSweeped(){ int x,y; for(x=1;x<=9;x++){ for(y=1;y<=9;y++){ if(!g_mine[x][y]&&!g_open[x][y]) return false; } } return true; } int main(void){ int xx,yy; struct timeval tv; gettimeofday(&tv,NULL); srand(tv.tv_sec+tv.tv_usec); printf("start minsweeper!"); for(;;){ init_board(); bool sweeped=false; while(!sweeped){ pboard(sweeped); printf("if you stop the game,put control+c.\n"); printf("input the coordinate. [x][y] : "); scanf("%d %d",&xx,&yy); if(g_mine[xx][yy]) break; sweeped=checkSweeped(); } pboard(sweeped); if(sweeped) printf("cleared!!\n"); else printf("Oh,no!you've failed."); } return 0; }
###試したこと
とりあえずif分のところのsweeped&&というのをやってみたのですが、それが問題だったりするかも気になります。
###補足情報(言語/FW/ツール等のバージョンなど)
osはセントでエディタはemacs、こんぱいらはgccを使ってます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。