news 2026/6/10 18:14:25

扫雷游戏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/6/9 22:52:36

机械制造ToB企业获客困境与数字化解决方案架构深度解析

在当今高度竞争的工业市场中&#xff0c;机械制造类ToB&#xff08;企业对企业&#xff09;企业正面临着一场深刻的获客模式变革。传统的销售路径严重依赖线下展会、行业人脉和经销商渠道&#xff0c;这种模式在信息透明度极高的数字化时代&#xff0c;其局限性日益凸显&#x…

作者头像 李华
网站建设 2026/6/10 11:51:38

Java毕设选题推荐:基于springboot的动漫周边商城的设计与实现基于springboot的二次元商品商城系统【附源码、mysql、文档、调试+代码讲解+全bao等】

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

作者头像 李华
网站建设 2026/6/10 11:51:57

Java数据结构*Map和 Set*

目录 1 搜索树 1.1 概念 1.2 二叉搜索树的查找 1.3二叉搜索树的插入 1.4 二叉树的删除 2 搜索 2.1 概念及场景 3 Map 3.1 关于Map.Entry 3.2 Map的常见方法说明 4 Set的说明 4.1 常见方法说明 1 搜索树 1.1 概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一…

作者头像 李华
网站建设 2026/6/10 11:49:54

导师严选2026 TOP8 AI论文写作软件:研究生开题报告神器测评

导师严选2026 TOP8 AI论文写作软件&#xff1a;研究生开题报告神器测评 2026年AI论文写作软件测评&#xff1a;为何值得一看 随着人工智能技术的不断进步&#xff0c;AI写作工具在学术领域的应用日益广泛。对于研究生而言&#xff0c;从开题报告到论文撰写&#xff0c;每一个环…

作者头像 李华
网站建设 2026/6/10 11:50:39

案例证明法--内容学习

前言 将复杂证明分解成案例。 然后分别证明每一个案例 判断见过面和没有见过面 任意给定两个人&#xff0c;他们要么是见过面&#xff0c;要么没有见过面。如果团体中任意两个人都见过面&#xff0c;则成这个团体为俱乐部组。如果团队中任意两个人没有见过&#xff0c;则称为…

作者头像 李华
网站建设 2026/6/10 11:28:38

提示工程架构师揭秘:电商系统中Prompt的缓存优化方法

提示工程架构师揭秘&#xff1a;电商系统中Prompt的缓存优化方法 1. 引入与连接 1.1引人入胜的开场 想象一下&#xff0c;你正在运营一家超大型的电商平台&#xff0c;每天有数以百万计的用户在搜索商品。为了给用户提供最精准、最贴心的搜索结果&#xff0c;你使用了基于Pr…

作者头像 李华