/*******扫雷游戏*********/ #include<stdlib.h> #include<time.h> int main(void) { int i=0; int j=0; //定义雷的个数 int numBomb=-1; //创建随机种子 ,根据时间的不同,随机数也不同 srand(time(0)); //最多5颗雷 numBomb=rand()%5+1; //产生5颗雷 //每组有x,y 两个元素值 int arrayPos[5][2]={0}; for( i=0;i<numBomb;i++) { int xPos=rand()%5+1; int yPos=rand()%5+1; //如果有雷的位置重合,放弃此次操作,重新产生一颗 for(j=0;j<5;j++) { if(xPos==arrayPos[j][0]&&yPos==arrayPos[j][1]) { i--; continue; } } arrayPos[i][0]=xPos; arrayPos[i][1]=yPos; } //地图数组 int arrayMap[7][7]={0}; //雷的布局的数组 int arrayBomb[7][7]={0}; for(i=0;i<numBomb;i++) { int xPos=arrayPos[i][0]; int yPos=arrayPos[i][i]; arrayBomb[xPos][yPos]=1; arrayMap[xPos][yPos]=-1; } for(i=0;i<6;i++) { for(j=1;j<6;j++) { if(arrayMap[i][j]==-1) { continue; } arrayMap[i][j]= arrayBomb[i][j-1]+ arrayBomb[i+1][j+1]+ arrayBomb[i+1][j]+ arrayBomb[i+1][j-1]+ arrayBomb[i][j+1]+ arrayBomb[i-1][j-1]+ arrayBomb[i-1][j]+ arrayBomb[i-1][j+1]; } } int isExit=0; int arrayMask[7][7]={0}; while(isExit==0) { for(i=1;i<6;i++) { for(j=1;j<6;j++) { if(arrayMask[i][j]==1) { printf("%d",arrayMap[i][j]); } else { printf("*"); } } printf("\n"); } int choise=-1; printf("数组数字:\n1:雷\n2:空地\n3:退出游戏\n"); scanf("%d",&choise); if(choise==3) { isExit=1; continue; } int xPos=-1; int yPos=-1; printf("请输入坐标:X,Y\n"); scanf("%d%d",&xPos,&yPos); if(arrayMap[xPos][yPos]==-1&&choise==2) { printf("你中雷了,游戏结束。\n"); for(i=0;i<7;i++) { for(j=0;j<7;j++) { printf("%3d",arrayMap[i][j]); } printf("\n"); } isExit=1; } arrayMask[xPos][yPos]=1; } return 0; }
ps;跟着老师码了一个小时的代码,最后竟然都是错误的,无奈的我只能去学习群找源码了,好丢脸!
发表评论: