栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言初阶-扫雷小游戏

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言初阶-扫雷小游戏

目录

★一.前言

★二.头文件-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语言实现哪些项目吗?

你的关注和点赞就是给作者最大的鼓励,感谢,笔芯!!

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/878950.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号