当前位置:网站首页>扫雷小游戏
扫雷小游戏
2022-08-02 00:14:00 【GD_small_bit】
在C语言的学习过程中,自主实现小游戏能提高我们对C语言的兴趣,我今天将为大家带来扫雷小游戏的实现。
扫雷游戏需要的文档
game.c ----- 游戏代码的实现
game.h----- 游戏代码的声明
test.c ----- 扫雷小游戏的检验
菜单的实现
1.选择是否开始游戏
2.选择是否退出游戏
3.判断非法输入
代码如下:
void menu ()
{
printf("######################################################\n");
printf("############### 1.play ####### 0.exit ################\n");
printf("######################################################\n");
}
int main ()
{
int input = 0;
do
{
menu();
scanf("%d",&input);
switch(input)
{
case 1:
printf("游戏开始\n");
game();
break;
case 0:
printf("退出游戏。\n");
break;
default:
printf("输入错误,请重新输入。\n");
break;
}
}while(input);
}
初始化布置雷的表格和排雷信息的表格
void 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 setmine (char Board[ROWS][COLS],int row,int col)
{
int count = 0;
while(count<easy_count)
{
int x = rand()%row+1;
int y = rand()%col+1;
if(x>=1 && x<=row && y>=1 && y<=col)
{
if(Board[x][y]=='0')
{
Board[x][y]='1';
count++;
}
}
}
}
打印排雷信息
void DisplayBoard(char Board[ROWS][COLS],int row,int col)
{
int i = 0;
int j = 0;
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");
}
}
排查雷
int mine_count (char Board[ROWS][COLS],int x,int y)
{
return Board[x-1][y-1]+
Board[x-1][y]+
Board[x-1][y+1]+
Board[x][y-1]+
Board[x][y+1]+
Board[x+1][y-1]+
Board[x+1][y]+
Board[x+1][y+1]-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)
{
scanf("%d %d",&x,&y);
//判断坐标合法
if(x>=1 && x <=row && y>=1 && y<=col)
{
//判断该坐标是否被排过
if(Show[x][y]=='*')
{
if(Mine[x][y]=='0')
{
int ret = mine_count(Mine,x,y);
Show[x][y] = ret + '0';
DisplayBoard(Show,ROW,COL);
win++;
}
else
{
printf("你已经被炸死了。\n");
break;
}
}
else
{
printf("你已经排查过该坐标。\n");
}
}
else
{
printf("输入的坐标不合分,请重新输入。\n");
}
}
}
扫雷游戏的整体声明
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define ROW 9
#define COL 9
#define ROWS ROW+2
#define COLS COL+2
#define easy_count 10
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);
函数的整体调用
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);
}
关注点一点,下期更精彩。
边栏推荐
- els block deformation
- What is it like to trade for a living?
- 使用jOOQ将Oracle风格的隐式连接自动转换为ANSI JOIN
- ROS dynamic parameters
- 2022/08/01 学习笔记 (day21) 泛型和枚举
- 磁盘与文件系统管理
- ICML 2022 | GraphFM:通过特征Momentum提升大规模GNN的训练
- Identify memory functions memset, memcmp, memmove, and memcpy
- poker question
- [Headline] Written test questions - minimum stack
猜你喜欢
NFT工具合集
uni-app项目总结
uni-app project summary
【21天学习挑战赛】顺序查找和二分查找的小总结
08-SDRAM: Summary
思维导图,UML在线画图工具
Business test how to avoid missing?
What is Low-Code?What scenarios is low code suitable for?
实现删除-一个字符串中的指定字母,如:字符串“abcd”,删除其中的”a”字母,剩余”bcd”,也可以传递多个需要删除的字符,传递”ab”也可以做到删除”ab”,剩余”cd”。
NodeJs, all kinds of path
随机推荐
NFT工具合集
具有通信时延的多自主体系统时变参考输入的平均一致性跟踪
07-SDRAM: FIFO control module
poker question
2022/08/01 Study Notes (day21) Generics and Enums
bgp aggregation reflector federation experiment
Disk and file system management
玩转NFT夏季:这份工具宝典值得收藏
辨析内存函数memset、memcmp、memmove以及memcpy
Automatic conversion of Oracle-style implicit joins to ANSI JOINs using jOOQ
How to design a circular queue?Come and learn~
2022/08/01 学习笔记 (day21) 泛型和枚举
JSP out.print()和out.write()方法的不同之处
bgp 聚合 反射器 联邦实验
MLX90640 红外热成像仪测温模块开发笔记(完整版)
Multidimensional Correlation Time Series Modeling Method Based on Screening Partial Least Squares Regression of Correlation Variables
Looking back at 5 recessionary times in history: How might this time be different?
信息物理系统状态估计与传感器攻击检测
Pytorch seq2seq 模型架构实现英译法任务
短视频seo搜索优化主要内容