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;

}

相关推荐
bkspiderx30 分钟前
从零开始:VS Code搭建C/C++开发环境全指南(Windows/macOS/Linux)
c语言·c++·windows·vs code·c/c++开发环境
wuyk55540 分钟前
第 6 章 FOC 完整系统整合:从算法到真机跑起来
c语言·开发语言·stm32·单片机·嵌入式硬件
luj_176844 分钟前
元设计的诱惑与现实
c语言·开发语言·c++·经验分享·算法
小星星闪亮登场1 小时前
ST表--倍增思想
开发语言·数据结构·c++·算法·思维
AC赳赳老秦1 小时前
OpenClaw 多源采集公开行业数据:从原始信息到研究报告初稿的自动化实践
java·c语言·c++·python·php·deepseek·openclaw
马可家的菠萝1 小时前
Vue3 + Canvas 手绘笔记工程化实践:别把画布只当成一张 PNG
前端·vue.js·算法
watersink1 小时前
机器学习极大似然估计与EM算法
人工智能·算法·机器学习
叠层归一研究院1 小时前
如何用程序搭建一个 AGI 种子系统(一):从向量种子到无限生长引擎
人工智能·python·算法·机器学习·agi
科学实验家2 小时前
并 查集
算法
AI服务老曹2 小时前
视觉算法模型管理性能优化指南:多版本平滑升级、灰度与快速回滚实战
算法·性能优化