c语言排雷游戏(基础版9*9)

先看xue_c1.内容,在对着自定义函数名去test.c查找具体函数,最后看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_COUNT 10//简单版本为10个雷

//函数声明

//棋盘初始化

void InitBoard(char boardROWSCOLS, int r, int c,char set);

//菜单

void menu();

//布置雷

void SetMine(char mineROWSCOLS, int r, int c);

//打印棋盘

void DisplayBoard(char boardROWSCOLS,int r,int c);

//排查雷

void FindMine(char mineROWSCOLS, char showROWSCOLS, int r, int c);

//排查出该坐标周围雷的个数

int GetMine(char mineROWSCOLS, int x, int y);

#define _CRT_SECURE_NO_WARNINGS 1

#include"game.h"

//test.c(自定义函数具体内容)

//菜单

void menu()

{

printf("********************\n");

printf("*****1.开始游戏*****\n");

printf("*****0.退出游戏*****\n");

printf("********************\n");

}

//棋盘初始化

void InitBoard(char boardROWSCOLS, int r, int c,char set)

{

int i = 0;

for (i = 0; i < r; i++)

{

int j = 0;

for (j = 0; j < c; j++)

{

boardij = set;

}

}

}

//随机布置10个雷

void SetMine(char mineROWSCOLS,int r,int c)

{

int cound = EASY_COUNT;

while (cound)//cound设置为10,则if语句必须成立10次,才能输出0,结束while循环(表示该循环至少循环10次以上)

{

int x = rand() % r + 1;//每调用一次rand(),就会重新生成一个随机数

int y = rand() % c + 1;

if (minexy == '0')

{

minexy = '1';

cound--;

}

}

}

//打印棋盘

void DisplayBoard(char boardROWSCOLS, int r, int c)

{

printf("----------扫雷----------\n");

int i = 0;

for (i = 0; i <= r; i++)

{

printf("%d ", i);

}//目的是打印一行0~9的一个坐标显示,方便玩

printf("\n");

for (i = 1; i <= r; i++)

{

printf("%d ", i);//打印棋盘的第一列打印1~9的数字

int j = 0;

for (j = 1; j <= c; j++)

{

printf("%c ", boardij);//这里要为%c,因为打印的是字符类型

}

printf("\n");

}

}

//统计一下该坐标周围有几个雷

static int GetMine(char mineROWSCOLS, int x, int y)//static修饰全局变量,让该函数只能在本文件使用

{

/*return minexy + 1 + minexy - 1 + minex - 1y + minex - 1y - 1 +

minex - 1y + 1 + minex + 1y + minex + 1y - 1 + minex + 1y + 1 - 8*'0';*///这种方法是返回一个整型

//优化一下

int i = 0;

int j = 0;

int c = 0;

for (i = -1; i <= 1; i++)

{

for (j = -1; j <= 1; j++)

{

if (minex + iy + j == '1')

c++;

}

}

return c;

}

//排查雷

void FindMine(char mineROWSCOLS, char showROWSCOLS, int r, int c)

{

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 <= r && y >= 1 && y <= c)

{

//判断是否为雷

if (minexy == '0')

{

if (showxy == '*')

{

//统计一下该坐标周围有几个雷

int c = GetMine(mine, x, y);

showxy = c + '0';//输入整型c;

DisplayBoard(show, ROW, COL);

win++;

}

else

printf("该坐标已被排查,请重新输入:");

}

else if (minexy == '1')

{

printf("该坐标为雷,你被炸嘎了\n");

DisplayBoard(mine, ROW, COL);//打印出布置好雷的坐标

break;

}

}

else

printf("输入坐标错误,请重新输入\n");

}

if (win == (ROW * COL - EASY_COUNT))

{

printf("恭喜你,排雷成功,你就是排雷天才\n");

DisplayBoard(mine, ROW, COL);

}

}

//xue_c1.c(整个游戏测试运行的总流程)

#define _CRT_SECURE_NO_WARNINGS 1

#include"game.h"

//数组和函数实践;扫雷游戏

void game()

{

//完成扫雷游戏

char mineROWSCOLS = { 0 };//定义,存放好布置雷的信息

char showROWSCOLS = { 0 };//定义,存放排查出雷的信息

//棋盘初始化

//mine数组初始化全为0

//show数组初始化全为*

InitBoard(mine, ROWS, COLS,'0');//这里一定要打双引号,因为输出的是字符类型,不是整型,不然打印结果为48

InitBoard(show, ROWS, COLS,'*');

//布置10个雷

SetMine(mine,ROW,COL);

//打印棋盘

//DisplayBoard(mine, ROW, COL);//布置雷的一个演示

DisplayBoard(show, ROW, COL);

//排查雷

FindMine(mine, show, ROW, COL);

//统计一下该坐标周围有几个雷

//GetMine(mine, ROW, COL);

}

int main()

{

int i = 0;

srand((unsigned int)time(NULL));//生成一个随机数为rand(),头文件有stdlib.h,time.h

do

{

menu();//菜单

printf("请输入:");

scanf("%d", &i);

switch (i)

{

case 1:

{

game();//进入玩游戏

break;

}

case 0:

{

printf("退出游戏");

break;

}

default:

{

printf("输入错误,请重新输入:\n");

break;

}

}

} while (i);

return 0;

}

相关推荐
lhbweilai32 分钟前
分析FreeRTOS内核对象API的源码实现(四)
c语言·stm32·单片机
inrichtt4 小时前
第八课时:SPI总线揭秘:四线全双工通信的奥
c语言·数据结构·stm32·单片机·嵌入式硬件
HPtiger4 小时前
数据结构——选择排序
数据结构·算法·排序算法
康实训4 小时前
老年评估仿真实训平台架构设计与老年人能力评估实训室教学落地实践
大数据·人工智能·算法·实训室·实训室建设
河南花仙子科技4 小时前
古镇非遗小游戏如何传播传统文化
游戏
DongQiShanRen5 小时前
六根硬件映射(四):归属澄清、两处不一致与卷十一总表
开发语言·人工智能·算法·rust·哈希算法·集成学习
CCblandy5 小时前
雪花 ID 四个边界实测:时钟回拨重号 500 个,前端 JSON.parse 直接丢精度
后端·python·算法·性能优化·架构
丑梨数据5 小时前
信创环境里跑文档工具:格式兼容与本地合规的几个坑
数据结构·人工智能·算法·决策树·排序算法
erzong2317 小时前
Linux操作系统:线程概念与控制
linux·算法
wuminyu7 小时前
JMM学习总结:深入理解happens-before关系
java·linux·c语言·jvm·c++