时间:2021-05-20
C/C++实现扫雷小游戏
源代码:
github:https://github.com/KamSss/C-Practice/tree/master/Minesweeper扫雷小游戏/Minesweeper扫雷
总体构造:
a.简易的游戏菜单逻辑
b.初始化棋盘
c.布置雷的位置
d.排雷、棋盘打印、判断输赢(难点)
a.简易的游戏菜单逻辑
简单的通过一个输入0和1实现判断是玩游戏还是退出游戏的逻辑
输入1则进入游戏
输入0则break退出游戏,且退出do…while循环,程序结束。
b.初始化棋盘
一、越界情况的考虑
为了减少边界情况可能出现越界访问的情况,把棋盘扩大一圈,但是在显示的时候只显示没扩大之前的棋盘。
二、棋盘打印的考虑
如果只使用一个二维数组,同时要记录雷的位置和每一个位置附近的雷数以及点击和未点击的位置显示显然不合适。
所以: 初始化两个棋盘,一个专门用来存放雷的位置,一个专门用于打印当前棋盘给玩家看。
初始化完,得到一个全0的雷盘,和一个全*的显示盘。
c.布置雷的位置
这里用随机数布置雷的位置,会不会对同一个点多次放雷呢?这里的解决办法是,如果当前随机到的位置已经有雷就再随机一个位置防雷。
void SetMine(char board[ROWS][COLS], int row, int col){ srand((unsigned int)time(NULL)); 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--; } }}d.排雷、棋盘打印、判断输赢(难点)d
排雷的逻辑判断:
如果没有雷如何打印棋盘呢?
扫雷应该做到,“点击”棋盘之后,一路“打开”到最近的出现雷的边界上。
如何判断输赢:
很简单,踩到雷 board[i][j] == 1
所有的雷都出现了 * == MineCount 就赢了
到此这篇关于C++实现扫雷游戏示例讲解的文章就介绍到这了,更多相关C++实现扫雷游戏内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C++程序开发实现扫雷游戏,供大家参考,具体内容如下//扫雷的类的定义#pragmaonceclassGame{public://开始游戏voidplay();
本文实例为大家分享了C++实现扫雷、排雷小游戏的具体代码,供大家参考,具体内容如下界面:游戏思想:扫雷游戏:1.随机给定雷点坐标2.判断每个点的雷情况3.由用户
本文实例为大家分享了C语言实现扫雷游戏的具体代码,供大家参考,具体内容如下功能设计扫雷大家应该都玩过,这是一个十分经典的游戏,今天我将给大家讲解如何用C语言实现
本文实例为大家分享了C语言扫雷游戏的具体代码,供大家参考,具体内容如下扫雷游戏的实现1.game.h模块代码实现如下:#define_CRT_SECURE_NO
本文实例为大家分享了C语言实现简单扫雷游戏的具体代码,供大家参考,具体内容如下前言扫雷游戏规则:1、踩过所有非雷格子即扫雷成功,踩到雷即游戏结束。2、点击方格,