过7游戏c语言,C语言实现扫雷小游戏
本文实例为大家分享了C语言扫雷小游戏的具体实现代码,供大家参考,具体内容如下
一、分析游戏步骤:
具体步骤如图:
二、代码实现:
游戏步骤想好之后,就是用代码把步骤一步一步的实现。具体代码如下:
1、游戏主要实现: game.c
#define _CRT_SECURE_NO_WARNINGS 1
#include"game.h"
void game()
{
char mine[ROW + 2][COL + 2]; //记录地雷的数组
char show[ROW + 2][COL + 2]; //展示给玩家的数组
Init(mine, show, ROW + 2, COL + 2); //初始化
set_mine(mine, MINE_NUM); //布雷
//print_show(mine, ROW, COL); //打印布雷的棋盘
print_show(show, ROW, COL); //打印棋盘
int ret = -1; //用于游戏中判断是否是第一步
while (1) //玩家进行游戏
{
int x, y;
int num = -1;
printf("请输入坐标< x y >:\n");
scanf("%d%d", &x, &y);
if (x < 1 || x>10 || y < 1 || x>10)
{
printf("输入的坐标有误,请重新输入:\n");
}
else
{
if (ret == -1 && mine[x][y] == '1') //第一步踩雷
{
mine[x][y] = '0'; //除掉这个雷
set_mine(mine, 1); // 再布一颗雷
}
if (mine[x][y] == '0') //没有踩雷
{
ret = 0;
num = get_round_mine(mine, x, y);
if (num != 0)
{
show[x][y] = num + '0';
}
else //周围一圈都没有雷
{
open_show(mine, show, x, y); //展开函数 (连续展开)
}
print_show(show, ROW, COL); //打印棋盘
}
else // 踩雷了
{
printf("少侠,你踩到雷了!!!\n");
print_show(mine, ROW, COL); //打印棋盘
return;
}
}
if (Is_win(show))
{
printf("恭喜!!!您胜利啦!!!\n");
break;
}
}
}
void Init(char mine[ROW + 2][COL + 2], char show[ROW + 2][COL + 2], int row, int col)
{
memset(mine, '0', row*col * sizeof(mine[0][0]));
memset(show, '*', row*col * sizeof(show[0][0]));
}
void print_show(char show[ROW + 2][COL + 2], int row, int col) //打印棋盘
{
int i;
int j;
printf(" ");
for (i = 1; i <= col; i++)
{
printf("%2d", i);
}
printf("\n ");
for (i = 0; i < col; i++)
{
printf("--");
}
printf("\n");
for (i = 1; i <= row; i++)
{
printf("%2d|", i);
for (j = 1; j <= col; j++)
{
printf("%2c", show[i][j]);
}
printf("\n");
}
printf("\n");
}
void set_mine(char mine[ROW + 2][COL + 2], int mineNumber) //布雷
{
int x = -1;
int y = -1;
while (mineNumber)
{
x = rand() % ROW + 1;
y = rand() % COL + 1;
if (mine[x][y] == '0')
{
mine[x][y] = '1';
--mineNumber;
}
}
}
int get_round_mine(char mine[ROW + 2][COL + 2], int x, int y) //获取周围雷的个数;
{
return (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]) +
(mine[x + 1][y - 1]) + (mine[x][y - 1]) - 8 * '0';
}
void open_show(char mine[ROW + 2][COL + 2], char show[ROW + 2][COL + 2], int x, int y) //展开函数
{
if (x >= 1 && x <= 10 && y >= 1 && y <= 10 && (mine[x][y] != 1) && (show[x][y] == '*'))
{
if (get_round_mine(mine, x, y) > 0)
{
show[x][y] = get_round_mine(mine, x, y) + '0';
}
else
{
show[x][y] = ' ';
open_show(mine, show, x - 1, y - 1);
open_show(mine, show, x - 1, y);
open_show(mine, show, x - 1, y + 1);
open_show(mine, show, x, y + 1);
open_show(mine, show, x, y - 1);
open_show(mine, show, x + 1, y - 1);
open_show(mine, show, x + 1, y);
open_show(mine, show, x + 1, y + 1);
}
}
}
int Is_win(char show[ROW + 2][COL + 2]) //判赢
{
int count = MINE_NUM;
int i;
int j;
for (i = 1; i <= ROW; i++)
{
for (j = 1; j <= ROW; j++)
{
if (show[i][j] == '*')
{
count--;
}
}
}
if (count == 0) //雷全部找到
{
return 1;
}
else
{
return 0;
}
}
过7游戏c语言,C语言实现扫雷小游戏相关推荐
- C语言大一课设 扫雷小游戏
目录 [题 目]扫雷小游戏 [项目简介] [总体功能结构流程图] 登录和注册流程图: 打印棋盘流程图: 计算周围雷的个数流程图: test.c game.h game.c 运行结果 (1)注册运 ...
- c语言小游戏 精简_C语言开发简易版扫雷小游戏
C 语言开发简易版扫雷小游戏 本文给大家分享的是一个使用 C 语言开发的命令行下的简易版扫雷小游戏, 本身没有什么太 多的技术含量, 只不过是笔者的处女作, 所以还是推荐给大家, 希望对大家学习 C ...
- C语言实现扫雷小游戏 纯小白 非黑窗口
C语言实现一个普通的扫雷小游戏 纯小白所编(含代码非黑窗口!) 扫雷 主要功能 1.创建一个图形界面 2.了解扫雷游戏的原理 3.随机生成雷的位置 4.为整个数组加密,并在雷周围的位置加一 5.导入图 ...
- 用c语言实现扫雷小游戏。
相信小伙伴在学习c语言的时候想做一些小趣事,下面就是用c语言来实现一个扫雷小游戏,不过是简单的实现扫雷(只是通过数组的方式来实现),适合新手学习. 我用的是vs敲的这个代码,大家可以用vs运行(可能有 ...
- ChatGPT实现用C语言写一个扫雷小游戏
前几天我们利用 ChatGPT实现用C语言写一个学生成绩管理系统 其过程用时不到30秒,速度惊人 今天又让ChatGPT用C语言写了一个扫雷小游戏,它的回答是:抱歉,我是AI语言模型,无法编写程序. ...
- html实现扫雷小游戏(附源码)
文章目录 实现功能 1.扫雷设计 1.1 主界面 1.2 扫雷难度 1.3 附带功能 2.效果和源码 2.1 动态效果 2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blo ...
- 使用C语言写一个扫雷小游戏
前言 相信扫雷游戏小伙伴们肯定都玩过吧,学习了C语言中的数组.函数等基础内容之后就可以自己写一个简易的扫雷小游戏了,今天就我写扫雷小游戏的过程及思路写一篇博客,希望大家看完我的博客能有所收获. 软件及 ...
- c语言自动按键脚本,C语言键盘控制走迷宫小游戏
本文实例为大家分享了C语言键盘控制走迷宫小游戏的具体代码,供大家参考,具体内容如下 在看了<啊哈C语言>之后想写一个游戏demo 游戏的截图 首先是启动界面 然后是初始化 接下来是键盘操控 ...
- c语言设置一个选择数字的程序,C语言编一个数字益智小游戏
程序功能及运行情况 设计的程序是一个数字益智游戏,旨在培养小朋友玩家的数学思维,提高玩家的数学能力.游戏共设有四个不同的小游戏,分别是一位数四则运算.两位数四则运算.找最值游戏.排序游戏.程序能实现产 ...
- C语言射击类打飞机小游戏
使用c语言编写一个打飞机小游戏,使用键盘按键来进行游戏,击中敌机可获得积分,被敌机撞中死亡一次,每次游戏有3次机会. 在网上查询资料并且和同学讨论之后,对原来的代码有了一些改进, 改进:增加了颜色函数 ...
最新文章
- jQuery Pagination分页插件--无刷新
- Ubuntu14.04安装nvidia-docker2
- shell脚本逻辑判断,文件目录属性判断,if,case用法
- php 读取 linux 文件,PHP读取大文件,linux读取日志
- 安卓java模拟器_用大白话告诉你:Java 后端到底是在做什么?
- 企业形象广告的几个突破要点
- 前端学习(2001)vue之电商管理系统电商系统之获取商品分类数据
- 【Flink】Flink 多并行度下的 watermark触发机制
- 删除MyEclipse 6.5.1自带的Maven4MyEclipse
- 机器学习 - 支持向量机
- Objective-C中ORM的运用:实体对象和字典的相互自动转换
- 清华大学陈渝老师操作系统课程笔记整理
- 贝叶斯网络经典matlab源代码解析
- STM32使用M/T法检测单路脉冲
- 【Vue】基础系列(八)数据绑定以及姓名案例的三种写法
- 尚硅谷 硅谷外卖_关于多样性,硅谷未能想到与众不同
- SAP S4 会计科目表的设计
- C语言怎么才能让末尾没有多余的空格_C语言干货分享
- 浙江小学python教材_PPT、H5、Python、大数据……浙江中小学新教材9月投用!
- ARM学习之基本概念
热门文章
- win10网络计算机删除,手把手教你彻底删除win10系统自带的微软拼音输入法-网络教程与技术
-亦是美网络...
- rm -rf —— 删库跑路教程详解
- 布莱克曼哈尔窗matlab,基于matlab的布莱克曼窗函数法设计的低通滤波器
- mysql服务什么意思_mysql数据库服务是什么意思
- 矩阵知识:线性变换、相似矩阵、对角矩阵、逆矩阵
- Mysql-explain-Impossible WHERE noticed after reading const tables
- 1matlab像素值及统计
- 概率论复习笔记一——伯努利实验及相关的概率分布
- 现在国内程序员的工资是什么行情?
- 职高计算机班主任工作计划,教学工作计划:高职班主任工作计划