字母迷宫游戏

这是一个可以锻炼眼力的小游戏,通过对英文字母的顺序判断来操控“wasd”移动并走到终点的c语言小游戏。

以下是游戏的代码流程。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
#include<conio.h>

//可自定义游戏地图大小,行列最大均不超过50.
#define HANG 12
#define LIE 12

//场地打印
void print(char arr[HANG][LIE], char art[HANG][LIE], int hang, int lie);

//玩家移动
void move(char arr[HANG][LIE], char art[HANG][LIE], int hang, int lie);

//打印地图
void print_1(char arr[HANG][LIE], int hang, int lie);

//以上是对于游戏中的函数以及头文件声明。
//这里是游戏的主要流程。

#define _CRT_SECURE_NO_WARNINGS
#include"游戏声明.h"
void caidan()
{
	printf("---【1】开始游戏---\n");
	printf("---【0】退出游戏---\n");
}
void game()
{
	char arr[HANG][LIE] = { '0' };
	char art[HANG][LIE] = { '0' };
	print(arr,art,HANG,LIE);
	move(arr, art,HANG, LIE);

}
int main()
{
	srand((unsigned)time(NULL));
	int tap = 0;
	do
	{
		caidan();
		scanf("%zu", &tap);
		switch (tap)
		{
		case 1:
			{
				game();
				break;
			}
		case 2:
			{
				printf("---好的,已成功退出游戏---\n");
				break;
			}
		defoult:
			{
				printf("菜单输入错误\n");
				break;
			}
		}
	}
	while (tap);
	return 0;
}
//以下是整个游戏的函数的具体实现过程。

