目录
★一.前言
★二.头文件-game.h
★三.函数以及所需要变量的声明
★四.主函数Test的实现
★五.运行截图
★六.总结
★一.前言
大家好,C语言已经接近尾声,今天带大家自己动手做一个小游戏,扫雷小游戏,以已经学过的C语言代码实现,虽然说优化性并没有扫雷小游戏本身优化,但是基本的原理已经基本完全实现,好,废话不多说,咱们直接进入正题
★二.头文件-game.h
#pragma once
#include
#include
#include
#include
void menu();
//打印游戏菜单
void DiLei();
//开局放置十个雷
int Check();
//玩家选择排查雷
int Win();
//判断是否获得胜利
void Init();
//初始化扫雷布局
void print();
//打印游戏状态
在头文件中已经提到了游戏所需要的函数。
★三.函数以及所需要变量的声明
#include"game.h"
char DiLei1[9][9];//游戏开始前布置地雷
char Show[9][9];//玩家查询地雷,若为地雷则炸死,否则显示出周围地雷的数量
void menu()
{
printf("-------------------------------------n");
printf("-------------------------------------n");
printf("-------------1.开始游戏--------------n");
printf("-------------------------------------n");
printf("-------------------------------------n");
printf("-------------------------------------n");
printf("-------------2.退出游戏--------------n");
printf("-------------------------------------n");
}
void Init()
{
for (int i = 0;i < 9;i++)
{
for (int j = 0;j < 9;j++)
{
Show[i][j] = '*';
}
}
for (int i = 0;i < 9;i++)
{
for (int j = 0;j < 9;j++)
{
DiLei1[i][j] = '0';
}
}
}
void print()
{
for (int i = 0;i < 9;i++)
{
for (int j = 0;j < 9;j++)
{
printf("%c ", Show[i][j]);
}
printf("n");
}
}
void DiLei()
{
srand((unsigned int)time(NULL));
for (int i = 0;i < 10;i++)
{
int line = rand() % 9;
int row = rand() % 9;
if(DiLei1[line][row]!='1')
DiLei1[line][row] = { '1' };//1为雷,0不是雷
else
{
i--;
continue;
}
}
}
int Check()
{
int line, row,count=0;
printf("请输入您要排查的坐标n");
scanf("%d %d", &line, &row);
if (DiLei1[line - 1][row - 1] == '1')
count++;
if (DiLei1[line - 1][row] == '1')
count++;
if (DiLei1[line - 1][row + 1] =='1')
count++;
if (DiLei1[line][row - 1] == '1')
count++;
if (DiLei1[line][row + 1] == '1')
count++;
if (DiLei1[line +1][row - 1] == '1')
count++;
if (DiLei1[line +1][row] == '1')
count++;
if (DiLei1[line + 1][row + 1] == '1')
count++;
if (DiLei1[line][row] == '1')
{
printf("你已经被炸死n");
return 0;
}
else
{
Show[line][row] = count + 48;
}
print();
return 1;
}
int Win()
{
int count = 0;
for (int i = 0;i < 9;i++)
{
for (int j = 0;j < 9;j++)
{
if (Show[i][j] == '*')
count++;
}
}
if (count == 10)
{
printf("恭喜!你取得了游戏的胜利!n");
return 1;
}
return 0;
}
在判断是否扫的是雷的时候 ,我本人用了比较笨的方法,大家如果有比较好的方法可以尝试自己优化一下
★四.主函数Test的实现
#include"game.h"
int main()
{
int flag = 1;//定义信号量
Init();//游戏初始化
menu();//打印游戏菜单
int input;
scanf("%d", &input);
while (input&&flag)//flag=0则结束循环
{
switch (input)
{
case 1:
DiLei();//布置好地雷
print();
do
{
if (Check() == 0)//判断是否已经被炸死,被炸死则直接跳出
{
flag = 0;
break;
}
else
continue;
} while (Win() == 0);//判断是否获胜
break;
case 0:
printf("游戏已结束,欢迎您下次使用n");
default:
printf("您的输入有误,请重新输入!n");
scanf("%d", &input);
menu();
break;
}
}
return 0;
}
★五.运行截图
★六.总结
本程序都使用了最简单的C语言语法,你知道还可以用基础C语言实现哪些项目吗?
你的关注和点赞就是给作者最大的鼓励,感谢,笔芯!!



