iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++实现简易版扫雷游戏
  • 691
分享到

C++实现简易版扫雷游戏

2024-04-02 19:04:59 691人浏览 泡泡鱼
摘要

目录一、菜单栏二、创建棋盘数组三、初始化棋盘四、打印棋盘五、布置雷六、排查雷七、全部代码总结一、菜单栏 1.先用printf函数制作一个简易版的菜单,并附上选项提示,玩游戏或者退出游

一、菜单栏

1.先用printf函数制作一个简易版的菜单,并附上选项提示,玩游戏或者退出游戏

2.为了使玩家能选择玩或者不玩游戏,则采用do while循环比较合适,同时,借助switch case语句来进行选择

 3.玩游戏的那个选项,只需调用game()函数即可

二、创建棋盘数组

为了便于修改棋盘大小,所以采用宏定义的方式定义其行与列

由于有三个信息:放置雷的的信息,周围雷的信息,以及没有雷的信息,所以采用两个棋盘比较合适

又因为每排查一次雷,都得打印该排查坐标周围八个坐标有几个雷的信息,所以为了防止数组越界,从而采用比该棋盘大一圈的棋盘,但是最外面一圈不放置雷

三、初始化棋盘

因为显示棋盘和放置雷的棋盘都需要初始化,为了使两个棋盘调用同一个初始化函数,所以采取多传一个参数的方法

四、打印棋盘

为了排查雷时,能够使棋盘间分割,从而更加清晰,所以最上面和最下面都各打印一个分割行

为了便于游戏玩家找到想要排查的坐标,所以将其行与列的提示打印

 

打印棋盘时,最外边一圈不需要打印,所以数组下标从1开始即可

五、布置雷

因为想让雷的个数便于更改,所以采用宏定义的方式更好

由于布置雷的个数不止一个,所以必然得采用循环的方式来进行

同时,为了使布置的雷具有随机性,那么就需要采用随机函数和时间戳来进行,time和rand函数,另外使用rand函数的同时,需要调用srand函数

随机数具有不确定性,所以需要将其%上棋盘(不包括最外层)的行与列,再+1,才能限制其范围为布置雷的范围或排查雷的范围

 

六、排查雷

排查的坐标是有范围限制的,所以输入错误时,需要给予提示

排雷涉及多次排查,所以得采用循环

如果排查雷时踩到雷,则这局游戏也就结束了,就该跳出循环,并给予提示,同时打印棋盘,让玩家输的明白点儿

如果此次排查雷成功,那就需打印此坐标周围八个坐标有雷的个数

由于雷的个数采用整数,而'1' - '0' = 1,所以每个坐标的数都要-‘0’,如下图

 然后,把此数返回给show棋盘数组,同时打印show棋盘数组

同时,show棋盘数组是浮点型,所以需该整数+‘0’再赋值给show棋盘数组

 当排查的坐标只有有雷的坐标没有打印时,就表示玩家赢了,即定义一个变量,每排查一个雷就+1,当其等于棋盘(不包括最外层)的坐标个数-雷的个数时,玩家就赢了

七、全部代码

//测试文件
#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];
	//初始化棋盘
	InitBoard(mine, ROWS, COLS, '0');
	InitBoard(show, ROWS, COLS, '*');
	//打印棋盘
	//DisplayBoard(mine, ROW, COL);
	DisplayBoard(show, ROW, COL);
	//布置雷
	SetMineBoard(mine, ROW, COL);
	//排查雷
	FindBoard(mine, show, ROW, COL);
}
int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	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;
}
//声明文件
#pragma once
#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_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 SetMineBoard(char board[ROWS][COLS], int row, int col);
//排查雷
void FindBoard(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col);
//定义文件
#include"game.h"
//初始化棋盘
void InitBoard(char board[ROWS][COLS], int rows, int cols, char set)
{
	int i = 0;
	for (i = 0; i < rows; i++)
	{
		int j = 0;
		for (j = 0; j < cols; j++)
		{
			board[i][j] = set;
		}
	}
}
 
