文章目录

  • 游戏前言准备
  • 一、建立游戏菜单
  • 二、建立棋盘
  • 三、初始化棋盘
  • 四、布置雷
  • 五、排查雷并判断是否踩雷
  • 六、源码
    • 1.test.c
    • 2.game.c
    • 3.game.h

游戏前言准备

1.使用二维数组初始化扫雷的游戏布局,通过改变数组的行列来改变,用ROW来规定数组行数,COL来规定数组列数,扫雷需要用到两个二维数组,一个数组用来存放雷的信息,一个数组用来存放显示界面信息,因为害怕边界越界所以使用ROW+2和COL+2的数组避免越界;

2.使用二维数组显示扫雷游戏界面,除了显示数组信息外,还需要在第一行和第一列显示坐标便于玩家确定排雷时的坐标;

3.设置雷区,根据游戏难度来随机放置固定个数的雷,使用#define定义好随时改变值以达到不同的雷的个数;

4.排雷,每当玩家选择的这个坐标没雷时,则计算这个坐标周围一圈八个格子的雷的个数。

5.判断输赢,如果玩家踩到雷,则直接游戏结束,若未排的区域个数等于雷的个数且玩家没被炸死,则玩家赢。

一、建立游戏菜单

void menu()
{printf("********************************\n");printf("*********   扫雷游戏    ********\n");printf("********************************\n");printf("*********    1.play     ********\n");printf("*********    0.exit     ********\n");printf("********************************\n");printf("********************************\n");
}
nt main()
{int input = 0;do{menu();printf("请输入你的选择\n");scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("输入错误,请重新输入\n");break;}} while (input);return 0;
}

二、建立棋盘

void init_broad(char broad[ROWS][COLS], int rows, int cols,char set)
{int i = 0;int j = 0;for (i = 0; i < rows; i++){for (j = 0; j < cols; j++){broad[i][j] = set;}}
}

三、初始化棋盘

void display_broad(char broad[ROWS][COLS], int row, int col)
{int i = 0;int j = 0;//列号for (j = 0; j <= col; j++){printf("%d ", j);}printf("\n");for (i = 1; i <= row; i++){//行号printf("%d ", i);for (j = 1; j <= col; j++){printf("%c ", broad[i][j]);}printf("\n");}}

四、布置雷

void set_mine(char mine[ROWS][COLS], int row, int col)
{int count = DEFAULT_COUNT;while (count){int x = rand() % row + 1;int y = rand() % col + 1;if (mine[x][y] == '0'){mine[x][y] = '1';count--;}}
}

五、排查雷并判断是否踩雷

int get_mine_count(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 find_mine(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 - DEFAULT_COUNT){printf("请输入要排查雷的坐标:>\n");scanf("%d %d", &x, &y);if (x >= 1 && x <= row && y >= 1 && y <= col){if (show[x][y] == '*'){if (mine[x][y] == '1'){printf("你被炸死了\n");display_broad(mine, ROW, COL);break;}else{int count = get_mine_count(mine, row, col);show[x][y] = count + '0';display_broad(show, ROW, COL);win++;}}else{printf("该坐标已经被排查\n");}}else{printf("坐标非法,请重新输入\n");}}if (win == row * col - DEFAULT_COUNT){printf("恭喜你,排雷成功\n");display_broad(mine, ROW, COL);}
}

六、源码

1.test.c

#define _CRT_SECURE_NO_WARNINGS 1#include"game.h"void menu()
{printf("********************************\n");printf("*********   扫雷游戏    ********\n");printf("********************************\n");printf("*********    1.play     ********\n");printf("*********    0.exit     ********\n");printf("********************************\n");printf("********************************\n");
}
void game()
{char mine[ROWS][COLS] = { 0 };//设计数组存放信息char show[ROWS][COLS] = { 0 };//初始化棋盘init_broad(mine, ROWS, COLS, '0');init_broad(show, ROWS, COLS, '*');//打印棋盘display_broad(show, ROW, COL);//布置雷set_mine(mine, ROW, COL);//排雷find_mine(mine, show, ROW, COL);
}
int main()
{int input = 0;srand((unsigned int)time(NULL));do{menu();printf("请输入你的选择\n");scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("输入错误,请重新输入\n");break;}} while (input);return 0;
}

