C语言键盘控制走迷宫小游戏

在看了《啊哈C语言》之后想写一个游戏demo
游戏的截图
首先是启动界面
在这里插入图片描述
然后是初始化
在这里插入图片描述
接下来是键盘操控
在这里插入图片描述
地图的复杂度也很容易修改。
也支持退出。按s键选择退出游戏这个选项即可。
下面是源代码

#include <stdio.h>
#include <stdlib.h>

void startUp();
void gameInstructions();
void menu(char c);
void gameMap();

char map[6][6]={"######",
				"#o #  ",
				"# ## #",
				"#  # #",
				"##   #",
				"######"
				};


int main() {
	startUp();//游戏启动界面
	
	gameInstructions();//游戏说明 
	
	//显示菜单 
	printf("   ->  开始游戏\n");
	printf("       退出游戏\n");
	printf("按Enter进入游戏\n");
	char choose1;
	choose1 = getch();
	menu(choose1);
	
	//加载游戏地图
	gameMap();
	
	//玩家进行操作
	system("cls"); 
	int i,x,y,p,q,j;
	char ch;
	
	x=1;y=1;p=1;q=5;
	for(i=0;i<6;++i){
		printf("        ");
		for(j=0;j<6;++j){
			printf("%c  ",map[i][j]);
		}
		printf("\n");
	}
	while(x != p || y != q){
		ch = getch();
		
		if(ch == 's' || ch == 'S'){
			if(map[x+1][y] != '#'){
				map[x][y] = ' ';
				x++;
				map[x][y] = 'o';
			}else{
				printf("\a");
			}
		}
		
		if(ch == 'w' || ch == 'W'){
			if(map[x-1][y] != '#'){
				map[x][y] = ' ';
				x--;
				map[x][y] = 'o';
			}else{
				printf("\a");
			}
		}
		
		if(ch == 'a' || ch == 'A'){
			if(map[x][y-1] != '#'){
				map[x][y] = ' ';
				y--;
				map[x][y] = 'o';
			}else{
				printf("\a");
			}
		}
		
		if(ch == 'd' || ch == 'D'){
			if(map[x][y+1] != '#'){
				map[x][y] = ' ';
				y++;
				map[x][y] = 'o';
			}else{
				printf("\a");
			}
		}
		
		system("cls");
		for(i=0;i<6;++i){
			printf("        ");
			for(j=0;j<6;++j){
				printf("%c  ",map[i][j]);
			}
		printf("\n");
		}
	}
	system("cls");
	printf("You Win!\n");
	Sleep(3000); 
	return 0;
}

void startUp(){
	int i; 
	int circle = 2;
	for(i=0;i<circle;++i){
		system("cls"); 
		printf("        游戏正在加载");
		Sleep(500);
		system("cls"); 
		printf("        游戏正在加载.");
		Sleep(500);
		system("cls"); 
		printf("        游戏正在加载..");
		Sleep(500);
		system("cls"); 
		printf("        游戏正在加载...");
		Sleep(500);
	}
	system("cls"); 
	printf("        游戏加载完毕!\n");
	Sleep(1000); 
}

void gameInstructions(){
	printf("<---操作按键:[W][S][A][D]--->\n");
	printf("<---分别对应[上][下][左][右]--->\n");
	printf("<---注意使用英文输入法--->\n");
	Sleep(1000);
}

void menu(char c){
	system("cls");
	if(c == 'S' || c == 's'){
		printf("        游戏加载完毕!\n");
		printf("<---操作按键:[W][S][A][D]--->\n");
		printf("<---分别对应[上][下][左][右]--->\n");
		printf("       开始游戏\n");
		printf("   ->  退出游戏\n");
		printf("程序将在5s后关闭\n");
		int i = 0;
		for(i=0;i<5;++i){
			system("cls");
			printf("程序将在 %ds后关闭\n",5-i);
			Sleep(1000);
		} 
		exit(0);//退出程序 
	}else{
		printf("        游戏加载完毕!\n");
		printf("<---操作按键:[W][S][A][D]--->\n");
		printf("<---分别对应[上][下][左][右]--->\n");
		printf("   ->  开始游戏\n");
		printf("       退出游戏\n");
		printf("按Enter进入游戏\n");
		
	}
}

void gameMap(){
	system("cls");
	printf("---正在加载游戏地图---\n");
	
	int i, j;
	for(i=0;i<6;++i){
		printf("        ");
		for(j=0;j<6;++j){
			printf("%c  ",map[i][j]);
			Sleep(100);
		}
		printf("\n");
		Sleep(200);
	}
	
	system("cls");
	printf("---Part1---\n");
	for(i=0;i<6;++i){
		printf("        ");
		for(j=0;j<6;++j){
			printf("%c  ",map[i][j]);
		}
		printf("\n");
	}
}

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值