用c语言实现扫雷小游戏。
相信小伙伴在学习c语言的时候想做一些小趣事,下面就是用c语言来实现一个扫雷小游戏,不过是简单的实现扫雷(只是通过数组的方式来实现),适合新手学习。
我用的是vs敲的这个代码,大家可以用vs运行(可能有些小地方不支持其他编译器,不过自己可以修改)。
1.创建一个sao.c的文件,用来放main()函数,也是程序的入口,sao.c文件中的代码如下:
#include<stdio.h>
#include"sao.h"
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("********************************\n");
printf("******1.玩游戏 0.退出游戏******\n");
printf("********************************\n");
}
void game()
{
//1.布置好雷区
char mine[ROWS][COLS] = { 0 };
//2.排查雷的信息
char show[ROWS][COLS] = { 0 };
//初始化
initboard(mine, ROWS, COLS, '0');
initboard(show, ROWS, COLS, '*');
//打印出棋盘
//displayboard(mine, ROW, COL);
displayboard(show, ROW, COL);
//布置雷区
setmine(mine, ROW, COL);
//displayboard(mine,ROW,COL);
//扫雷
findmine(mine, show, ROW, COL);
}
void test()
{
printf("扫雷游戏\n");
srand((unsigned int)time(NULL));
int input = 0;
do{
menu();
printf("请选择:");
scanf_s("%d", &input);
switch (input) {
case 1:
game();
break;
case 0:
break;
default:
printf("输入错误!\n");
break;
}
} while(input);
}
int main()
{
test();
return 0;
}
2.第二个文件名为:sao2.c ,这个文件中主要是放一些函数的实现,sao.2c中的代码为:
#include"sao.h"
void initboard(char board[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++)
{
board[i][j] = set;
}
}
}
void displayboard(char board[ROWS][COLS], int row, int col)
{
int i = 0;
int j = 0;
printf(" ");
for (i = 1; i <= col; i++)
{
printf(" %d ", i);
}
printf("\n");
for (i = 1; i <=row; i++)
{
printf(" %d ", i);
for (j = 1; j <= col; j++)
{
printf(" %c ", board[i][j]);
}
printf("\n");
}
}
void setmine(char board[ROWS][COLS], int row, int col)
{
int x = 0;
int y = 0;
int count = EASY_MINE;
while(count >= 1)
{
x = rand() % row + 1;
y = rand() % col + 1;
if (board[x][y] == '0')
{
board[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] +
mine[x][y + 1] +
mine[x][y - 1] +
mine[x - 1][y - 1] +
mine[x - 1][y + 1] +
mine[x + 1][y - 1] +
mine[x + 1][y + 1] - 8 * '0';
}
void findmine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
int x = 0;
int y = 0;
while (1)
{
printf("请输入你排查的坐标:");
scanf_s("%d%d", &x, &y);
if (x >= 1 && x <= 9 && y >= 1 && y <= 9)
{
//坐标合法
if (mine[x][y] == '1')
{
printf("很遗憾!你被炸死了!\n");
displayboard(mine,row,col);
break;
}
else
{
int count = get_mine_count(mine, x, y);
show[x][y] = count + '0';
displayboard(show, row, col);
}
}
else {
printf("输入错误!\n");
}
}
}
3.第三个文件为:sao.h的头文件,里面主要是放一些函数的申明和宏,具体代码如下:
#define ROW 9
#define COL 9
#define ROWS ROW+2
#define COLS COL+2
#include<stdio.h>
#define EASY_MINE 10
#include<time.h>
//声明
void initboard(char board[ROWS][COLS], int rows, int cols,char set);
//声明
void displayboard(char board[ROWS][COLS], int row, int col);
//布置雷区函数的声明
void setmine(char board[ROWS][COLS], int row, int col);
//扫雷声明
void findmine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);
4.上面代码对大神来说不值一提,对学习c阶段的小伙伴来说可以看看,没有什么难度。
用c语言实现扫雷小游戏。相关推荐
- c语言字符游动程序,C语言实现扫雷小游戏详解
本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 一.实现功能 首先显示一个小菜单,选择是否玩游戏.当用户选择退出时,程序运行结束,当用户选择玩游戏时,将提示用户输入扫雷位 ...
- 只用c语言不用图片的游戏,使用C语言实现扫雷小游戏
本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 游戏规则 在一个9*9的地图上一共有十个雷,翻开所有不是雷的位置 游戏即为胜利, 如果踩到雷,游戏结束 设计思路 1.创建 ...
- 【C语言】扫雷小游戏详解
[C语言]扫雷小游戏详解 前言: 还记得大明湖畔的夏雨荷,电脑课上的扫雷吗? ---------------------------是 他 吗--------------------------- 没 ...
- C语言实现扫雷小游戏 纯小白 非黑窗口
C语言实现一个普通的扫雷小游戏 纯小白所编(含代码非黑窗口!) 扫雷 主要功能 1.创建一个图形界面 2.了解扫雷游戏的原理 3.随机生成雷的位置 4.为整个数组加密,并在雷周围的位置加一 5.导入图 ...
- C语言实现扫雷小游戏(排雷时可展开)
游戏介绍 扫雷想必大家都听说过吧?我们今天写的小游戏就是扫雷,只不过我们只使用C语言写.我们能够做到的就是实现扫雷的基本逻辑,没有图形化界面. 源代码 这次游戏程序的写法和上一次的三子棋的模式很像,也 ...
- 用C语言实现扫雷小游戏(附上思路+项目展示+源代码)
文章目录 前言 一.扫雷小游戏整体思路讲解. 二.game.c各游戏功能函数的讲解 1.InitBoard 初始化数组函数讲解 2.DisplayBoard 打印格子函数讲解 3.Setmine 电脑 ...
- C语言编写扫雷小游戏
该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/104992377 扫 ...
- C语言实现扫雷小游戏(下)(用递归实现了展开)
穷且益坚,不坠青云之志. 上篇博客实现了鸡肋的扫雷小游戏,不能实现雷盘(场)的展开,体验不是很好,这篇博客对其进行优化了,实现了展开功能. 文章目录 一.新的头文件 二.游戏框架 三.功能函数 ...
- C语言实现扫雷小游戏(具体步骤+具体说明)
C语言实现扫雷目录 一.游戏介绍 三.具体步骤 1.菜单页面 2.初始化雷盘 3.打印雷盘 4.布置雷 5.排查雷 7.统计所选位置周围八个位置中雷的个数 四.完整代码 1.test.c-扫雷游戏的测 ...
最新文章
- ×××第三话:基础Ez×××配置
- 存储系统管理服务器,Mainframe的存储管理系统和架构
- PlantUML权威教程-时序图
- maven book
- lucene升级至5.x版本出现 :IllegalStateException: IllegalStateException: unexpected docvalues type NONE...
- 玩转 Python 3.5 的 await/async
- [教程]黑莓终极中文混刷教程 终身受用
- kindle看pdf乱码_Kindle 中文书名 目录 乱码 解决办法
- 23王道——建立中序线索树,找前驱后继,并用其遍历
- OpenWrt使能mt7620a第二个uart
- win10无法启动_win10电脑开机进入不了系统如何解决?
- 求和计算机教案,初中信息技术《Excel求和》教案
- 什么是数据流图 Data Flow Diagram (DFD)
- 全能电子地图实时路况_全能SUV与城市SUV的区别在哪?日产奇骏对比本田皓影
- js base64编码格式图片另存为下载
- 详解向图像加入高斯白噪声
- 艾伟:一个让人遗忘的角落--Exception(一)
- GPS时间系统的转换
- 基于python的网络爬虫编程_基于Python的网络爬虫程序设计
- 排列组合思维导图_思维模型10 - Permutations and Combinations | 排列组合
热门文章
- 深度学习应用在图像分割上的网络模型概述
- 我们说的那些培训班,到底要不要报?自学编程VS培训报班
- selenium框架爬取p2p问题平台信息,需加载点击页面的。
- 主机如何连接到URSim中的客户端接口
- #今日论文推荐# IJCAI 2022 | 求同存异:多行为推荐的自监督图神经网络
- 产品经理基本功,如何画一个满分原型?
- nekohtml解析html(string或是文件流)
- 有没有能够在待办事项完成后标记任务已完成的每日计划APP?
- Ubuntu 12.04硬盘安装与U盘安装(图文)
- utf8mb4_unicode_ci、utf8mb4_general_ci的区别总结