news 2026/4/25 9:03:22

扫雷游戏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/4/23 22:21:11

学长亲荐8个AI论文平台,助你轻松搞定本科论文!

学长亲荐8个AI论文平台&#xff0c;助你轻松搞定本科论文&#xff01; 论文写作的“救星”来了&#xff0c;AI 工具如何帮你轻松应对 对于很多本科生来说&#xff0c;撰写论文不仅是学术能力的考验&#xff0c;更是一场时间与精力的拉锯战。尤其是在面对重复率高、格式复杂、…

作者头像 李华
网站建设 2026/4/20 10:36:15

从注册到收益 虚拟电厂解决方案全面落地

“想参与虚拟电厂&#xff0c;但不知道如何注册&#xff1f;” “担心只有软件&#xff0c;硬件跟不上&#xff1f;” “流程复杂&#xff0c;没人指导怎么办&#xff1f;” 如果您也有这些顾虑&#xff0c;请继续往下看——我们带来了真正意义上“交钥匙”的虚拟电厂解决方案…

作者头像 李华
网站建设 2026/4/21 22:44:53

开源驱动零碳实践:MyEMS 赋能零碳工厂建设的核心路径

在 “双碳” 目标纵深推进的背景下&#xff0c;零碳工厂建设已成为工业领域绿色转型的核心载体。《关于开展零碳工厂建设工作的指导意见》&#xff08;以下简称《指导意见》&#xff09;明确提出 “坚持因业施策、创新引领、稳妥有序&#xff0c;推动绿色化与智能化深度融合” …

作者头像 李华
网站建设 2026/4/22 15:13:44

【课程设计/毕业设计】基于SpringBoot与Vue的动漫周边商场系统设计与实现基于springboot的二次元商品商城系统【附源码、数据库、万字文档】

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

作者头像 李华
网站建设 2026/4/22 4:25:32

清北公开课在哪里看

清华、北大公开课凭借顶尖师资、跨领域内容及深浅适中的讲解&#xff0c;成为大众补充知识、拓宽视野的优质选择。2026年教育数字化持续深化&#xff0c;多款平台汇聚了清北公开课资源&#xff0c;各有功能侧重与呈现形式。本文梳理8个观看平台&#xff0c;详细介绍其特点与使用…

作者头像 李华
网站建设 2026/4/24 5:26:02

计算机Java毕设实战-基于springboot的电子商品销售系统电子产品电子外设销售系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】

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

作者头像 李华