扫雷
16lz
2021-05-04
#include<stdio.h>#include<time.h>#include<stdlib.h>#define ROW 9#define COL 9#define ROWS ROW+2#define COLS COL+2#define EASY_COUNT 10void menu(){printf("********************************\n");printf("******** 1. play ******\n"); printf("********* 0.exit *******\n"); printf("********************************\n");}void initboard(char board[ROWS][COLS],int rows,int cols,char set){int i,j;for(i=0;i<rows;i++){for(j=0;j<cols;j++)board[i][j]=set;}}void displayboard(char board[ROWS][COLS],int row,int col){int i,j;for(i=0;i<=col;i++){printf("%d ",i); } printf("\n");for(i=1;i<=row;i++){printf("%d ",i);for(j=1;j<=col;j++){printf("%c ",board[i][j]);}printf("\n"); } }void setmine(char board[ROWS][COLS],int row,int col){int count=EASY_COUNT;while(count){int x=rand()%row+1;int y=rand()%col+1;if(board[x][y]=='0'){board[x][y]='1';count--;}}}int get_mine_count(char mine[ROWS][COLS],int x,int y){ returnmine[x-1][y]+mine[x-1][y-1]+mine[x][y-1]+mine[x-1][y+1]+mine[x+1][y-1]+mine[x][y+1]+mine[x+1][y+11]+mine[x+1][y]-8*'0';}void findmine(char mine[ROWS][COLS],char show[ROWS][COLS],int row,int col){int x,y;int win=0;while(win<row*col-EASY_COUNT){printf("请输入排查雷的坐标:\n");scanf("%d %d",&x,&y);if(x>=1&&x<=row&&y>=1&&y<=col){ if(mine[x][y]=='1') { printf("很遗憾,你被炸死了\n"); displayboard(mine,ROW,COL); break; } else { int count=get_mine_count(mine,x,y);//求旁边雷的个数 show[x][y]=count+'0'; displayboard(show,ROW,COL); win++; }}else{printf("坐标输入错误,请重新输入\n");} } if(win==row*col-EASY_COUNT) { printf("恭喜你排雷成功\n"); displayboard(mine,ROW,COL); } }void game(){char mine[ROWS][COLS]={0};//布置好雷的数组 char show[ROWS][COLS]={0};//排查出信息的数组 initboard(mine,ROWS,COLS,'0');//初始化数组 initboard(show,ROWS,COLS,'*');//初始化数组displayboard(show,ROW,COL);//打印数组 setmine(mine,ROW,COL);//布置雷 findmine(mine,show,ROW,COL);//排雷 }void test(){int input=0;srand((unsigned int)time(NULL));do{menu();printf("请选择:1or0\n");scanf("%d",&input);switch(input){case 1:game();break;case 0: printf("退出游戏\n");break;default:printf("输入错误,请选择1or0\n");break;}}while(input);}int main(){ test(); return 0;}
更多相关文章
- 【php基础入门】小白整理PHP常用的字符串函数使用总结分析(推荐)
- 【php基础入门】PHP中常用的数组操作使用方法笔记整理(推荐)
- 0429作业
- php之数组键名更换,快速生成数组与数组过滤
- php 中的for and foreach遍历数组
- C语言中用于计算数组长度的函数 “strlen() ”。
- 语法基础: 使用不同的数据类型标记数组
- 动态数组传递数据示例 - 回复 YinGaGa 的问题
- 学 Win32 汇编[29] - 串指令: MOVS*、CMPS*、SCAS*、LODS*、REP