在学习C语言初期,我们可以找一些平常玩的游戏进行简单的C语言实现。今天就和大家分享一下关于windows中扫雷游戏的实现。

在正式写代码前,简单说一下对这个游戏的分析:

1.先提示的应该是一个简单的menu,其中包括“play”和“exit”;

2.在main函数中应该是一个test的函数,主要测试整个游戏;

3.在test中应该是可以让游戏进行循环玩的,所以需要包括一个while语句,while语句的主要部分是每次提示玩游戏;

4.关于扫雷的整个实现是用play_game实现的,在这个部分我们需要考虑怎样去实现这个功能;

5.根据上面分析,我们只需要在play_ game中实现初始化扫雷(init_game)和扫雷(sweep)即可;

6.在初始化扫雷(init_game)中,我们需要对界面中雷的位置进行处理,需要一个set _mine;

7.在扫雷(sweep)中,按照整个游戏的逻辑,需要对坐标进行一个判断,有无雷,没有雷的话,周围有多少颗雷。

整个游戏的逻辑就是这些,每一个函数的实现中嵌套了一个函数。

main->test->play_game->init _game和sweepMine_sweeper.h(头文件)

#ifndef __MINE_H__

#define __MINE_H__

enum op

{

EXIT,

PLAY

};

#define ROWS 11

#define COLS 11

#define COUNT 30

void init_game(char mine[ROWS][COLS],char show[ROWS][COLS]); //初始化扫雷界面

void set_mine(char mine[ROWS][COLS]); //设置雷区

void get_num(int x, int y); //随机产生雷的位置

void display(char show[ROWS][COLS]); //打印出界面

void sweep(char mine[ROWS][COLS], char show[ROWS][COLS]); //开始扫雷

int get_mine(char mine[ROWS][COLS], int x, int y); //附近雷的个数

#endifMine_sweeper.c(扫雷主要功能实现)

#define _CRT_SECURE_NO_WARNINGS 1

#include"Mine_sweeper.h"

#include

#include

#include

#include

void init_game(char mine[ROWS][COLS], char show[ROWS][COLS]) //初始化扫雷界面

{

memset(mine, '0', ROWS*COLS*sizeof(char));

memset(show, '*', ROWS*COLS*sizeof(char));

set_mine(mine);

}

int get_mine_num(int x, int y) //随机产生雷的位置

{

return rand() % (y - x + 1) + x;

}

void set_mine(char mine[ROWS][COLS]) //设置雷区

{

int count = COUNT;

int x = 0;

int y = 0;

srand((unsigned)time(NULL));

while (count)

{

x = get_mine_num(1, 9);

y = get_mine_num(1, 9);

if (mine[x][y] == '0')

{

mine[x][y] = '1';

count--;

}

}

}

void display(char show[ROWS][COLS]) //打印出界面

{

int i = 0;

int j = 0;

printf(" ");

for (i = 1; i < COLS - 1; i++)

{

printf(" %d ", i);

}

printf("\n");

for (i = 1; i < ROWS - 1; i++)

{

printf("%d", i);

for (j = 1; j < COLS - 1; j++)

{

printf(" %c ", show[i][j]);

}

printf("\n");

}

}

void sweep(char mine[ROWS][COLS], char show[ROWS][COLS])//开始扫雷

{

int count = 0;

int x = 0;

int y = 0;

while(count!=((ROWS-2)*(COLS-2)-COUNT))

{

printf("请输入坐标>:");

scanf("%d%d", &x, &y);

if (mine[x][y] == '1')

{

printf("踩雷了!\n");

return;

}

else

{

int ret = get_mine(mine, x, y);

show[x][y] = ret + '0';

display(show);

count++;

}

}

printf("恭喜你赢了!\n");

display(mine);

}

int get_mine(char mine[ROWS][COLS], int x, int y) //附近雷的个数

{

int count = 0;

if (mine[x - 1][y - 1] == '1') count++; //坐标位置的上3个

if (mine[x - 1][y] == '1') count++;

if (mine[x - 1][y + 1] == '1') count++;

if (mine[x][y - 1] == '1') count++; //坐标位置的左右

if (mine[x][y + 1] == '1') count++;

if (mine[x + 1][y - 1] == '1') count++; //坐标位置的下3个

if (mine[x + 1][y] == '1') count++;

if (mine[x + 1][y + 1] == '1') count++;

return count;

}test.c(测试函数)

#define _CRT_SECURE_NO_WARNINGS 1

#include"Mine_sweeper.h"

#include

#include

#include

void menu()

{

printf("********************\n");

printf("**** 1.play ******\n");

printf("**** 0.exit ******\n");

printf("********************\n");

}

void play_game()

{

char mine[ROWS][COLS];

char show[ROWS][COLS];

init_game(mine, show);

display(show);

sweep(mine, show);

}

void test()

{

int input = 0;

do

{

menu();

printf("请输入指令>:");

scanf("%d", &input);

switch (input)

{

case PLAY:

play_game();

break;

case EXIT:

break;

}

} while(input);

}

int main()

{

test();

system("pause");

}