//打印棋盘
void DisplayBoard(char board[ROWS][COLS], int row, int col)
{
	int i = 0;
	printf("--------------------------------\n");
	//行提示
	for (i = 0; i <= row; i++)
	{
		printf("%d ", i);
	}
	printf("\n");
	for (i = 1; i <= row; i++)
	{
		int j = 0;
		//列提示
		printf("%d ",i);
		for (j = 1; j <= col; j++)
		{
			printf("%c ", board[i][j]);
		}
		printf("\n");
	}
	printf("--------------------------------\n");
}
 
//布置雷
void SetMineBoard(char board[ROWS][COLS], int row, int col)
{
	int x = 0;
	int y = 0;
	int count = 0;//已经布置雷的个数
	while (count < EASY_COUNT)
	{
		x = rand() % row + 1;
		y = rand() % col + 1;
		if (board[x][y] == '0')
		{
			board[x][y] = '1';
			count++;
		}
	}
}
 
int GetMineBoard(char board[ROWS][COLS], int x, int y)
{
	return (board[x - 1][y - 1] + board[x - 1][y] + board[x - 1][y + 1]
		+ board[x][y - 1] + board[x][y + 1]
		+ board[x + 1][y - 1] + board[x + 1][y] + board[x + 1][y + 1] - 8 * '0');
}
//排查雷
void FindBoard(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 <= col && y >= 1 && y <= col)
		{
			if (mine[x][y] == '1')
			{
				printf("很遗憾,你被炸死了\n");
				DisplayBoard(mine, ROW, COL);
				break;
			}
			else
			{
				show[x][y] = GetMineBoard(mine, x, y) + '0';
				DisplayBoard(show, ROW, COL);
				win++;
			}
		}
		else
		{
			printf("坐标非法,请重新输入\n");
		}
	}
	if (win == row * col - EASY_COUNT)
	{
		printf("恭喜您,排雷成功!\n");
		DisplayBoard(mine, ROW, COL);
	}
}

总结

到此这篇关于c++实现简易版扫雷游戏的文章就介绍到这了,更多相关C++扫雷内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++实现简易版扫雷游戏