2.game.c

#define _CRT_SECURE_NO_WARNINGS 1#include"game.h"void init_broad(char broad[ROWS][COLS], int rows, int cols,char set)
{int i = 0;int j = 0;for (i = 0; i < rows; i++){for (j = 0; j < cols; j++){broad[i][j] = set;}}
}void display_broad(char broad[ROWS][COLS], int row, int col)
{int i = 0;int j = 0;//列号for (j = 0; j <= col; j++){printf("%d ", j);}printf("\n");for (i = 1; i <= row; i++){//行号printf("%d ", i);for (j = 1; j <= col; j++){printf("%c ", broad[i][j]);}printf("\n");}}void set_mine(char mine[ROWS][COLS], int row, int col)
{int count = DEFAULT_COUNT;while (count){int x = rand() % row + 1;int y = rand() % col + 1;if (mine[x][y] == '0'){mine[x][y] = '1';count--;}}
}
int get_mine_count(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 find_mine(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 - DEFAULT_COUNT){printf("请输入要排查雷的坐标:>\n");scanf("%d %d", &x, &y);if (x >= 1 && x <= row && y >= 1 && y <= col){if (show[x][y] == '*'){if (mine[x][y] == '1'){printf("你被炸死了\n");display_broad(mine, ROW, COL);break;}else{int count = get_mine_count(mine, row, col);show[x][y] = count + '0';display_broad(show, ROW, COL);win++;}}else{printf("该坐标已经被排查\n");}}else{printf("坐标非法,请重新输入\n");}}if (win == row * col - DEFAULT_COUNT){printf("恭喜你,排雷成功\n");display_broad(mine, ROW, COL);}
}

3.game.h

#pragma once#include<stdio.h>
#include<stdlib.h>
#include<time.h>#define ROW 9
#define COL 9#define ROWS ROW+2
#define COLS COL+2#define DEFAULT_COUNT 10//初始化棋盘
void init_broad(char broad[ROWS][COLS],int rows,int cols,char set);
//打印棋盘
void display_broad(char broad[ROWS][COLS], int row, int col);
//布置雷
void set_mine(char mine[ROWS][COLS], int row, int col);
//排雷
void find_mine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);