(1表示雷的位置,0表示没有雷。带*的是显示的界面,1/0的是带雷的界面。)

整个代码就是这么多,总体来说游戏的界面是比较low的,但是游戏的功能还是比较完善的。在写代码的时候一定先要梳理好整个逻辑,然后一步一步实现。

c语言扫雷游戏构成原理,扫雷游戏的C语言实现相关推荐

  1. 计算机运行一个游戏的原理,通过游戏,就能了解电脑的计算原理!大人看了都想玩~...

    原标题:通过游戏,就能了解电脑的计算原理!大人看了都想玩~ "看了好想玩~~ 这个玩具可谓是超级益智了,不仅仅对小孩,对大人更是如此.它就是 Turing Tumble 一款自己组装类的弹球 ...

  2. c语言回文字符串原理,回文串(c语言)注意字符串比较和字符比较的区别

    #include #include #define LEN 224 void judge(char *); int main(void) { char ch[LEN]; gets(ch); judge ...

  3. C语言简单的键盘玩扫雷小游戏(完结)

    1:这次我们会将前面的代码进行整合,和整理,最终使我们的程序可以有效的运行起来. [1]初始化函数. void GameInit() {     //随机数种子     srand((unsigned ...

  4. 用C语言实现一个简单的扫雷游戏

    初学者学习了一些c语言基础用法以后需要尝试实战练习,扫雷小游戏就十分适合.因为他能用到很多以前学习的知识,用来巩固再好不过了 废话不多说 开干 我们首先要有一个清晰的思路 和其他游戏一样我们打开游戏第 ...

  5. [开启C语言秃头之旅]扫雷游戏

    hello,米娜桑. 还记得以前捧到大屁股计算机,和小伙伴们比赛玩扫雷谁厉害的快乐嘛? 趁着年末最后的小尾巴,自己学习一下如何用C语言实现简易版的扫雷游戏吧! 成品展示: 目录 一.思路解析 二.包含 ...

  6. java二维数组扫雷,C语言二维数组实现扫雷游戏

    #include //使用二维数组实现 扫雷 int main() { char ui[8][8]={ '+','+','+','+','+','+','+','+', '+','+','+','+' ...

  7. 针对“扫雷“和“植物大战僵尸“游戏,分析,扫描,阳光值,植物,金币,僵尸的分析逆向

    <软件逆向分析> 2022年9月 目录 {#目录 .TOC-Heading} [一.实验工具介绍 3](#一实验工具介绍) [二.针对"扫雷"游戏 3](#二针对扫雷游 ...

  8. C/C++基础讲解(九十一)之游戏篇(模拟扫雷游戏)

    C/C++基础讲解(九十一)之游戏篇(模拟扫雷游戏) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本上是一团迷雾,想要弄明白其中的奥秘,真的要花费一些功夫,我和大家一 ...

  9. H5游戏开发之扫雷-李强强-专题视频课程

    H5游戏开发之扫雷-119人已学习 课程介绍         <扫雷>是一款大众类的益智小游戏,于1992年发行.游戏目标是在短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷 ...

最新文章

  1. 我的.net程序为何不能执行?
  2. 让你工作变得更加有趣
  3. python程序设计教材浅显易懂_这些python自学技巧,你不会?
  4. python编程入门与案例详解pdf-Flutter技术入门与实战 PDF 清晰版
  5. 并发编程知识点一张图总结
  6. SQL Server Management Studio 过期无法使用解决办法
  7. java命令查看 java.io.tmpdir 参数值
  8. The server sent a disconnect packet.Received ieof for nonexistent channel 0. (code: 2)
  9. 马斯克“无家可归”!最后一套房产以3000万美元卖出 兑现“无房产”承诺
  10. XSSFWorkbook 设置单元格样式_如何设置Excel单元格才能只输入数字!
  11. python pandas 处理相同标题的csv文件_Python使用pandas处理CSV文件的实例讲解
  12. Zabbix_Server 迁移之 Agent 地址批量修改
  13. Big day coming...
  14. 电脑有电流声怎么解决_为什么音箱有电流声?电脑音箱电流声怎么消除
  15. swagger导出excel文档_excel导入导出api
  16. 基于transformer的车辆识别
  17. 关于shp图层文件解析
  18. 网络广告计费形式有那些?
  19. c语言编程一个超市购物程序,急求一超市的销售记录C程序(各位大哥帮帮忙啊!)...
  20. 哈斯图的画法,以及利用哈斯图寻找极大元之类

热门文章

  1. 阿里顶级架构师倾情推荐:国内首本大型分布式架构笔记《凤凰架构》
  2. 【搬运工】值得一提的生活窍门
  3. 计算机excel实验总结,计算机概论excel实验报告.doc
  4. 店宝宝:第一时间发布!网店店主必看
  5. GBase 8s 数据库空间(dbspace)
  6. flac格式音频转wav|Linux 使用 Shell 循环遍历文件夹里的音频——简介
  7. UpdateData函数的用法
  8. siki学院Vector2 Vector3 Rigidbody Application笔记
  9. 《Web性能测试实战》性能测试用例模板
  10. linux加速访问github