利用C语言开发一个扫雷小游戏

发布时间:2020-11-16 16:00:21

来源:亿速云

阅读:71

作者:Leah

这篇文章将为大家详细讲解有关利用C语言开发一个扫雷小游戏,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

具体内容如下

简单描述:

输入要要扫的位置.

如果是雷,则游戏失败.

如果将所有不是雷的位置都扫了一遍,则游戏胜利.

主要细节

1、初始化(玩家扫雷图,地雷布局图)

展示出来的地图(玩家能看到的地图)showMap

for (int row = 0; row < ROW; row++){

for (int col = 0; col < COL; col++){

showMap[row][col] = '*';

}

}

地雷的布局地图(玩家看不到的地图)mineMap

for (int row = 0; row < ROW; row++){

for (int col = 0; col < COL; col++){

mineMap[row][col] = '*';

}

}

int count = 0;

while (count

int row = rand() % 9;

int col = rand() % 9;

mineMap[row][col] = 'L';

count++;

}

}

3、打印地图

void print(char Map[ROW][COL]){

printf(" |0|1|2|3|4|5|6|7|8|\n");

for (int row = 0; row < ROW; row++){

printf("%d |", row);

for (int col = 0; col < COL; col++){

printf("%c ", Map[row][col]);

}

printf("\n");

}

}

5、玩家输入要扫的位置信息(9*9格子中某一特定位置)

void Input(char showMap[ROW][COL], char mineMap[ROW][COL], int* row, int* col){

while (1){

printf("请输入您要点的位置坐标:");

scanf("%d %d", row, col);

if (((*row) < 0) || ((*row) >= ROW)

|| ((*col) < 0) || ((*col) >= COL)){

printf("输入有误 ");

continue;

}

if (showMap[*row][*col] == '*'){

showMap[*row][*col] = ' ';

break;

}

}

}

7、判断某一位置是不是地雷

//返回1表示雷;返回0表示不是雷

int isMine(char mineMap[ROW][COL], int row, int col){

if (mineMap[row][col] == 'L'){

return 1;

}

return 0;

}

9、某一位置附近地雷的个数

int MineNerborhood(char mineMap[ROW][COL], int row, int col){

if (row < 0 || row >= ROW

|| col < 0 || col >= COL){

return '0';

}

int count = 0;

for (int r = row - 1; r <= row + 1; r++){

for (int c = col - 1; c <= col + 1; c++){

if (mineMap[r][c] == 'L'){

count++;

}

}

}

return count + '0';

}

源代码:

#define _CRT_SECURE_NO_WARNINGS

#include

#include

#include

#define ROW 9

#define COL 9

#define MINECOUNT 10

void Input(char showMap[ROW][COL], char mineMap[ROW][COL], int* row, int* col){

while (1){

printf("请输入您要点的位置坐标:");

scanf("%d %d", row, col);

if (((*row) < 0) || ((*row) >= ROW)

|| ((*col) < 0) || ((*col) >= COL)){

printf("输入有误 ");

continue;

}

if (showMap[*row][*col] == '*'){

showMap[*row][*col] = ' ';

break;

}

}

}

//返回1表示雷;返回0表示不是雷

int isMine(char mineMap[ROW][COL], int row, int col){

if (mineMap[row][col] == 'L'){

return 1;

}

return 0;

}

//

void init(char showMap[ROW][COL], char mineMap[ROW][COL]){

for (int row = 0; row < ROW; row++){

for (int col = 0; col < COL; col++){

showMap[row][col] = '*';

}

}

for (int row = 0; row < ROW; row++){

for (int col = 0; col < COL; col++){

mineMap[row][col] = '*';

}

}

int count = 0;

while (count

int row = rand() % 9;

int col = rand() % 9;

mineMap[row][col] = 'L';

count++;

}

}

void print(char Map[ROW][COL]){

printf(" |0|1|2|3|4|5|6|7|8|\n");

for (int row = 0; row < ROW; row++){

printf("%d |", row);

for (int col = 0; col < COL; col++){

printf("%c ", Map[row][col]);

}

printf("\n");

}

}

//(row,col)附近格子地雷的个数

int MineNerborhood(char mineMap[ROW][COL], int row, int col){

if (row < 0 || row >= ROW

|| col < 0 || col >= COL){

return '0';

}

int count = 0;

for (int r = row - 1; r <= row + 1; r++){

for (int c = col - 1; c <= col + 1; c++){

if (mineMap[r][c] == 'L'){

count++;

}

}

}

return count + '0';

}

//一局游戏

void game(){

srand(time(0));

//展示给玩家的地图

char showMap[ROW][COL];

//雷的布局图

char mineMap[ROW][COL];

//对两个地图进行初始化

init(showMap, mineMap);

//print(mineMap);

//玩家已经扫到的不是雷的格子的数目

int notMineCount = 0;

printf("扫雷游戏开始啦!\n");

while (1){

//打印地图

print(showMap);

//输入地点

int row, col;

Input(showMap, mineMap, &row, &col);

//判断是否是雷区

if (isMine(mineMap, row, col) == 1){

printf(" 大兄弟,踩雷咧!\n给您看看雷的布局\n");

print(mineMap);

break;

}

//判断附近雷的情况

showMap[row][col]=MineNerborhood(mineMap, row, col);

notMineCount++;

//判断是否赢了

if (notMineCount == ROW*COL - MINECOUNT){

print(mineMap);

printf("恭喜您赢啦!\n");

break;

}

}

}

