当前位置: 首页 > news >正文

凡客诚品网站地址前端做网站框架

凡客诚品网站地址,前端做网站框架,怎么制作公众号微信,四川省住房城乡建设厅官网查询C语言经典游戏扫雷 前言一.游戏规则二.所需文件三.创建菜单四.游戏核心内容实现1.创建棋盘2.打印棋盘3.布置雷4.排查雷5.game()函数具体实现 五.游戏运行实操六.全部码源 前言 #x1f600;C语言实现扫雷是对基础代码能力的考察。通过本篇文章你将学会如何制作出扫雷#xff… C语言经典游戏扫雷 前言一.游戏规则二.所需文件三.创建菜单四.游戏核心内容实现1.创建棋盘2.打印棋盘3.布置雷4.排查雷5.game()函数具体实现 五.游戏运行实操六.全部码源 前言 C语言实现扫雷是对基础代码能力的考察。通过本篇文章你将学会如何制作出扫雷坚持一段时间的复习相信你肯定能够掌握扫雷 文末附三子棋全部代码. 扫雷游戏网页版 - Minesweeper 一.游戏规则 设计游戏前先了解三子棋基本规则以围绕规则用C语言实现 一个扫雷盘面由许多方格cell组成方格中随机分布着一定数量的雷mine一个格子中至多只有1雷。胜利条件是打开所有安全格非雷格safe cell失败条件是打开了一个雷格踩雷。 二.所需文件 扫雷并不是一项容易的代码需要我们进行分文件编写。 什么是分文件编写 就是把我们的程序代码划分成多个文件这样就不会把所有的代码都放在main.c里面采用分模块的编程思想进行功能划分把每个功能不一样的单独放在一个c文件里然后写头文件把它封装成可调用的一个函数在主函数调用这个封装好的函数编译的时候一起编译即可 ✌好处 a.功能责任划分 b.方便调试 c.主程序简洁 来让给我们看看具体操作如下 头文件中创建game.h ----用来声明函数 源文件中创建game.c—函数具体实现 / test.c—主题流程 三.创建菜单 先创建一个菜单以展示进入退出游戏功能 void menu() {printf(**********************\n);printf(****** 1.play ******\n);printf(****** 0.exit ******\n);printf(**********************\n); }用do…while循环实现菜单使用switch语句进行菜单选择 int main() {int input 0;do{menu();printf(请输入选项);scanf(%d, input);switch (input){case 1:game();break;case 0:printf(退出游戏\n);break;default:printf(选择错误重新选择\n);break;}} while (input);return 0; }四.游戏核心内容实现 这里我们简化游戏设置一个9*9的棋盘安置10个雷。 排查过程如下 1.如果这个位置是雷那么游戏结束。 2.如果把不是雷的位置都找出来了那么游戏结束。 3.如果这个位置不是雷就计算这个位置的周围的8个格子有几个雷并显示出雷的个数。 game函数中实现整个游戏先数组棋盘 1.创建棋盘 先创建数组两个数组为区别设置雷为1和统计雷个数为1做区分 图一”1“为雷mine 图二”1“为雷的个数(show) char mine[ROWS][COLS] { 0 };char show[ROWS][COLS] { 0 };注由于行列频繁使用在game.h中宏定义 #define ROW 9 #define COL 9#define ROWS ROW 2 #define COLS COL 2在game.h文件中声明创建棋盘函数 //初始化棋盘 void InitBoard(char board[ROWS][COLS], int rows, int cols, char set);在game.c文件中实现初始化棋盘函数 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;}} }在test.c文件中实现调用 InitBoard(mine, ROWS, COLS, 0); InitBoard(show, ROWS, COLS, *);2.打印棋盘 在game.h中声明打印棋盘函数 //打印棋盘 void DisplayBoard(char board[ROWS][COLS], int row, int col);在game.c中实现打印棋盘函数 void DisplayBoard(char board[ROWS][COLS], int row, int col) {int i 0;int j 0;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 , board[i][j]);}printf(\n);}printf(------------扫雷------------\n); }3.布置雷 在game.h中声明布置雷函数 //布置雷 void SetMine(char mine[ROWS][COLS], int row, int col);在game.c文件中实现布置雷函数设置随机雷数EASY_COUNT进入while循环每设置一个雷EASY_COUNT减一直到雷设置完毕跳出循环。为保证雷的随机性需生成随机坐标判断设置雷是否重复未重复设置雷”1“。 void SetMine(char board[ROWS][COLS], int row, int col) {int count EASY_COUNT;while (count){int x rand() % row 1;//x坐标为1-9int y rand() % col 1;//y坐标为1-9if (board[x][y] 0){board[x][y] 1;}count--;} }随机数在game.h中进行宏定义 #define EASY_COUNT 10调用rand()需要srand() srand((unsigned int)time(NULL));注包含头文件 #includestdlib.h—srand #includetime.h-----time 4.排查雷 在game.h文件中声明排查雷函数 //排查雷 void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS], int row, int col);在game.c中实现排查雷函数输入坐标↔️确保坐标在棋盘范围内否则重新输入判断棋盘范围内坐标是否重复输入未重复输入判断是否踩雷.若踩雷”很遗憾炸死“若没有统计周围雷个数用GetMineCount函数。放入while循环若雷没有排查完持续循环若被炸死跳出循环。若所有雷被排查出则排雷成功 void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS], int row, int col) {int x 0;int y 0;int win 0;while (win row*col - EASY_COUNT){printf(请输入排查坐标);scanf(%d %d, x, y);if (x 1 x row y 1 y col){if (show[x][y] ! *){printf(输入坐标重复请重新输入\n);}else if (mine[x][y] 1){printf(很遗憾你被炸死了\n);DisplayBoard(mine, ROW, COL);break;}else{//不是雷就统计x,y坐标周围有几个雷int c GetMineCount(mine, x, y);show[x][y] c 0;DisplayBoard(show, ROW, COL);win;}}else{printf(输入坐标错误请重新输入\n);}}if (win row * col - EASY_COUNT){printf(排雷成功\n);DisplayBoard(mine, ROW, COL);} }在game.c文件中实现统计雷个数函数,因为在排查雷函数内部不需在game.h文件中声明。因为坐标内输入的是字符‘0’所以统计出个坐标数‘1’之和减去‘0’及为周围雷数 int GetMineCount(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; }5.game()函数具体实现 1实现棋盘初始化2打印棋盘3设置棋盘雷数4排查雷 void game() {char mine[ROWS][COLS] { 0 };char show[ROWS][COLS] { 0 };InitBoard(mine, ROWS, COLS, 0);InitBoard(show, ROWS, COLS, *);DisplayBoard(show, ROW, COL);SetMine(mine, ROW, COL);FindMine(mine, show, ROW, COL); }五.游戏运行实操 出现菜单进行选择 选1进入游戏 输入坐标开始游戏 坐标重复重新输入 越界重新输入 踩雷炸死 选择0退出游戏 六.全部码源 test.c #define _CRT_SECURE_NO_WARNINGS 1 #includegame.h void menu() {printf(*************************\n);printf(******* 1. play ******\n);printf(******* 0. exit ******\n);printf(*************************\n); } void game() {char mine[ROWS][COLS] { 0 };char show[ROWS][COLS] { 0 };InitBoard(mine, ROWS, COLS, 0);InitBoard(show, ROWS, COLS, *);DisplayBoard(show, ROW, COL);SetMine(mine, ROW, COL);FindMine(mine, show, ROW, COL); } int main() {srand((unsigned int)time(NULL));int input 0;do{menu();printf(请输入选项);scanf(%d, input);switch (input){case 1:game();break;case 0:printf(退出游戏);break;default:printf(输入错误请重新输入);break;}} while (input);return 0; }game.c #define _CRT_SECURE_NO_WARNINGS 1 #includegame.hvoid 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(------------扫雷------------\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 , board[i][j]);}printf(\n);}printf(------------扫雷------------\n); }void SetMine(char board[ROWS][COLS], int row, int col) {int count EASY_COUNT;while (count){int x rand() % row 1;int y rand() % col 1;if (board[x][y] 0){board[x][y] 1;}count--;} }int GetMineCount(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;int win 0;while (win row*col - EASY_COUNT){printf(请输入排查坐标);scanf(%d %d, x, y);if (x 1 x row y 1 y col){if (show[x][y] ! *){printf(输入坐标重复请重新输入\n);}else if (mine[x][y] 1){printf(很遗憾你被炸死了\n);DisplayBoard(mine, ROW, COL);break;}else{//不是雷就统计x,y坐标周围有几个雷int c GetMineCount(mine, x, y);show[x][y] c 0;DisplayBoard(show, ROW, COL);win;}}else{printf(输入坐标错误请重新输入\n);}}if (win row * col - EASY_COUNT){printf(排雷成功\n);DisplayBoard(mine, ROW, COL);} }game.h #pragma once #includestdio.h #includestdlib.h #includetime.h#define ROW 9 #define COL 9#define ROWS ROW 2 #define COLS COL 2#define EASY_COUNT 10//初始化棋盘 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 mine[ROWS][COLS], int row, int col);//排查雷 void FindMine(char mine[ROWS][COLS],char show[ROWS][COLS], int row, int col);本次扫雷学习告一段落扫雷详解完整代码反复阅读坚持打码相信你在不久的将来就会拿下扫雷以扩展更高级代码。期待下次作品与大家见面
http://www.dnsts.com.cn/news/148163.html

