这是一个可以锻炼眼力的小游戏,通过对英文字母的顺序判断来操控“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: {}
}