扫雷游戏

简介: 扫雷游戏

扫雷游戏(C语言)

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

#include <windows.h>

#define xx 51

#define yy 51

int a[xx][yy];

char show[xx][yy];

int boom[xx][yy];

int hang,lie;

double begin, finish;

int oo;

void menu(void);

void set(int boom[xx][yy]);

void display(char show[xx][yy]);

int sweep(int boom[xx][yy], char show[xx][yy]);

int num(int boom[xx][yy], char show[xx][yy], int x, int y);

void nandu();

//主函数如下

int main()

{

int m, n;

kaishi:

for (m = 0; m<xx; m++)

{

for (n = 0; n<yy; n++)

{

show[m][n] = ‘\0’;

boom[m][n] = 0;

a[m][n] = 0;//为数组进行初始化

}

}

menu();

int f;

scanf("%d", &f);

if (f == 1)

{

system(“cls”);

nandu();

for (m = 0, n = 0; n<lie; n++)//设置边界标识

a[m][n] = 1;

for (m = (hang-1), n = 0; n<lie; n++)//设置边界标识

a[m][n] = 1;

for (m = 0, n = 0; m<hang; m++)//设置边界标识

a[m][n] = 1;

for (m = 0, n = (lie-1); m<hang; m++)//设置边界标识

a[m][n] = 1;

system(“cls”);

set(boom);

display(show);

sweep(boom, show);

printf(“按任意键返回主菜单\n”);

system(“pause”);

system(“cls”);

goto kaishi;

}

return 0;

}


void menu()

