主页 > 人工智能  > 

c语言小游戏之扫雷


目录

一:游戏设计理念及思路

二:初步规划的游戏界面

三:开始扫雷游戏的实现

注:1.创建三个文件,test.c用来测试整个游戏的运行,game.c用来实现扫雷游戏的主体,game.h用来函数声明和包含头文件

2.为方便定位坐标,在展示数组时添加行号和列号

四:谢谢观看 


听说看到日落金山的人,接下来的日子会顺顺利利,万事胜意,生活明朗-----------林辞忧

一:游戏设计理念及思路

1.扫雷游戏就是如平常战争片里见到的,工兵去布满雷的地区去一步步的排除雷,该游戏就简单模拟该场景。

2.该游戏是在9*9的81个格子中随机布置10个雷,然后通过排查坐标的形式慢慢排查出雷的位置

3.玩家通过输入要排查坐标的位置来开始扫雷,如该位置是雷的话,则玩家被炸死,游戏结束,反之该位置将显示周围8个坐标位置雷的数量,便于玩家继续思考排查

4.若排查完所有的无雷的71个坐标,则显示扫雷成功

二:初步规划的游戏界面

1.打开游戏便显示游戏菜单

通过玩家选择    1:玩游戏     0:退出游戏         其余数字均显示选择错误重新选择

2.开始玩游戏之后,显示9*9的一个布置好10个雷的棋盘,为了隐藏雷的信息,可以创建两个数组,mine数组用来存放雷的信息,show数组用来隐藏雷的信息,为方便起见,创建两个字符数组,mine数组用‘1’表示雷,‘0’表示无雷,show数组全部用‘*’来显示

3.如果要排查(8,0) 这个坐标的话,假设不是雷,那么就要统计周围雷的个数,会发现此时数组会越界访问,为防止这种情况的发生,我们应该创建个11*11的格子,并且全部初始化为‘0’,我们正式扫雷时只使用其中的9*9的格子进行游戏

4.当玩家扫雷被炸死或者扫雷成功之后显示mine数组中存放雷的信息

三:开始扫雷游戏的实现 注:1.创建三个文件,test.c用来测试整个游戏的运行,game.c用来实现扫雷游戏的主体,game.h用来函数声明和包含头文件 2.为方便定位坐标,在展示数组时添加行号和列号

3.     game.h

#pragma once #include <stdio.h> #define ROW 9 #define COL 9 #define ROWS ROW+2 #define COLS COL+2 #define MINECOUNT 10 #include <stdlib.h> #include <time.h> //初始化数组 void InitBoard(char arr[ROWS][COLS], int rows, int cols, char set); //展示数组 void DisplayBoard(char arr[ROWS][COLS], int row, int col); //在mine数组中随即设置10个雷的信息 void SetMine(char arr[ROWS][COLS], int row, int col); //排查雷 void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col); //排查周围雷的数量 int GetMineCount(char mine[ROWS][COLS], int x, int y);

                                   test.c 

#define _CRT_SECURE_NO_WARNINGS #include "game.h" void menu() { printf("****************\n"); printf("**** 1.play ****\n"); printf("**** 0.exit ****\n"); printf("****************\n"); } void game() { //创建11*11的两个字符数组 mine数组用来存放雷的信息,show数组用来展示排查雷的信息 char mine[ROWS][COLS] = {0}; char show[ROWS][COLS] = {0}; //初始化数组,用'0'来初始化mine数组,用'*'来初始化show数组 InitBoard(mine, ROWS, COLS, '0'); InitBoard(show, ROWS, COLS, '*'); //展示数组 //DisplayBoard(mine, ROW, COL); //DisplayBoard(show, ROW, COL); //在mine数组种随机设置10个雷 SetMine(mine, ROW, COL); //DisplayBoard(mine, ROW, COL); DisplayBoard(show, ROW, COL); //排查雷 FindMine(mine, show, ROW, COL); } void test() { srand((unsigned int)time(NULL)); int input = 0; do { menu();//上来先打印游戏菜单 printf("请输入对应游戏选项的数字\n"); scanf("%d",&input); switch (input) { case 1:game(); break; case 0:printf("退出游戏\n"); break; default:printf("选择错误,请重新输入\n"); break; } } while (input); } int main() { test(); return 0; }

                                           game.c 

#define _CRT_SECURE_NO_WARNINGS #include "game.h" //初始化数组 void InitBoard(char arr[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++) { arr[i][j] = set; } } } //展示数组 void DisplayBoard(char arr[ROWS][COLS], int row, int col) { int i = 0; printf("-----开始扫雷-----\n"); for (i = 0; i <= row; i++) { printf("%d ", i); } printf("\n"); for (i = 1; i <= row; i++) { int j = 0; printf("%d ",i); for (j = 1; j <= col; j++) { printf("%c ",arr[i][j]); } printf("\n"); } } //设置雷 void SetMine(char arr[ROWS][COLS], int row, int col) { int x = 0; int y = 0; int count = MINECOUNT;//雷的数量 while (count) { x = rand() % row + 1;//随机生成下标 y = rand() % col + 1; if (arr[x][y] == '0') { arr[x][y] = '1';//用'1'来表示雷 } count--; } } //排查周围雷的数量 int GetMineCount(char mine[ROWS][COLS], int x, int y) { int i = 0; int ret = 0; for (i = x - 1; i <= x + 1; i++) { int j = 0; for (j = y - 1; j <= y + 1; j++) { ret += (mine[i][j] - '0'); } } return ret; } //排查雷 void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col) { int count = row * col - MINECOUNT; int x = 0; int y = 0; int ret = 0; while (ret<count) { printf("请输入要排查坐标的数字\n"); scanf("%d%*c%d", &x, &y); if (show[x][y] == '*') { if (mine[x][y] == '1') { printf("很遗憾,你被炸死了\n"); DisplayBoard(mine, ROW, COL); break; } else { int ret=GetMineCount(mine, x, y); show[x][y] = ret + '0'; DisplayBoard(show, ROW, COL); } } else { printf("该坐标已经被排查,请重新输入坐标\n"); } ret++; } if (ret == count) { printf("恭喜你,扫雷成功\n"); DisplayBoard(mine, ROW, COL); } } 四:谢谢观看 

标签:

c语言小游戏之扫雷由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“c语言小游戏之扫雷