相关文章:

  • 怎么做淘宝客网站做淘客用php做网站出现的问题
  • 网站建设速成班培训北京哪个网站制作公司
  • 三亚网站建设介绍搜索引擎是网站提供的搜索服务吗
  • 哪个公司的网站制作网站建设 在电商的作用
  • 做网站要用写接口那个网站学做披萨比较好
  • 免费的行情软件网站下载返佣贵金属交易所网站建设
  • 吉林响应式网站建设WordPress链接公众号插件
  • 简单门户网站开发wordpress自定义类型的分类名称
  • 什么是html5网站深圳建站公司设计深业集团
  • 网站开发 招聘 龙岩指定关键字 网站有更新就提醒
  • 互诺 外贸网站建设wordpress建站案例
  • 学院网站建设优化设计四年级语文下册答案
  • seo网站怎么建设沈阳网站建设专家
  • 网站备案通讯地址国外建站数据
  • 重庆网站建设招聘信息软件合集
  • 体验好的网站长沙房价2023年最新房价
  • 有机生态农业网站模板你访问的网站正在建设
  • 哪里网站可以做微信头像WordPress怎么加入用户关注
  • wordpress教程网主题抖音seo查询工具
  • 建设电子商务网站需要什么设备餐饮品牌全案策划公司
  • 上海哪家做网站关键词排名外贸玩具网站
  • 网站开发资金来源网站怎么做镜像
  • 雄安建站服务正在建设的网站
  • 制作手机端网站运营网站
  • 郑州外贸网站建设商家网站中的分享怎么做
  • 网站下载图标深圳宝安seo外包
  • 做网站被骗五千多营销型网站建设xywlcn
  • 郑州计算机网站公司外贸网站做纸尿裤怎么样
  • 网站风格优势百度爱采购服务商查询
  • 做微信充值网站wordpress怎样添加轮播图