本文实例为大家分享了C语言实现扫雷游戏的具体代码,供大家参考,具体内容如下

主函数:main.c

#include "game.h"

void Menu()

{

printf("##########################\n");

printf("##1.play 0.exit##########\n");

printf("##########################\n");

printf("## Please Enter select! ##\n");

}

int main()

{

Menu();

srand((unsigned int)time(NULL));

int quit = 0;

while (!quit)

{

int select = 0;

printf("请输入你的选择:\n");

scanf("%d", &select);

switch (select)

{

case 1:

game();

break;

case 2:

quit = 1;

break;

default :

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

break;

}

}

printf("Bye Bye!\n");

system("pause");

return 0;

}

子函数:game.c

#include "game.h"

void game()

{

char mine[ROWS][COLS] = { 0 };

char show[ROWS][COLS] = { 0 };

memset(mine, '0', sizeof(mine));//初始化数组置为0

memset(show, '*', sizeof(show));//初始化数组置为*

int no_y, no_x;

set_mine(mine,ROWS,COLS,&no_x,&no_y);//布雷 ‘1'表示雷

int x = 0;

int y = 0;

int time = 100 - NUM;

while (time > 0)

{

system("cls");//清屏

Show(show, ROWS, COLS);//打印 棋盘

printf("请输入坐标:\n");

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

if (x<1 || x>10 || y<1 || y>10)

{

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

continue;

}

if (show[x][y] != '*')

{

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

continue;

}

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

{

if (time == 80)//如果第一次有雷,用一个没雷的与这个交换

{

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

mine[no_y][no_y] = '1';

}

else

{

printf("game over!\n");

Show(mine, ROWS, COLS);

break;

}

}

show[x][y] = get_mine_count(mine, x, y) + '0';

Expand(mine, show, x, y);

time--;

}

}

void set_mine(char mine[ROWS][COLS],int col,int row,int *no_x,int *no_y)//声明布雷函数

{

int count = NUM;//设置计数器,统计布雷的个数

while (count > 0)

{

int x = rand() % (col-2) + 1;

int y = rand() % (col-2) + 1;

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

{

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

count--;

}

}

for (int i = 1; i <= 10; i++)

{

for (int j = 1; i <= 10; j++)

{

if (mine[i][j] == '0')

{

no_x = i;

no_y = j;

return;

}

}

}

}

void Show(char mine[ROWS][COLS], int row, int col)//声明打印棋盘函数

{

int i = 0;

int j = 0;

printf(" ");

for (i = 1; i <= 10 ; i++)

{

printf("%2d |", i);

}

printf("\n");

for (i = 1; i <= 11; i++)

{

printf("----");

}

printf("\n");

for (i = 1; i <= 10 ; i++)

{

printf("%2d |", i);

for (j = 1; j <= 10; j++)

{

printf("%2c |", mine[i][j]);

}

printf("\n");

for (int i = 1; i <= 11; i++)

{

printf("----");

}

printf("\n");

}

}

int get_mine_count(char mine[ROWS][COLS], int x, int y)//雷数统计

{

return 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]+ mine[x - 1][y] - 8 * '0';

}

void Expand(char mine[ROWS][COLS], char show[ROWS][COLS], int x, int y)

{

if (x >= 1 && x <= 10 && y >= 1 && y <= 10)

{

if (get_mine_count(mine, x, y) + '0' == '0') //表示x,y周围没雷

{

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

if (show[x - 1][y - 1] == '*')

{

Expand(mine, show, x - 1, y - 1);

}

if (show[x - 1][y] == '*')

{

Expand(mine, show, x - 1, y );

}

if (show[x - 1][y + 1] == '*')

{

Expand(mine, show, x - 1, y + 1);

}

if (show[x ][y - 1] == '*')

{

Expand(mine, show, x , y - 1);

}

if (show[x][y + 1] == '*')

{

Expand(mine, show, x , y + 1);

}

if (show[x + 1][y - 1] == '*')

{

Expand(mine, show, x + 1, y - 1);

}

if (show[x + 1][y] == '*')

{

Expand(mine, show, x + 1, y );

}

if (show[x + 1][y + 1] == '*')

{

Expand(mine, show, x + 1, y + 1);

}

}

}

}

函数声明:game.h

#ifndef _GAME_H_

#define _GAME_H_

#include

#include

#pragma warning(disable:4996)

#include

#include

#define ROWS 12

#define COLS 12

#define NUM 20 //雷数

void game();

void set_mine(char mine[ROWS][COLS],int row, int col, int *no_x, int *no_y);

void Show(char mine[ROWS][COLS], int row, int col);

int get_mine_count(char mine[ROWS][COLS], int x, int y);

void Expand(char mine[ROWS][COLS], char show[ROWS][COLS], int x, int y);

#endif

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