#define _CRT_SECURE_NO_WARNINGS
#include"游戏声明.h"
void print(char arr[HANG][LIE], char art[HANG][LIE],int hang, int lie)
{
	printf("这是一个用来熟练英文字母顺序的游戏\n\n");
	Sleep(2000);
	printf("下边是一个迷宫,玩家需要按字母顺序(A~Z)走出迷宫\n\n");
	Sleep(2000);
	printf("玩家为‘#’玩家足迹同为‘#’,出口为‘*’\n\n");
	Sleep(2000);
	printf("上下左右对应w a s d,点击q重新开始\n\n");
	Sleep(2000);
	printf("游戏地图\n\n");
	Sleep(1000);
	int i = 0;int j = 0;
	arr[0][0] = '#';arr[hang-1][lie-1] = '*';
	art[0][0] = '#';art[hang - 1][lie - 1] = '*';
	for (i = 0;i < hang; i++)
	{
		for (j = 0;j < lie; j++)
		{
			if (arr[i][j] != '#' && arr[i][j] != '*')
			{
				arr[i][j] =91;
			}
		}
	}
	for (i = 0;i < hang-((hang/2)+(hang/3)); i++)
	{
		for (j = 0;j < lie - ((lie / 2) + (lie / 3)); j++)
		{
			if (arr[i][j] != '#' && arr[i][j] != '*')
			{
				e:{
					int a = rand() % 70;
					if (a >= 65)
					{
						arr[i][j] = a;
					}
					else
					{
						goto e;
					}
				}
			}
		}
	}
	for (i = 0;i < hang - ((hang / 2) + (hang / 6)); i++)
	{
		for (j = 0;j < lie - ((lie / 2) + (lie / 6)); j++)
		{
			if (arr[i][j] != '#' && arr[i][j] != '*'&&arr[i][j]>69)
			{
			a:
				{
					int a = rand() % 75;
					if (a >69)
					{
						arr[i][j] = a;
					}
					else
					{
						goto a;
					}
				}
			}
		}
	}
	for (i =0;i < hang - (hang / 2); i++)
	{
		for (j = 0;j < lie - (lie / 2); j++)
		{
			if (arr[i][j] != '#' && arr[i][j] != '*'&&arr[i][j]>74)
			{
			b:
				{
					int a = rand() % 80;
					if (a > 74)
					{
						arr[i][j] = a;
					}
					else
					{
						goto b;
					}
				}
			}
		}
	}
	for (i = 0;i < hang - (hang / 4); i++)
	{
		for (j = 0;j < lie - (lie / 4); j++)
		{
			if (arr[i][j] != '#' && arr[i][j] != '*'&&arr[i][j]>79)
			{
			c:
				{
					int a = rand() % 85;
					if (a > 79)
					{
						arr[i][j] = a;
					}
					else
					{
						goto c;
					}
				}
			}
		}
	}
	for (i = 0;i < hang; i++)
	{
		for (j = 0;j < lie; j++)
		{
			if (arr[i][j] != '#' && arr[i][j] != '*'&&arr[i][j]>84)
			{
			d:
				{
					int a = rand() % 91;
					if (a > 84)
					{
						arr[i][j] = a;
					}
					else
					{
						goto d;
					}
				}
			}
		}
	}
	for (i = 0;i < hang; i++)
	{
		for (j = 0;j < lie; j++)
		{
			if (art[i][j] != '#' && art[i][j] != '*')
			{
				art[i][j] = arr[i][j];
			}
		}
	}
	for (i = 0;i < hang;i++)
	{
		for (j = 0;j < lie;j++)
		{
			printf("[%c]", arr[i][j]);
		}
		printf("\n");
	}
}
void print_1(char arr[HANG][LIE], int hang, int lie)
{
	int i = 0;int j = 0;
	printf("\n\n");
	for (i = 0;i < hang;i++)
	{
		for (j = 0;j < lie;j++)
		{
			printf("[%c]", arr[i][j]);
		}
		printf("\n");
	}
}
void move(char arr[HANG][LIE], char art[HANG][LIE], int hang, int lie)
{
	int a = 0;int b = 0;
	while (1)
	{
		if (_kbhit())
		{
			char input = _getch();
			switch (input)
			{
			case 'w':
			{
				a -= 1;
				if (a>= 0)
				{
					if (arr[a][b] == '*')
					{
						printf("获胜\n");
						goto a;
					}
					if (art[a+1][b] < art[a][b])
					{
						arr[a][b] = '#';
						print_1(arr, hang, lie);
					}
					else
					{
						printf("走错啦!");
						a += 1;
					}
				}
				else
				{
					printf("越界\n");
					a += 1;
				}
				break;
			}
			case 'a':
			{
				b -= 1;
				if (b >= 0)
				{
					if (arr[a][b] == '*')
					{
						printf("获胜\n");
						goto a;
					}
					if (art[a][b+1] < art[a][b])
					{
						arr[a][b] = '#';
						print_1(arr, hang, lie);
					}
					else
					{
						printf("走错啦!");
						b += 1;
					}
				}
				else
				{
					printf("越界\n");
					b += 1;
				}
				break;
			}
			case 's':
			{
				a += 1;
				if (a <= hang-1)
				{
					if (arr[a][b] == '*')
					{
						printf("获胜\n");
						goto a;
					}
					if (art[a-1][b] < art[a][b])
					{
						arr[a][b] = '#';
						print_1(arr, hang, lie);
					}
					else
					{
						printf("走错啦!");
						a -= 1;
					}
				}
				else
				{
					printf("越界\n");
					a -= 1;
				}
				break;
			}
			case 'd':
			{
				b += 1;
				if (b <= lie-1)
				{
					if (arr[a][b] == '*')
					{
						printf("获胜\n");
						goto a;

					}
					if (art[a][b - 1] < art[a][b])
					{
						arr[a][b] = '#';
						print_1(arr, hang, lie);
					}
					else
					{
						printf("走错啦!");
						b -= 1;
					}
				}
				else
				{
					printf("越界\n");
					b -= 1;
				}
				break;
			}
			case 'q':
			{
				printf("好的,已重新开始\n");
				goto a;
			}
			}
		}
	}
a: {}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值