初识C语言~第七节:扫雷游戏

1.分析和设计

1.1 扫雷游戏基本功能

通过控制台实现扫雷游戏,游戏可以通过菜单实现游戏的开始和退出。

扫雷游戏的棋盘默认为9x9的大小,共有10个雷,通过输入坐标排查雷,若坐标非雷,显示坐标周围一圈雷的个数,否则游戏结束,将所有非雷的坐标排查出来,则排雷成功,游戏结束。

1.2 分析和设计

1.创建11x11的数组存储棋盘信息

棋盘大小为9x9,因为排查时访问周围一圈的信息,为了方便,不妨设置11x11的数组,仅显示9x9

的棋盘。

2.创建两个棋盘,使棋盘的符号易于改变,且不易混淆

棋盘一:显示给玩家的棋盘。棋盘由符号‘*’组成,并在棋盘的上方和左方打印0~9的数字,方便玩家确定坐标。

棋盘二:显示给电脑的棋盘。棋盘由符号‘1’和‘0’组成,0表示非雷,1表示雷。电脑根据玩家输入的坐标,访问棋盘二的信息,并给出相应的信息。

3.利用random函数设置雷

4.实现电脑排查雷

2.代码实现

为使代码简洁明了,将函数的声明,函数的实现和游戏的测试分别在三个文件中实现:

game.h:函数的声明;game.c:函数的实现;test.c:游戏的测试,同时game.c和test.c文件引用game.h文件,避免重复。

2.1 game.h

在game.h中写入要实现的函数声明:

#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 10 
//初始化棋盘
void setboard(char mine[ROWS][COLS], int row, int col, char c);
//设置雷
void setmine(char show[ROWS][COLS], int row, int col,int d);
//显示棋盘
void Reveal(char show[ROWS][COLS], int row, int col);
//数坐标一圈的雷的个数
int Countmine(char mine[ROWS][COLS], int x, int y);
//接受玩家输入的坐标,进行反馈
void Play(char mine[ROWS][COLS], char show[ROWS][COLS], int row, int col,int d);

2.2 game.c

game.c中实现函数功能:

初始化棋盘setboard:

接受4个参数,第一个参数作为要初始化的棋盘,第二、三个用rows和cols限制棋盘大小,第四个参数表示坐标处初始的符号

设置雷setmine:

使用random和srand函数设置随机的雷的坐标,并加入if确保雷的个数

显示棋盘Reveal:

游玩play:接收玩家输入的坐标,并利用数雷函数给予反馈

数雷countmine:根据玩家输入的坐标,确定其周围一圈的雷的个数

总的game.c文件:

2.3 test.c

test.c文件:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值