c语言编写扫雷小游戏下载大全,C语言实现扫雷小游戏相关推荐

  1. python写五子棋游戏下载大全_用Python写五子棋游戏

    开端 开端 画棋盘 首先肯定是要画出棋盘来,用pygame画出一个 19 × 19 或 15 × 15 的棋盘并不是什么难事,这在之前的文章中已经多次用到,就不赘述了. 画棋子 需要说一下的是画棋子, ...

  2. python 外星人游戏下载大全_【Python】Python制作外星人入侵小游戏

    开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块. 相关文件 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理介绍 ...

  3. 简单c语语言游戏教案大全,大班语言活动教案大全简单趣味

    从小培养幼儿学说普通话的兴趣.同时家长应注意用规范的语言来与幼儿进行日常交谈. 以下是小编精心收集整理的幼儿园大班语言活动方案,下面小编就和大家分享,来欣赏一下吧. 幼儿园大班语言活动方案1 活动目标 ...

  4. python小游戏代码大全-Python实现打砖块小游戏代码实例

    这次用Python实现的是一个接球打砖块的小游戏,需要导入pygame模块,有以下两条经验总结: 1.多父类的继承2.碰撞检测的数学模型 知识点稍后再说,我们先看看游戏的效果和实现: 一.游戏效果 二 ...

  5. 诺基亚N95游戏下载大全

    最近买了个诺基亚N95手机,无聊的时候会玩些游戏,大家可能和我有同样的烦恼,就是不知道从哪儿下诺基亚N95的游戏,现在我就将我常下游戏的地址公布给大家,希望对大家有用 手游天下(中国免费手机游戏第一门 ...

  6. 如何用c语言编写发邮件程序,想学C语言发邮件程序?5分钟教会你:附送源码+教学!...

    关注<一碳科技>,获取更多知识! 前言 相信大家都有过被C语言网络编程所支配的恐惧吧?其实,小编在刚刚学习这方面的知识的时候也有这样的感受,并且所有的资料都是从网络寻找的,但是,现在你们不 ...

  7. 网吧游戏下载期,内置超10000G游戏!

    今天分享了这个神器,是专治那些不爱在家陪女朋友,专门爱去喜欢去网吧打游戏的"臭男人"们的 这款简单的来说就是一个网吧游戏下载小工具,只要你电脑硬够大,网吧电脑里面你能见到的所有游戏 ...

  8. c语言编写程序x的y次方,C语言变为编程y = x-x立方/ 3! + x五次方力量/ 5! -x7th power / 7!...

    这似乎不对,但是无论如何,我只是想补充一个问题,如果可以的话,您能再帮我一次吗? 您不能采用它,但不要说我的代码是错误的!结果留在那里,我自己看了一下. 它不是正整数(x)的序列,被写了n次,怎么可能 ...

  9. 软件工程-c语言--基于at89c51单片机c语言编写的计算器,基于AT89C1单片机C语言编写的计算器.doc...

    基于AT89C1单片机C语言编写的计算器 #include #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; ...

最新文章

  1. 2周修改了1000多个Bug后软件项目扭转了局面,未交付银行的现金管理系统健壮起来了...
  2. Java课程设计基于ssm的微信小程序
  3. easyui datagrid local pager 表格本地分页
  4. linux 查看端口 程序,linux开发:Linux下查看端口占用
  5. 菜鸟学习笔记:Java基础篇3(面向对象思想、程序执行过程内存分析、面向对象重要概念)
  6. jQuery 基本效果
  7. Mac m1芯片 安装 mosek python
  8. 二进制和十进制之间的转换
  9. 冠军方案解读 | nnUNet改进提升笔记
  10. 虚幻4渲染编程(环境模拟篇)【第一卷:体积云天空模拟(1)---层云】
  11. 博图SCL编程——常规模拟量输入/输出的处理
  12. 伦茨科技-智能语音遥控器
  13. leetcode 1833 雪糕的最大数量
  14. 【软件构造】equals()、hashCode()及引用等价性、对象等价性、观察等价性、行为等价性
  15. 爬虫入门学习(八)模拟登录丁香园论坛爬取用户信息
  16. uniapp微信小程序支付券或商家券插件
  17. Python分析《权力的游戏》最终季...... | 附源码
  18. 为什么网络掩码一定是255.255.255.0(/24)
  19. Python 十进制转换为二进制 高位补零
  20. BlockChange | 对话路印协议创始人王东:从谷歌工程师到区块链创业者,一个运营良好的区块链社区如何建设?

热门文章

  1. linux缓存文件和非缓存文件格式,实验5 Linux文件操作之带缓存和非缓冲文件的读写...
  2. 刚刚Teradata的高管们说,“TA是唯一”……
  3. Qt6串口多功能助手64位版本上位机源码
  4. linux重启网络报错Unit network-manager.service not found.
  5. 10分钟用python实现给定电影英文名,在猫眼上爬到中文名和票房
  6. POWERBI 连接 DM ODBC
  7. c语言 fortran,C语言和Fortran语言的差异
  8. DES与3DES加密C++实现
  9. 催人泪下:八岁女童的墓志铭“我来过,我很乖”
  10. 10.WScript.Network对象