扫雷代码解析(动图版)

创建文件

创建三个文件俩个源文件,一个头文件
源文件test.c(用来实现游戏函数的)
源文件game.c(也用来实现游戏函数)
头文件game.h(用来声明函数)

为什么用两个test.c文件呢?
原因:多个.c文件利于代码的重复利用、模块化编程,保持每个文件中代码不过长,利于调试,可分段优化编译等

请添加图片描述

万能游戏菜单模板

在这里插入图片描述

代码图片演示
请添加图片描述

test.c(测试游戏函数)

void menu()
{
   
    printf("**********************************\n");
    printf("***********1.play*****************\n");
    printf("***********0.exit*****************\n");
    printf("**********************************\n");

}

int main()
{
   
	int input; //定义一个整型变量用来存放用户输入的值
    while (1)   //while(1)意思为死循环
    {
   
        menu();  // 进入菜单界面
        printf("请选择:");   //让用户选择
        scanf("%d", &input); //用户进行选择
        switch (input) // 判断用户的选择满足下列哪个条件
        {
   
        case 1:  
            printf("扫雷游戏:\n");
            game();
            break;// 若用户选择1,打印出扫雷游戏字样,并进入game()游戏函数,当游戏结束后,break自动跳出while(1)循环
        case 0: 
            printf("退出菜单");
            break;  //用户输入0,则退出菜单 ,并跳出break
        default:// 当用户选择不是0和1,告诉用户输入有误,并让他重新输入
            printf("输入错误请重新输入:");
        }
    return 0}

game.c(实现游戏函数)

#include"game.h"

game.h(用来声明函数)

#include<stdio.h>

创建游戏

代码图片演示
请添加图片描述

test.c(源代码的基础上加上

void game()
{
   
	char board[ROWS][COLS] = {
    0 };//***第一个数组用来放雷***
	char mine[ROWS][COLS] = {
    0 };***//第二个数组用来找雷***
}

game.c(无)


game.h(用来声明函数的)

#define ROW 9      //**由于是9x9的棋盘,我们要建立一个11x11的二维数组**
#define COL 9     // **防止最边上的坐标在计算周围雷个数的时候发生越界,**
#define COLS COL+2 //**也就是说我们建立一个11x11的二维数组,但实际只用到9个**
#define ROWS ROW+2

游戏赋值

按照什么赋值?

我们规定:0代表没有雷,1代表有雷,当用户选择完之后我们应显示一张棋盘且不能让用户看到我们的雷布置在哪,所以我们用*来给雷“穿上外套”。像下图这样用户选择完后,看不到哪里是雷

在这里插入图片描述

代码图片演示
在这里插入图片描述

test.c (void game)

Itnboard(board, ROWS, COLS, '0');
Itnboard(mine, ROWS, COLS, '*'); 

game.c

Itnboard(char board[ROWS][COLS], int rows, int cols, char set)
{
   
	int i;
	int j
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值