{

printf(“\n");

printf(" 小韩专属 \n");

printf(" 主菜单 \n");

printf(" 1.进入游戏 \n");

printf(" 2.退出游戏 \n");

printf("\n”);

printf("(输入对应序号进入)\n");

}

//选择难度

void nandu()//难度调节

{tou:

//color(7);

printf(“1.简单模式\n”);

//color(9);

printf(“2.普通模式\n”);

//color(4);

printf(“3.困难模式\n”);

//color(5);

printf(“4.噩梦模式\n”);

//color(7);

printf(“5.自定义(行列小于50)\n”);

int mm;

scanf("%d", &mm);

switch (mm)

{

case 1:oo = 10; hang = 11; lie = 11; break;

case 2:oo = 40; hang = 18; lie = 18; break;

case 3:oo = 99; hang = 23; lie = 23; break;

case 4:oo = 120; hang = 23; lie = 23; break;

case 5: printf(“行 列 雷\n”);

scanf("%d %d %d",&hang,&lie,&oo);

hang=hang+2;

lie=lie+2;

break;

default:{printf(“错误,请重新选择”);

  goto tou;
system("cls");
}
}

}

void set(int boom[xx][yy]) //设雷

{

int count = oo;

int x = 0;

int y = 0;

srand((unsigned)time(NULL));

while (count)

{

x = rand() % (hang-3) + 1;

y = rand() % (lie-3) + 1;

if (boom[x][y] == 0)

{

boom[x][y] = 1;

count–;

}

}

}

void display(char show[xx][yy])

{

int i = 0;

int j = 0;

printf(" “);

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

{

printf(” %2d “, i);

}

printf(”\n");

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

{

printf(" “);

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

{

printf(”|—");

}

printf("|\n");

printf("%2d", i);

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

{

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

}

printf(”|\n");

}

printf(" “);

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

{

printf(”|—", show[i][j]);

}

printf("|\n");

}

int sweep(int boom[xx][yy], char show[xx][yy])

{

int num(int boom[xx][yy], char show[xx][yy], int x, int y);

int x, y, count = 0, l, k, win = 0;

begin = clock();

while (1)

{

start:

win = 0;

for (l = 1; l<hang - 1; l++)

{

for (k = 1; k<lie - 1; k++)

if (show[l][k] >= 48 && show[l][k]<57)//胜利条件检测

win++;

}

if (win == ((hang - 2)(lie - 2) - oo))//胜利条件判断

break;

printf(“请输入坐标,输入坐标的相反数可以标记为雷区\n”);

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

if (x>(hang-2) || y>(lie-2)||x<-(hang-2)||y<-(lie-2)||!((x>0&&y>0)||(x<0&&y<0)))

{

system(“cls”);

display(show);

printf(“输入错误,请重新输入\n”);

goto start;

}

if (x<0)

{

if (show[-x][-y] == ‘\0’)

show[-x][-y] = ‘!’;

else

if(show[-x][-y] == ‘!’)

show[-x][-y] = ‘\0’;

else {goto start;

}

system(“cls”);

display(show);

continue;

}

if (count == 0)//防止第一次踩雷

{

if (boom[x][y] == 1)//count在这里是计步作用 记录操作次数

{

boom[x][y] = 0;

l = rand() % (hang-3)+ 1;

k = rand() % (lie-3) + 1;

if (boom[l][k] == 0)

{

boom[l][k] = 1;

}

}

}

if (boom[x][y] == 1){

for (l = 1; l<hang - 1; l++){

for (k = 1; k<lie - 1; k++)

if (boom[l][k] == 1)

show[l][k] = '’;//失败时雷区显示

}

system(“cls”);

display(show);

finish = clock();

printf(“你踩到地雷了!\n”);

printf(“游戏结束,用时%d秒\n”, (int)(finish - begin) / 1000);

return 0;//游戏失败

}

else

{

num(boom, show, x, y);

system(“cls”);

display(show);

count++;

}

}

finish = clock();

printf(“你赢了!!\n”);

printf(“游戏结束,用时%d秒\n”, (int)(finish - begin) / 1000);

printf(“输入任意数字返回主菜单\n”);

return 0;

}

int num(int boom[xx][yy], char show[xx][yy], int x, int y)//查看一点周围雷的个数

{

int nnn = 0, p, q;

if (a[x][y] == 0)

{

if (boom[x - 1][y - 1] == 1)

nnn++;

if (boom[x - 1][y] == 1)

nnn++;

if (boom[x - 1][y + 1] == 1)

nnn++;

if (boom[x][y - 1] == 1)

nnn++;

if (boom[x][y + 1] == 1)

nnn++;

if (boom[x + 1][y - 1] == 1)

nnn++;

if (boom[x + 1][y] == 1)

nnn++;

if (boom[x + 1][y + 1] == 1)

nnn++;

show[x][y] = nnn + ‘0’;

if (nnn == 0){//连锁反应递归

a[x][y] = 1;

for (p = x - 1; p<x + 2; p++)

{

for (q = y - 1; q<y + 2; q++)

num(boom, show, p, q);

}

}

}

else return 0;

}

目录
相关文章
|
网络协议 数据安全/隐私保护 Windows
Windows Server 各版本搭建域控制器实现通过域管理用户(03~19)
Windows Server 各版本搭建域控制器实现通过域管理用户(03~19)
|
消息中间件 存储 数据采集
iLogtail社区版使用入门 - 主机环境采集业务日志到SLS
本文将会详细介绍如何使用社区版iLogtail,并结合SLS云服务快速构建出一套高可用、高性能的日志采集分析系统
1864 0
|
Java
规则引擎选型及应用
规则引擎具体执行可以分为接受数据输入,解释业务规则,根据业务规则做出业务决策几个过程。 使用规则引擎可以把复杂、冗余的业务规则同整个支撑系统分离开,做到架构的可复用移植。
24348 0
|
缓存 网络协议 前端开发
当浏览器输入url的时候会发生什么?
当浏览器输入url的时候会发生什么?
190 0
|
7月前
|
物联网 测试技术 API
时序数据库 InfluxDB 3.0 版本性能实测报告:写入吞吐量提升效果验证
TSBS 测试表明,对于少于 100 万台设备的数据集,InfluxDB OSS 3.0 的数据写入速度实际上比 InfluxDB OSS 1.8 更慢。 对于 100 万台及以上设备的数据集,InfluxDB OSS 3.0 的数据写入性能才开始超过 InfluxDB OSS 1.8。 InfluxDB OSS 3.0 的数据写入接口与 InfluxDB 1.8 并不兼容,用户无法顺利迁移。
457 7
|
存储 算法 搜索推荐
Python进阶必备:字典树Trie与后缀树Suffix Array,效率提升的神器!
在Python编程中,掌握高效的数据结构对于提升程序性能至关重要。本文将深入探讨两种强大的字符串处理数据结构——字典树(Trie)与后缀数组(Suffix Array)。字典树,又称前缀树,适用于自动补全和拼写检查等功能。例如,在文本编辑器中实现自动补全时,字典树能够即时提供单词补全选项。后缀数组则用于存储字符串的所有后缀并按字典序排序,结合最长公共前缀(LCP)数组,可以高效解决许多字符串问题,如查找最长重复子串等。通过实际案例,我们将展示这两种数据结构的强大功能,帮助你在Python编程中更进一步。
217 2
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp微信小程序的体育馆使用预约平台的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的体育馆使用预约平台的详细设计和实现
163 2
基于SpringBoot+Vue+uniapp微信小程序的体育馆使用预约平台的详细设计和实现
|
前端开发 JavaScript API
赶快收藏!全网最佳websocket封装:完美支持断网重连、自动心跳!
【8月更文挑战第17天】赶快收藏!全网最佳websocket封装:完美支持断网重连、自动心跳!
547 3
赶快收藏!全网最佳websocket封装:完美支持断网重连、自动心跳!
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能】TensorFlow简介,应用场景,使用方法以及项目实践及案例分析,附带源代码
TensorFlow是由Google Brain团队开发的开源机器学习库,广泛用于各种复杂的数学计算,特别是涉及深度学习的计算。它提供了丰富的工具和资源,用于构建和训练机器学习模型。TensorFlow的核心是计算图(Computation Graph),这是一种用于表示计算流程的图结构,由节点(代表操作)和边(代表数据流)组成。
450 0
|
开发者 Python
入门实战丨Python小游戏经典案例
入门实战丨Python小游戏经典案例
243 4