C语言编写小游戏----扫雷

目录

前言

一、实现游戏大致框架

打印选择菜单

二、框架实现

游戏实现

创建棋盘

 初始化框架

 打印棋盘

 植入地雷

 扫雷函数

实现用户操作棋盘展开

标记函数

三、完成代码

 game.h文件

game.c文件

test.c文件


前言

如何实现扫雷游戏?请看下文

代码思路:

计算机的扫雷游戏是将棋盘上所有非雷的坐标全部打开,就赢得了游戏,而在这途中不小心翻到雷,则游戏结束,需要重新开始

1.首先要在棋盘上随机植入雷

2.判断你翻开的坐标是否为雷,是雷,游戏结束需要重新开始,不是雷,则需要显示,翻开坐标附近是否有雷,有几个雷

3.根据条件2,当翻开的格子周围没有雷时,会展开一大片,直到附近有雷,并显示雷量后停止

一、实现游戏大致框架

创建三个文件game.h、game.c、test.c

game.h:存放函数、符号声明,使用game.h的函数、字符声明需要引用game.h文件

#include "game.h"

game.c:函数定义

test.c:游戏框架

打印选择菜单
void menu()
{
	printf("********************\n");
	printf("***** over : 0 *****\n");
	printf("***** play : 1 *****\n");
	printf("********************\n");
}

可以选择开始游戏或者结束游戏

具体实现:
                使用do while循环与switch语句 

void Test()
{
	int input = 0;
	srand((unsigned int)time(NULL));

	do
	{
		menu();//菜单选择
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)//选择是否玩游戏
		{
		case 0:
			printf("游戏结束!\n");
			break;
		case 1:
			game();//游戏制作
			break;
		default:
			printf("指令错误,请重新输入!!!\n");
			break;
		}

	} while (input);//循环游戏
}

int main()
{
	Test();//创建项目
	return;
}

二、框架实现

为了更好的实现游戏,我将为这个游戏设置两个棋盘,一个装雷(隐藏),一个为玩家操作棋盘(找雷等一些列操作在此面板实施),为了更好的创建并修改棋盘,我将棋盘大小用字符常量表示,装雷的棋盘要比用户操作的棋盘大2,这样表示的原因是很好的扫描坐标四周的雷数

以上图为例,翻开(9,9)坐标 ,扫描四周有没有雷,在棋盘9*9的情况下,肯定会越界访问,但是在装雷的棋盘上扩展一横一列,防止了坐标出现越界访问的情况,所有装雷的棋盘要比用户操作棋盘要大2

#define ROW 9
#define COL 9
#define ROWS ROW+2
#define COLS COL+2

游戏实现

创建棋盘
char mine[ROWS][COLS] = { 0 };//创建储存雷的框架
char show[ROWS][COLS] = { 0 };//创建用户操作界面
 初始化框架
InitBoard(mine, ROWS, COLS,'0');//初始化框架
InitBoard(show, ROWS, COLS, '*');//初始化框架

InitBoard()函数初始化棋盘,char set存储着初始化字符 ,想传什么样的字符直接传进去

void InitBoard(char board[ROWS][COLS], int row, int col, char set)
{
	int x = 0;
	int y = 0;

	for (x = 0; x < row; x++)
	{
		for (y = 0; y < col; y++)
		{
			board[x][y] = set;
		}
	}
}
 打印棋盘

ShowBoard()函数可以打印棋盘,改变棋盘大小可以直接更改头文件上的字符常量ROW,COL的值

ShowBoard(mine, ROW, COL);//打印框架
ShowBoard(show, ROW, COL);//打印框架
void ShowBoard(char board[ROWS][COLS], int row, int col)
{
	int x = 0;
	int y = 0;
	printf("------------------扫雷------------------\n");
	printf("    ");
	printf("|");
	for (x = 1; x <= col; x++)//打印外框坐标
	{
		printf(" %d ", x);
		printf("|");
	}
	printf("\n");
	for (y =
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值