news 2026/3/29 3:32:30

扫雷游戏c

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
扫雷游戏c

一、思路

菜单---->游戏测试总逻辑---->具体完成游戏(9*9棋盘)

二、具体操作

test.c文件

(1)主函数

int main ()

{

test();

return 0;

}

(2)菜单和test 函数

【先决定是否玩游戏。选0则退出游戏;选1则开始游戏(进入game)。输入一个数,是1则进入游戏;是0则退出游戏;其他则重新输入。】

#include "game.h"

void menu()
{
printf("***********************\n");
printf("****** 1.play ******\n");
printf("****** 0.exit ******\n");
printf("***********************\n");
}

void test()

{
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);
}

(3)game函数

【初始化棋盘-->打印棋盘-->布雷-->排雷】

void game()
{
printf("扫雷\n");
char mine[ROWS][COLS] = { 0 };//存放布置好的雷的信息,初始状态为‘0’
char show[ROWS][COLS] = { 0 };//存放排查出的雷的信息,初始状态为‘*’

//初始化棋盘
InitBoard(mine, ROWS, COLS,'0');
InitBoard(show, ROWS, COLS,'*');
//打印棋盘

DisplayBoard(show, ROW, COL);
//布雷
SetMine(mine,ROW,COL);
//DisplayBoard(mine, ROW, COL);
//排查雷
FindMine(mine, show, ROW, COL);

}

game.c文件【实现game函数中的函数】

#include "game.h"

//初始化

void InitBoard(char board[ROWS][COLS],int r,int c,char set)
{
int i = 0;
for (int i = 0; i < r; i++)
{
int j = 0;
for (j = 0; j < c; j++)
{
board[i][j] = set;
}
}
}

// 打印棋盘

void DisplayBoard(char board[ROWS][COLS], int r, int c)
{
int i = 0;
int j = 0;
for(j=0;j<=c;j++)
{
printf("%d ",j);
}
printf("\n");
for (i = 1; i <= r; i++)
{
printf("%d ",i);
for (j = 1; j <= c; j++)
{
printf("%c ", board[i][j]);
}
printf("\n");
}
printf("\n");
}

// 布雷

void SetMine(char mine[ROW][COL], int r, int c)
{
int count = EASY_COUNT;//一共放置十个雷
while(count)
{
int x = rand() % r + 1;//1~9
int y = rand() % c + 1;//1~9
if (mine[x][y] == '0')
{
mine[x][y] = '1';
count--;
}
}
}

//统计mine数组x,y坐标周围雷的个数

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[x + 1][y-1] + mine[x +1][y] + mine[x +1][y+1] + mine[x][y+1] + mine[x - 1][y+1]-8*'0';
}

//排雷

void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int r, int c)
{
int x = 0;
int y = 0;
int win = 0;


while (win < r*c - EASY_COUNT)
{
printf("请输入要排查的位置:\n");
scanf("%d%d", &x, &y);


if (x >= 1 && x <= r && y >= 1 && y <= c)
{
if (show[x][y] != '*')
{
printf("请注意,该位置已经被排查过了,请重新输入坐标\n");
continue;
}

if (mine[x][y] == '1')
{
printf("很遗憾,你被炸死了!\n");
printf("雷的布置如下所示:\n");
DisplayBoard(mine, ROW, COL);
break;
}
else
{
//统计坐标周围雷的个数
int count=GetMineCount(mine,x,y);
show[x][y] = count + '0';//show是字符数组
DisplayBoard(show, ROW, COL);
win++;
}

}
else
{
printf("输入的坐标非法,请重新输入:\n");
}
}
if (win == r * c - EASY_COUNT)
{
printf("恭喜你,排雷成功 !\n");
printf("雷的布置如下所示:\n");
DisplayBoard(mine, ROW, COL);

}
}

game.h文件

#pragma once//防止头文件重复包含,解决重复定义编译错误;

#include <stdlib.h>
#include <stdio.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 r, int c,char set);
//打印棋盘
void DisplayBoard(char board[ROWS][COLS], int r, int c);
//布置雷
void SetMine(char mine[ROWS][COLS], int r, int c);

//排查雷
void FindMine(char mine[ROWS][COLS], char show[ROWS][COLS], int r, int c);

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/21 23:24:30

Java计算机毕设之基于Java的歌唱演出网站订票系统基于SpringBoot的演唱会门票购票网站系统(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/3/27 17:14:21

【笔记】【周期】

目录 《周期》核心解读笔记 第一类:基本面周期 —— 经济、政府、企业的底层逻辑 1. 经济周期 2. 政府调节周期 3. 企业盈利周期 第二类:心理周期 —— 投资人的情绪钟摆 1. 心理钟摆 2. 风险态度周期 第三类:市场周期 —— 信贷、房地产、股市的具体玩法 1. 信贷…

作者头像 李华
网站建设 2026/3/29 1:33:56

【笔记】【小岛经济学】

目录 精读《小岛经济学》:用一个捕鱼故事,讲透经济的底层逻辑 一、 经济的起点:饿肚子织网的勇气,是资本的源头 二、 货币的诞生与异化:从真鱼到纸币,泡沫的种子就此埋下 三、 政府插手:从 “守夜人” 到 “搅局者”,经济泡沫越吹越大 四、 泡沫破裂:潮水退去,谁…

作者头像 李华
网站建设 2026/3/27 13:17:47

GBDT 回归任务生成过程(逐步计算演示)

GBDT 是 Gradient Boosting Decision Tree 的缩写&#xff0c;中文名为梯度提升决策树&#xff0c;是一种经典的集成学习算法&#xff0c;核心逻辑是 串行生成多棵 CART 回归树&#xff0c;每一棵新树都用来拟合前一轮模型的预测残差&#xff0c;最终将所有树的预测结果累加&am…

作者头像 李华
网站建设 2026/3/27 18:36:56

基于Android的智能旅游管家的设计与实现(源码+lw+部署文档+讲解等)

课题介绍 本课题旨在设计实现基于Android的智能旅游管家APP&#xff0c;针对传统旅游中行程规划繁琐、景点信息零散、线下服务对接滞后、应急处理不便等痛点&#xff0c;打造集行程规划、智能导览、服务预约、应急保障于一体的移动旅游服务工具&#xff0c;实现旅游全流程数字化…

作者头像 李华
网站建设 2026/3/25 6:45:54

《AI元人文:悟空而行》的作者说明

《AI元人文&#xff1a;悟空而行》的作者说明 作者说明 尊敬的评审专家、主编&#xff1a; 在审阅《知行合一的价值革命&#xff1a;评〈AI元人文&#xff1a;悟空而行〉的思想、方法与伦理突破》及它所评论的原作《AI元人文&#xff1a;悟空而行》之前&#xff0c;恳请您允许作…

作者头像 李华