专门做房地产设计的图片网站,app 官方网站 案例,建设公司网址,永久网站域名今天做一个有趣的扫雷小游戏 现在正式开始设计。
思路#xff1a;想要根本上实现必须拥有 实现函数的主体.c文件 头文件.h 及头文件实现.c。
头文件.h
#pragma once
#include stdio.h
#include stdlib.h
#include time.h
#define EASY_COUNT 10
#d…今天做一个有趣的扫雷小游戏 现在正式开始设计。
思路想要根本上实现必须拥有 实现函数的主体.c文件 头文件.h 及头文件实现.c。
头文件.h
#pragma once
#include stdio.h
#include stdlib.h
#include time.h
#define EASY_COUNT 10
#define ROW 9
#define COL 9
#define ROWS ROW2
#define COLS COL2//初始化棋盘void InitBoard(char board[ROWS][COLS], int rows, int cols, char set);//打印棋盘void DisplayBoard(char board[ROWS][COLS], int row, int col);//布置雷void SetMine(char board[ROWS][COLS], int row, int col);//排查雷void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);头文件的实现
#include game.hvoid InitBoard(char board[ROWS][COLS], int rows, int cols, char set)
{int i 0;for (i 0; i rows; i){int j 0;for (j 0; j cols; j){board[i][j] set;}}
}
void DisplayBoard(char board[ROWS][COLS], int row, int col)
{int i 0;printf(--------扫雷游戏-------\n);for (i 0; i col; i){printf(%d , i);}printf(\n);for (i 1; i row; i){printf(%d , i);int j 0;for (j 1; j col; j){printf(%c , board[i][j]);}printf(\n);}
}
void SetMine(char board[ROWS][COLS], int row, int col)
{//布置10个雷//⽣成随机的坐标布置雷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 GetMineCount(char mine[ROWS][COLS], int x, int y)
{return (mine[x-1][y]mine[x-1][y-1]mine[x][y - 1]mine[x1][y-1]mine[x1][y1]mine[x][y1]mine[x-1][y1] - 8 * 0);
}
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{int x 0;int y 0;int win 0;while (win row*col- EASY_COUNT){printf(请输⼊要排查的坐标:);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 GetMineCount(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);}
}test.c
#include game.h
void menu()
{printf(***********************\n);printf(***** 1. play *****\n);printf(***** 0. exit *****\n);printf(***********************\n);
}
void game()
{char mine[ROWS][COLS];//存放布置好的雷char show[ROWS][COLS];//存放排查出的雷的信息//初始化棋盘//1. mine数组最开始是全0//2. show数组最开始是全*InitBoard(mine, ROWS, COLS, 0);InitBoard(show, ROWS, COLS, *);//打印棋盘//DisplayBoard(mine, ROW, COL);DisplayBoard(show, ROW, COL);//1. 布置雷SetMine(mine, ROW, COL);//DisplayBoard(mine, ROW, COL);//2. 排查雷FindMine(mine, show, ROW, COL);
}
int main()
{int input 0;srand((unsigned int)time(NULL));do{menu();printf(请选择:);scanf(%d, input);switch (input){case 1:game();break;case 0:printf(退出游戏\n);break;default:printf(选择错误重新选择\n);break;}} while (input);return 0;
}仅供参考