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");
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_44895666/article/details/106769631