扫雷小游戏(简易版)
写个小游戏娱乐娱乐!
目录:1.简要分析
2.实现扫雷游戏细节
3.总代码
1.简要分析
一般写这种小游戏要分为两个模块:头文件,源文件。头文件中声明各种函数和库函数以及宏定义,全局变量等。源文件中主要是实现函数和逻辑函数等。
在扫雷游戏中,我将我的模块分为三部分,一部分是game.h--声明头文件等,game.c--实现游戏函数,test.c--实现总体逻辑
接下来就是扫雷游戏的细节处理
2.游戏细节
1.定义两个数组
char mine[ROW][COL];//用于存放雷的位置,以及非雷的位置,初始化为‘0’,然后才将雷的位置‘1’来替换原来的字符
char show[ROW][COL];//用于展示在游戏界面的雷阵,并不会将雷的位置暴露,且初始化为‘*’。
2.布雷
srand((unsigned int )time(NULL));
int x=0,y=0;
x=rand()%row+1;//用srand((unsigned int )time(NULL))来随机生成雷的位置坐标
y=rand()%col+1;//生成10个雷,就循环十次,将雷的位置存放在mine[ROW][COL]中
3.排雷
if(arr[x][y]==1)//当位置输入坐标在mine[ROW][COL]中存放的字符为‘1’时,则为踩雷,游戏结束
printf("游戏结束!");
else
int count = get_mine(mine, x, y);
//当输入坐标中的字符不是雷所在的位置就判断该位置四周的八个做是否有雷并显示出四周雷的数量
show[x][y] = count+'0';
show_board(show, ROW, COL);
//判断并计算输入位置四周的八个坐标是否有雷以及雷的数量
int get_mine(char mine[ROWS][COLS], int x, int y)
{
return (mine[x - 1][y - 1] + mine[x - 1][y] + mine[x - 1][x + 1] +
mine[x][x - 1] + mine[x][x + 1] +
mine[x + 1][y - 1] + mine[x + 1][y] + mine[x + 1][y + 1] - 8 * '0'
);
}
4.判断什么时候排雷成功
int win=0;//定义一个变量来判断什么时候排雷成功;
void find_mine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{
int x;
int y;
int win=0;
while (win<row*col-EASY)
{
printf("请输入你将排查的位置坐标:\n");
scanf("%d%d", &x, &y);
if (x >= 1 && x <= row && y >= 1 && y <= col)
{
if (mine[x][y] == '1')
{
printf("很遗憾,踩雷了,游戏结束!\n");
show_board(mine, ROW, COL);
break;
}
else
{
int count = get_mine(mine, x, y);
show[x][y] = count+'0';
show_board(show, ROW, COL);
win++;
}
}
else
{
printf("坐标非法,请重新输入:\n");
}
}
if (win == row * col - EASY)
printf("恭喜你,排雷成功!\n");
}
3.总代码
1.test.c
#define _CRT_SECURE_NO_WARNINGS
#include "game.h"void menu()
{printf("*****************\n");printf("*** 1.play ***\n");printf("*** 0.exit ***\n");printf("*****************\n");
}void game()
{char mine[ROWS][COLS];//存放雷char show[ROWS][COLS];//用于展示给玩家的棋盘;//初始化棋盘init_board(mine, ROWS, COLS, '0');init_board(show, ROWS,COLS,'*');//打印棋盘;show_board(show, ROW, COL);//show_board(mine, ROW, COL);//布置雷set_mine(mine, ROW, COL);//show_board(mine, ROW, COL);//排雷find_mine(mine, show, ROW, COL);}int main()
{int input;srand((unsigned int)time(NULL));do{menu();scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("退出游戏!\n");break;default:printf("输入错误,请重新输入:\n");break;}} while (input);return 0;
}
2.game.h
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>#define ROW 9
#define COL 9#define ROWS ROW+2
#define COLS COL+2#define EASY 10//初始化棋盘
void init_board(char arr[ROWS][COLS], int rows, int cols, char set);//打印棋盘
void show_board(char arr[ROWS][COLS], int row, int col);//布置雷
void set_mine(char arr[ROWS][COLS], int row, int col);//排雷
void find_mine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);
3.game.c
#define _CRT_SECURE_NO_WARNINGS
#include "game.h"void init_board(char arr[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++){arr[i][j] = set;}}
}void show_board(char arr[ROWS][COLS], int row, int col)
{int i = 1;int j = 1;printf("------扫雷-------\n");for (i = 0; i <= row; i++){printf("%d ", i);}printf("\n");for (i = 1; i <= row; i++){printf("%d ", i);for (j = 1; j <= col; j++){printf("%c ", arr[i][j]);}printf("\n");}
}//布置雷
void set_mine(char arr[ROWS][COLS], int row, int col)
{int count = EASY;int x=0, y=0;while (count){x = rand() % row + 1;y = rand() % col + 1;if (arr[x][y] == '0'){arr[x][y] = '1';count--;}}
}int get_mine(char mine[ROWS][COLS], int x, int y)
{return (mine[x - 1][y - 1] + mine[x - 1][y] + mine[x - 1][x + 1] +mine[x][x - 1] + mine[x][x + 1] +mine[x + 1][y - 1] + mine[x + 1][y] + mine[x + 1][y + 1] - 8 * '0');
}
void find_mine(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col)
{int x;int y;int win=0;while (win<row*col-EASY){printf("请输入你将排查的位置坐标:\n");scanf("%d%d", &x, &y);if (x >= 1 && x <= row && y >= 1 && y <= col){if (mine[x][y] == '1'){printf("很遗憾,踩雷了,游戏结束!\n");show_board(mine, ROW, COL);break;}else{int count = get_mine(mine, x, y);show[x][y] = count+'0';show_board(show, ROW, COL);win++;}}else{printf("坐标非法,请重新输入:\n");}}if (win == row * col - EASY)printf("恭喜你,排雷成功!\n");
}
扫雷小游戏(简易版)相关推荐
- jQuery实现别踩白块小游戏(简易版)
别踩白块分享 这是个漫长的寒假,编程使我快乐.在学习jQuery时,在家练习做了这个小游戏,也算是提升一下实际使用能力. 现在记录下来给大家参考,不足之处请大家谅解. 先上截图: 使用代码前请先导入j ...
- 扫雷自定义最难C语言,C语言实现扫雷小游戏(扩展版可选择游戏难度)
游戏简介 扫雷,是一款益智类小游戏. 游戏目标是找出所有没有地雷的方格,完成游戏:要是按了有地雷的方格,游戏失败:玩家可标记雷的位置.游戏以完成时间来评高低.有不同的游戏难度可选择. 实现的功能介绍 ...
- 小游戏.简易版宝可梦.原创
精灵宝可梦大家都有印象吧,耗时一星期做的第一版,话不多说,直接上代码. #include<bits/stdc++.h> #include<stdio.h> #include&l ...
- HTML+JavaScript飞机大战小游戏简易版
点击开始游戏后拖动鼠标在蓝色区域内即可操作飞机移动 打中敌方得分,被敌方碰撞则减分掉血 运用延时调用函数实现连续发射子弹 运用随机函数使敌方飞机在蓝图随机刷新 运用坐标判断子弹和敌方飞机距离,碰撞则消 ...
- c语言小游戏 精简_C语言开发简易版扫雷小游戏
C 语言开发简易版扫雷小游戏 本文给大家分享的是一个使用 C 语言开发的命令行下的简易版扫雷小游戏, 本身没有什么太 多的技术含量, 只不过是笔者的处女作, 所以还是推荐给大家, 希望对大家学习 C ...
- C实现扫雷小游戏(简易版)
你知道,有些鸟儿是注定不会被关在牢笼里的,它们的每一片羽毛都闪耀着自由的光辉.--<肖申克的救赎> 目录 1.设计框架 2.设计流程 2.1菜单 2.2初始化雷阵 2.3生成雷 2.4玩家 ...
- 扫雷html5简单初级,纯原生JS用面向对象class方法实现简易扫雷小游戏
Demo介绍 纯原生js 实现 且用ES6语法class写的扫雷小游戏:布局为10*10的网格,随机生成10-20个雷. 左键点击扫雷.右键标记该地方有雷.该demo下载下来复制到html文件中直接可 ...
- 纯原生JS用面向对象class方法实现简易扫雷小游戏
Demo介绍 纯原生js 实现 且用ES6语法class写的扫雷小游戏:布局为10*10的网格,随机生成10-20个雷. 左键点击扫雷.右键标记该地方有雷.该demo下载下来复制到html文件中直接可 ...
- 使用C语言写一个扫雷小游戏
前言 相信扫雷游戏小伙伴们肯定都玩过吧,学习了C语言中的数组.函数等基础内容之后就可以自己写一个简易的扫雷小游戏了,今天就我写扫雷小游戏的过程及思路写一篇博客,希望大家看完我的博客能有所收获. 软件及 ...
- 用C语言实现一个简单的扫雷小游戏(附全代码及教程)
本文实例为大家分享了C语言实现扫雷游戏的具体代码,供大家参考,具体内容如下: 首先,创建一个text.c文件: 编写主函数: int main() {test();return 0; } 定义test ...
最新文章
- Python访问MySQL数据库并实现其增删改查功能
- Function接口 – Java8中java.util.function包下的函数式接口
- request download - 两个队列的研究
- 对字符串进行 匹配,查找,替换,判断。
- 将一个日程分割成多个日程_在家庭日程中开展工作的6个技巧
- xp速度比服务器系统,让Windows XP跑得更快更稳
- 不是css3新增的技术,CSS3中的5个有趣的新技术
- python 归纳 (二二)_多进程数据共享和同步_管道Pipe
- MATLAB gui 绘图设置
- 你可能不知道的 Android Studio 小技巧之「多行编辑」
- 【漏洞复现】内网实战-Sunlogin RCE 向日葵远程代码执行
- 平面设计类毕业论文文献(推荐10篇)
- windows WTS 服务与桌面交互
- c++简单复数计算器
- 11种图像清晰度评价函数附MATLAB代码
- 如何搞定会计人员头疼的固定资产盘点?
- 【imessage苹果推】苹果邮箱推邮箱Apple Push IMESSage SMS
- MACD策略引入backtrader出错
- 内网渗透-frp 用于内网穿透的基本配置和使用
- 厉害了,用Python破个世界纪录!