int menu(){

printf("===================\n");

printf("1.开始游戏\n");

printf("0.结束游戏\n");

printf("===================\n");

printf("请输入您的选择:");

int choice;

scanf("%d", &choice);

return choice;

}

int main(){

while (1){

int choice = menu();

if (choice == 1){

game();

}else if (choice==0){

break;

}else{

printf("输入有误,请重新输入\n");

}

}

system("pause");

return 0;

}

运行结果:

关于利用C语言开发一个扫雷小游戏就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

c语言开发简单小游戏扫雷,利用C语言开发一个扫雷小游戏相关推荐

  1. 微信小程序:利用搜狗API实现听写单词小程序

    微信小程序:利用搜狗API实现听写单词小程序 wxml <view><input bindconfirm="addword" confirm-type=" ...

  2. c语言创建excel文件6,怎么利用c语言创建excel文件

    怎么利用c语言创建excel文件 想要利用c语言创建excel文件再把它导入excel其实很简单,如果数据简单的话,可以使用CSV(逗号分隔值)格式的文件.CSV格式的文件可以用OfficeExcel ...

  3. nodejs android 推送,利用Nodejs怎么实现一个微信小程序消息推送功能

    利用Nodejs怎么实现一个微信小程序消息推送功能 发布时间:2021-01-20 13:55:29 来源:亿速云 阅读:92 作者:Leah 今天就跟大家聊聊有关利用Nodejs怎么实现一个微信小程 ...

  4. 小福利,用Excel vba设计一个变色小游戏

    小福利,用Excel vba设计一个变色小游戏 Option ExplicitPrivate Sub CommandButton1_Click() Dim i, j For i = 1 To 100F ...

  5. 小福利,用Excel VBA设计一个查询小应用

    小福利,用Excel VBA设计一个查询小应用 Option ExplicitSub 查询_Click()Dim rng1, rng2, rng As RangeDim firstaddressDim ...

  6. 用c语言将2048的分数存档,利用C语言实现2048小游戏的方法

    准备工作 首先上一张图,因为这里只是在用C语言验证算法,所以没有对界面做很好的优化,丑是理所应当的. 了解了游戏的工作原理,实际上可以将游戏描述为四个带有方向的同一操作: 1.将所有数字向一个方向移动 ...

  7. php开发的app商城,如何利用PHP语言开发手机APP

    如何利用PHP语言开发手机APP 一般的PHP框架都可以用来做app后台服务器.因为原理上客户端从你这边拿的都是字符串数据,所以就算你不用框架也没有问题,不过会引发后续的问题.PHP提供API给客户端 ...

  8. php开发安卓应用程序,如何利用PHP语言开发手机APP

    一般的PHP框架都可以用来做app后台服务器.因为原理上客户端从你这边拿的都是字符串数据,所以就算你不用框架也没有问题,不过会引发后续的问题.PHP提供API给客户端就好了,API描述方式有很多种:R ...

  9. 独立开发变现周刊(第89期):一个 AI 小工具,两个月内赚7.3万美元

    分享独立开发.产品变现相关内容,每周五发布. 目录 1.privateGPT: 可以和本地文档进行交互的聊天机器人 2.chatbutler: 无代码可视化创建聊天机器人 3.CommaFeed:可以 ...

  10. 易语言运行 (c:内部.exe, 假, ),利用易语言编写流氓软件

    首页 > 新闻动态 利用易语言编写流氓软件 编写流氓软件对于我们这样的没有怎么学过各种变成语言的人来说基本上是天方夜谭,但是今天我接触了一下易语言,发现它是-种对于我们小菜来说很容易上手的编程语 ...

最新文章

  1. 9大领域50名青年学者获2021年科学探索奖,单人奖金300万元
  2. ServletContextListener在Tomcat中的配置问题
  3. 如何写登录的记住账号
  4. XP系统安装SQL2000企业版开启1433端口
  5. 修改hostname有几种方式?(转)
  6. 2014计算机二级vfp,2014计算机二级VF考前试题解析
  7. 面试官问你如何解决web高并发这样回答就好了
  8. nginx+php使用open_basedir限制站点目录防止跨站
  9. python和其它语言混合编程_C++和Python混合编程 - python嵌入C++
  10. 改变PSD文件单一的图标,让图标变成图像缩略图
  11. 吸引子传播(Affinity Propagation)算法
  12. 亚马逊AWS云服务器 ubuntu系统登陆教程
  13. 【工具】MobaXterm常用设置
  14. 电路图中R1,D1有什么作用 ?
  15. 关于魔兽T人和延迟的恶劣挂原理及实现
  16. 静态时序分析(STA)附秋招面试提问
  17. 升级版剪刀石头布(表格的处理方法)
  18. puzzle(0211)几何划分问题
  19. h700整列卡直通配置_dell h310阵列卡,刷直通(IT)模式,成功
  20. python爬虫之正则表达式(爬取妹子网图片)

热门文章

  1. 设置table表格四周圆角
  2. OJ水题-----蛇形填数
  3. FX系列DSZR回原点指令结束后M8029不亮的解决方案
  4. MySQL-python安装遇到的各种问题
  5. 深度学习之鸡兔同笼问题
  6. 实验吧天网管理系统Writeup
  7. 请问add_mutually_exclusive_group函数什么意思?
  8. 使用randn实现randm的通用方法
  9. 移动硬盘无法读取是怎么回事?
  10. 外贸企业邮箱是什么?大连邮箱,邮件归档系统