排雷小游戏(C语言)相关推荐

  1. 简易的排雷小游戏(c语言制作)

    目录 前言 一.总体规划 二.使用步骤 1.特别的 2.游戏的开关 3.游戏的实现 (1).初始化棋盘 (2).打印棋盘 (3).布置雷 (4).排查雷 总结 前言 排雷,非常经典的一个小游戏,最近有 ...

  2. C语言实现排雷小游戏

    排雷小游戏 用C语言实现一个简单的排雷小游戏 如果不清楚扫雷游戏的规则,可以上网搜一下去玩一下,这里我就不做过多介绍了,只介绍程序的思想和实现. 整个程序分为三个文件 test.c game.h ga ...

  3. C语言可以敲哪些小游戏,C语言可以写哪些小游戏?

    C语言可以写哪些小游戏? C语言可以编手机游戏.你叫他去死不过我这有贪吃蛇的代码,你倒可以看看(用TC编译一定过( #包括 #包括 #包括 #包括 #包括 #定义输入7181 #定义ESC 283 # ...

  4. 控制台推箱子小游戏C语言

    自己开发的C语言控制台推箱子小游戏,基于二维数组实现,功能不多但是游戏整体较为完整,因为技术有限,所以代码暂未优化且整体显得较为臃肿,整体架构简单,代码全自主设计编写,仅作交流学习,还望大佬多多指点. ...

  5. windows经典地雷小游戏(C语言实现)

    地雷小游戏 实现游戏的流程 1.如何使用C语言表示双重身份的地雷图 2.打印一下showMap 3.让玩家输入坐标(row,col) 4.判断玩家是否踩雷 5.更新地图 6.如何判断玩家获胜 代码区域 ...

  6. 呆头呆脑的电脑----三子棋小游戏(C语言版)

    目录 1.需求分析 2.程序架构 3.代码实现(分函数呈现) (1)主函数代码实现 分析: 异常处理: (2)菜单函数的实现 分析: (3)游戏函数的实现 分析: (4)棋盘的初始化 分析: (5)棋 ...

  7. 控制台版贪吃蛇小游戏 C语言

    写在前面 最近我们C语言的课设快开始了,开始前刚好有时间就写了一下C语言的贪吃蛇小游戏(单链表实现),包含了经典模式和无边界模式 ,网上查了设置颜色 和 改变光标位置 还有 用方向键控制 的函数,第一 ...

  8. c语言小游戏(c语言小游戏代码飞机大战)

    怎样用C语言编写一个小游戏? "贪吃蛇"C代码: #include #include #include #include #include #define W 78  //游戏框的 ...

  9. 二十四点小游戏——C语言实现

    二十四点小游戏(C语言实现) 过程笨拙,有很多局限之处,比如对答案的输出有限制,代码行数过多,故仅供思路参考. #include<stdio.h> #include<windows. ...

  10. 小游戏C语言报告,C语言小游戏设计报告

    C语言小游戏设计报告 发布时间:2020-06-19 03:34:29 来源:51CTO 阅读:1412 作者:迷蒙的天空 C语言小游戏设计报告 课程设计名称:贪吃蛇小游戏 专业班级:计科15-2 学 ...

最新文章

  1. java链式栈_Java栈之链式栈存储结构实现
  2. BeetleX.WebFamily文件图片管理集成
  3. linux之task_struct
  4. 【Excel】函数DateDif查看两个日期之间的间隔
  5. python逻辑回归代码_Logistic 逻辑回归及 python 实现
  6. 硬件基础知识---(17)如何设计一个三极管放大电路
  7. 电力企业信息化系统之调度信息报送系统整体解决方案
  8. dbeaver can't connect HBase1.2 using phoenix driver #1863
  9. bodymovin导出没有html5,AE脚本-导出json格式的Web动画工具 Bodymovin v5.5.3+使用教程
  10. 储存卡怎么格式化为fat32_64g储存卡怎么格式化成fat32格式化
  11. 手工焊接电路板经验总结
  12. 【案例20】NC系统was部署后无法登录
  13. 注册页面提交验证-密保问题实现
  14. java毕业设计在线音乐系统Mybatis+系统+数据库+调试部署
  15. Java实现 蓝桥杯VIP 算法训练 步与血(递推 || DFS)
  16. Tableau Desktop 2020 Mac支持M1芯片下载big sur 解决M1芯片安装Tableau Public教程2021
  17. html图片怎么做成链接,HTML的链接代码怎么做?HTML的图片链接怎么制作?
  18. 网络运维系列:端口占用、端口开启检测
  19. 计算机科学与遥感信息技术学院,2021年遥感科学与技术专业大学排名及分数线【统计表】...
  20. BIMServer系列——1.BIMServer安装

热门文章

  1. Appium+python自动化(九)- 定位元素工具(义结金兰的两位异性兄弟)(超详解)...
  2. 强人教你吃自助火锅(转载)
  3. 华为云会议,助力企业移动办公效率提升
  4. springboot_分页插件
  5. python定时器爬取豆瓣音乐Top榜歌名
  6. request.getRequestDispatcher(login_success.jsp).forward(request,response);的含义
  7. windows 7开启硬盘AHCI模式蓝屏解决方案
  8. 安装docker报错Hardware assisted virtualization and data execution protection must be enabled in the BIOS
  9. Splinter入门(十)Cookies manipulation(Cookies操作)
  10. js 前进 后退 刷新