C++学习心得之扫雷游戏

2020-03-17 18:01:42丽君

本文实例为大家分享了C++实现扫雷游戏的具体代码,供大家参考,具体内容如下

一、序言

创建一个9*9有10个雷的扫雷游戏
文章的顺序是按照我当时的编程顺序写的,顺便写下我当初的一点思路,总的代码在文章最后,前面的都是分散的函数,有需要的朋友直接复制最后的

二、创建

创建一个头文件,一个放游戏的程序,一个放运行测试的程序

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdlib.h>//生成随机数
#include<stdio.h>
#include<time.h>//生成时间戳

#define ROW 9//行数
#define COL 9//列数
#define ROWS ROW+2
#define COLS COL+2
#define EASY 10//雷数

void InitBoard(char board[ROWS][COLS], int rows, int cols, char set);//初始函数
void DisplayBoard(char board[ROWS][COLS], int row, int col);//展示函数
void SetBoard(char board[ROWS][COLS], int row, int col);//造雷函数
void CheckBoard(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);//扫描函数

三、选择界面

进入游戏,可能出现情况三种,分别是退出,游戏和输入错误
也许有人一局完了还想玩,所以要设置循环,写完代码可以运行一下,避免最后出bug范围太大

#include"game.h"
void test()
{
 int input = 0;
 do
 {
 menu();
 printf("input choice:>");
 scanf("%d", &input);
 switch (input)
 {
 case 0:
 printf("overn");
 break;
 case 1:
 game();
 break;
 default:
 printf("input wrongn");
 break;
 }
 } while (input);
}
void menu()
{
 printf("*********************n");
 printf("******* 1.game ******n");
 printf("****** 0.over ******n");
 printf("*********************n");
}
int main()
{
 test();
 return 0;
}

四、游戏部分

1、声明变量和初始化

建立存储扫雷的元素的数组,这里咱们可以设置两个字符形数组,一个是标识着炸弹‘1'的mine数组,一个是用来给玩家展示的show数组
虽然是99的大小,但是在之后要由电脑扫描咱们选中点周围的区域,如果数组为9行9列,电脑在扫描最外面一行时就跟中间的部分不一样了,为了方便,咱们建立1111的数组

void game()
{
 srand((unsigned)time(NULL));//这里使用了time.h制造时间戳,以便随机生成数
 char mine[ROWS][COLS];
 char show[ROWS][COLS];
 InitBoard(mine, ROWS, COLS, '0');
 InitBoard(show, ROWS, COLS, '*');
 DisplayBoard(show, ROW, COL);
 SetBoard(mine, ROW, COL);
 CheckBoard(mine, show, ROW, COL);
}
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;
 }
 } 
}

2、展示函数

申明和定义好变量,肯定要让玩家看到游戏盘的变化情况才能玩,所以写一个展示函数
mine数组中炸弹用‘1'来表示,不是炸弹用‘0'表示,show数组中我们用‘*'表示一个区域,然后选中的点要是周围无炸弹,就是‘ ',否则就标识出周围的炸弹数。