本文链接: https://www.lsjlt.com/news/162456.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++实现简易版扫雷游戏
    目录一、菜单栏二、创建棋盘数组三、初始化棋盘四、打印棋盘五、布置雷六、排查雷七、全部代码总结一、菜单栏 1.先用printf函数制作一个简易版的菜单,并附上选项提示,玩游戏或者退出游...
    99+
    2022-11-12
  • C语言实现简易版扫雷游戏
    本文实例为大家分享了C语言实现扫雷游戏的具体代码,供大家参考,具体内容如下 这个小项目源自两个月前学数组的时候,由于觉得比较重要,想记录一下。 首先,大概的思路是要做出两个二维数组充...
    99+
    2022-11-12
  • C语言怎么实现简易版扫雷游戏
    这篇文章将为大家详细讲解有关C语言怎么实现简易版扫雷游戏,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C语言是什么C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发,使用C语言可以以简易...
    99+
    2023-06-14
  • C语言实现简易的扫雷游戏
    本文实例为大家分享了C语言实现简易的扫雷游戏的具体代码,供大家参考,具体内容如下 在正式讲内容之前先说一说扫雷游戏的规则 游戏规则很简单,点击方格,如果是地雷,游戏失败,找到所有地...
    99+
    2022-11-12
  • C语言简易实现扫雷小游戏
    本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 经典扫雷游戏规则: 当玩家点击游戏区域,该处周围的八个位置有几个雷(如果是角落则是周边三个位置雷的个数,...
    99+
    2022-11-12
  • C语言实现简易扫雷游戏详解
    本文实例为大家分享了C语言实现简易扫雷游戏的具体代码,供大家参考,具体内容如下 一、想要达到的游戏功能: 大家如果想编写一个游戏,应具备以下的步骤: 1:了解游戏的规则 2:&nbs...
    99+
    2022-11-12
  • C语言实现简易的扫雷小游戏
    这是一个用C语言实现的控制台扫雷小游戏,实现了随机布置炸弹、扫描炸弹、标记炸弹、百分百第一次不被炸死等功能。 编译器:vs2015 功能模块图 源代码 #include<st...
    99+
    2022-11-13
  • 基于C语言实现简易扫雷游戏
    本文实例为大家分享了C语言实现简易扫雷游戏的具体代码,供大家参考,具体内容如下 1、头文件 #define _CRT_SECURE_NO_WARNINGS //包含头文件 #incl...
    99+
    2022-11-12
  • C语言如何实现简易扫雷游戏
    这篇文章主要介绍C语言如何实现简易扫雷游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体内容如下一、想要达到的游戏功能:大家如果想编写一个游戏,应具备以下的步骤:了解游戏的规则   知道游戏应...
    99+
    2023-06-20
  • C语言如何实现简易的扫雷游戏
    这篇文章给大家分享的是有关C语言如何实现简易的扫雷游戏的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下在正式讲内容之前先说一说扫雷游戏的规则游戏规则很简单,点击方格,如果是地雷,游戏失败,找到所有地雷游...
    99+
    2023-06-25
  • 基于C语言实现简易的扫雷游戏
    对于C语言学习者来说,在完成C语言初级学习之后,扫雷游戏是一个很好的知识的总结和练习。 扫雷即在一个棋盘中,随机放入一定数量的雷,玩家通过输入坐标,得到坐标上的信息(以此点为中心四周...
    99+
    2022-11-13
  • C语言实现扫雷小游戏简单版
    本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 在vs2019创建新项目,然后添加两个源文件test.c和game.c,接着创建一个头文件game.h。...
    99+
    2022-11-12
  • C语言版简单扫雷游戏
    本文实例为大家分享了C语言版的简单扫雷游戏,供大家参考,具体内容如下 思想 我们在设计的时候,首先将其分为三个部分,分别为头文件game.h游戏界面及主要实现的功能函数部分test....
    99+
    2022-11-12
  • 利用java开发简易版扫雷游戏
    目录1.简介2.编写过程3.游戏运行逻辑4.游戏相关数据存储与读取5.游戏代码5.1 第一版5.2 第二版5.3 第三版6.部分代码思路6.1 生成随机的地雷坐标6.2 测试地雷生成...
    99+
    2022-11-12
  • 如何使用C语言实现简易扫雷游戏
    这篇文章主要介绍了如何使用C语言实现简易扫雷游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、头文件#define _CRT_SECURE_NO_WARNING...
    99+
    2023-06-26
  • 基于C语言如何实现简易的扫雷游戏
    这篇文章主要讲解了“基于C语言如何实现简易的扫雷游戏”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“基于C语言如何实现简易的扫雷游戏”吧!扫雷即在一个棋盘中,随机放入一定数量的雷,玩家通过输入...
    99+
    2023-06-30
  • C#实现扫雷游戏
    目录一、实验目的:二、实验要求:三、实验内容:四、实验源代码:五、实验结果:六、总结本文实例为大家分享了C#实现扫雷游戏的具体代码,供大家参考,具体内容如下 一、实验目的: 1、掌握...
    99+
    2022-11-13
  • C语言版扫雷游戏
    本文实例为大家分享了C语言版扫雷游戏的具体代码,供大家参考,具体内容如下 1、思路 一、创建二维数组,来表示地图 每一个格子要表示的信息: 1、未翻开状态(草地)和已翻开状态(...
    99+
    2022-11-12
  • C语言实现扫雷算法简易版
    扫雷分析 从小到大你或许没玩过但一定听过的游戏——扫雷 首先我们来分一下“扫雷”的功能 这是一个简单难度的扫雷,从外观上,我们可以发现可供用户操作的棋盘范围是9×9的范围,也就是我...
    99+
    2022-11-12
  • C语言扫雷游戏的简单实现
    今天来用c语言做一个扫雷功能的简单实现,首先创建一个test.c来用于在写代码的途中测试扫雷代码,game.h来存放实现扫雷函数需要用到的头文件,game.c来存放最终的成品。 首先...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作