C语言“小迷宫游戏”

       之前学习C语言时为了提高学习兴趣,根据网上的迷宫游戏改编而成的,具体改编的内容有每关卡间都加入的关卡提示页面(包括关卡的提示,通关的搞笑提示),同时我对没关的地图都进行了大改。地图更加多元。

大家可以根据我注释所对应的功能进行修改,感受修改项目的快乐。

//2023-1-08 上午2小时,晚上9点多到凌晨2点!
//2023-1-09 上午11点课后到下午两点半,没吃午饭------谨记艰辛,加油少年 !
//■■■■■■■■■
#include <cstdio>
#include <conio.h>
#include <Windows.h>
#include <stdio.h>  

char a[50][50]={"■0 ■■■■■■■■■■■■■■■■■",
				"##         #■$$    ■■■■      ■■",
				"■  ■■■       &  ■     @@  ■&& ■",
				" #  ■■■ #  ■ #    *  ■■ *■   ■",
				"■      ■■      ■■ #    ^   ■  ■",  
				"## #■ #■■■■#             ■■  ■",
				"#^ ■  ■      ■ # ■■■ #    ^ 终点",
				"■   ^    #■      ■■     %%    ^^  ",
			    "■■  ■##■■■■■■■##     ■    #",};
				 
				  
char b[50][50]={"                      ",
				"0 #######^^####### #^#",
				"   嘿嘿    ^   666   #",
				"# ## ##  # #### ###  #",
 				"#     #^ #  ##   ##^ #",
				" # #^# #  # ## #     #",
				" # ### ## # #^*  0 % #",
				"   ###    #    #     #",
				"##     ^# ## % ^#^  ######",
				"########    #     #   终点",
				"##########################",};

char c[100][100]={"#######################",
			      "#0    ###   ###   #####",
				  "# # #     #     # #####",
				  "# # # # ######### #####",
			      "# ##### ###        ####",
				  "#  #   卡   ##### #####",
				  "# # # ### #######  ####",
				  "#   ##  # ##    #######",
				  "# #    ##    ## ###########",
				  "# # ### #  #### #   #  终点",
				  "###      #####    #   #####",
				  "#######################",};
				  
char d[100][100]={"#####################################################",
                  "##   ############################################   #",
				  "## # ##   #   #   #   #   #   #   #   #   #   ### # #",
				  "## # #  #   #   #   #   #   #   #   #   #   #  ## # #",
				  "#  # # #######################################  # # #",
				  "# ## # 终点     #   #   #   #   #   #   #   ##  # # #",       
				  "#  # # (    )##   #   #   #   #   #   #   #  #  # # #",
				  "## # # ##################################### # ## # #",
				  "#  # #   #   #   #   #   #   #   #   #   #   #  # # #",
				  "# ## # #   #   #   #   #   #   #   #   #   #  # # # #",
				  "#  # #########################################  # # #",
				  "## # #   #   #   #   #   #   #   #   #   #   # ## # #",
				  "#  #   #   #   #   #   #   #   #   #   #   #   ## # #",
				  "# ############################################### # #",
			      "#   #   #   #   #   #   #   #   #   #   #   #   # # #",
				  "###   #   #   #   #   #   #   #   #   #   #   #   #0#", 
	  			  "#####################################################",};


/*函数实现 
void gotoxy(int x,int y){
    COORD c;
    c.X=x;
    c.Y=y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}

int color(int c){
	//SetConsoleTextAttribute是API设置控制台窗口字体颜色和背景色的函数
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), c);		//更改文字颜色
	return 0;
} */
	
//没有此段代码会有光标闪动,可以把以下代码注销看一下光标闪动的效果			 				  				  
//定义隐藏光标函数
void Hide()
{
	CONSOLE_CURSOR_INFO cursor;    
	cursor.bVisible = FALSE;    
	cursor.dwSize = sizeof(cursor);    
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);    
	SetConsoleCursorInfo(handle, &cursor);
}		  

//设置光标到初始位置			
void Set()
{
	HANDLE hOut;
	COORD pos={0,0};
	hOut=GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleCursorPosition(hOut,pos);
}

//欢迎界面		  
void Welcome()
{
	printf("\n\n           走迷宫");
	printf("\n\n           第一关");
	printf("\n\n       提示;坐标(18,-7)");
	printf("\n\n        请按任意键开始"); 
	getch();
	system("cls");
}	


void gametwo() //欢迎界面 
{
	system("cls");
	printf("\n\n                     第二关"); 
	printf("\n\n          准备好了吗,眼见不一定为实!"); 
	printf("\n\n                请按任意键开始");			
	getch();			
	system("cls");			
}			
				  
void gamethree()
{
	system("cls");
	printf("\n\n       看不见你们玩,我都想笑"); 
	Sleep(1500); 
	printf("\n\n               第三关");
	printf("\n\n          请按任意键开始");			
	getch();			
	system("cls");			
}					

void gamefour()
{
	system("cls");
	printf("\n\n              第四关");
	printf("\n\n          这关真的很简单"); 
	printf("\n\n          请按任意键开始");			
	getch();			
	system("cls");			
}		

void egg()
{
	system("cls");
	printf("\n\n          you egg"); 
	printf("\n\n       请按任意键开始");			
	getch();			
	system("cls");	
	
	
}



int main()
{
	Hide();
	Welcome();
	int x=0,y=2;
	char ch;
	for(int i=0;i<=9;i++)
	    puts(a[i]);
    while(1)
    {
    	ch=getch();
    	if(ch=='s')  //下 
    	{
    		if(a[x+1][y]==' ')
    		{
				a[x][y]=' ';
	    		x++;
	    		a[x][y]='0';
	   		}
		}
		else if(ch=='w')  //上 
    	{	
		    if(a[x-1][y]==' ')
    		{
				a[x][y]=' ';
	    		x--;
	    		a[x][y]='0';
	   		}
    	}
    	
    	else if(ch=='a')  //左 
    	{	
		    if(a[x][y-1]==' ')
    		{
				a[x][y]=' ';
	    		y--;
	    		a[x][y]='0';
	   		}
    	}
    	else if(ch=='d')  //右 
    	{	
		    if(a[x][y+1]==' ')
    		{
				a[x][y]=' ';
	    		y++;
	    		a[x][y]='0';
	   		}
	   	}	 
	    Set();
	   	for(int i=0;i<=9;i++)
	 	    puts(a[i]);
	   		if(x==7 && y==18)
	   		    break;
    }
    printf("\n\n      you can carry me !");
    Sleep(500);
    printf("\n\n     今天的阳光甚是喧嚣!");
    Sleep(1500);
    gametwo();
    for(int i=0;i<=10;i++)
	 	puts(b[i]);
    x=4;y=7;
    while(500)
    {
    	ch=getch();
    	if(ch=='s')  //下 
    	{
    		if(b[x+1][y]==' ')
    		{
				b[x][y]=' ';
	    		x++;
	    		b[x][y]='^';
	   		}
		}
		else if(ch=='w')  //上 
    	{	
		    if(b[x-1][y]==' ')
    		{
				b[x][y]=' ';
	    		x--;
	    		b[x][y]='^';
	   		}
    	}
    	
    	else if(ch=='a')  //左 
    	{	
		    if(b[x][y-1]==' ')
    		{
				b[x][y]=' ';
	    		y--;
	    		b[x][y]='^';
	   		}
    	}
    	else if(ch=='d')  //右 
    	{	
		    if(b[x][y+1]==' ')
    		{
				b[x][y]=' ';
	    		y++;
	    		b[x][y]='6';
	   		}
	   	}	 
	    Set();
	   	for(int i=0;i<=10;i++)
	 	    puts(b[i]);
	   		if(x==9 && y==21)
	   		    break;
    }	
    printf("\n\n       不愧是你!");
    Sleep(500);
    printf("\n\n       给爷整笑了!");
    Sleep(1500);
    printf("\n\n       这个符号是^");
    Sleep(2000);
    gamethree();
    for(int i=0;i<=11;i++)
	 	puts(c[i]);
    x=1;y=1;
    while(1)
    {
    	ch=getch();
    	if(ch=='s')  //下 
    	{
    		if(c[x+1][y]==' ')
    		{
				c[x][y]=' ';
	    		x++;
	    		c[x][y]='*';
	   		}
		}
		else if(ch=='w')  //上 
    	{	
		    if(c[x-1][y]==' ')
    		{
				c[x][y]=' ';
	    		x--;
	    		c[x][y]=':';
	   		}
    	}
    	
    	else if(ch=='a')  //左 
    	{	
		    if(c[x][y-1]==' ')
    		{
				c[x][y]=' ';
	    		y--;
	    		c[x][y]='_';
	   		}
    	}
    	else if(ch=='d')  //右 
    	{	
		    if(c[x][y+1]==' ')
    		{
				c[x][y]=' ';
	    		y++;
	    		c[x][y]='.';
	   		}
	   	}	 
	    Set();
	   	for(int i=0;i<=11;i++)
	 	    puts(c[i]);
	   		if(x==9 && y==22)
	   		    break;	
    	}	
	    printf("我宇智波斑愿称,“你是真的闲!”");
	    Sleep(1500);
	    gamefour();
	    for(int i=0;i<=17;i++)
	    puts(d[i]);
	    x=15;y=51;
    while(1)
    {
    	ch=getch();
    	if(ch=='s')  //下 
    	{
    		if(d[x+1][y]==' ')
    		{
				d[x][y]=' ';
	    		x++;
	    		d[x][y]='0';
	   		}
		}
		else if(ch=='w')  //上 
    	{	
		    if(d[x-1][y]==' ')
    		{
				d[x][y]=' ';
	    		x--;
	    		d[x][y]='0';
	   		}
    	}
    	
    	else if(ch=='a')  //左 
    	{	
		    if(d[x][y-1]==' ')
    		{
				d[x][y]=' ';
	    		y--;
	    		d[x][y]='0';
	   		}
    	}
    	else if(ch=='d')  //右 
    	{	
		    if(d[x][y+1]==' ')
    		{
				d[x][y]=' ';
	    		y++;
	    		d[x][y]='0';
	   		}
	   	}	 
	    Set();
	   	for(int i=0;i<=17;i++)
	 	    puts(d[i]);
	   		if(x==6 && y==8)
	   		    break;
    }
    printf("\n\n          学编程是真的  掉头发 !");
    Sleep(1000);
    printf("\n\n       你这么努力,怎么会没有彩蛋!");
    Sleep(2500);
	egg();
	double x1,y1,a1;
	for(y1=1.5;y1>-1.5;y1-=0.1)
	{
		for(x1=-1.5;x1<1.5;x1+=0.05)
		{
			a1=x1*x1+y1*y1-1;
			putchar(a1*a1*a1-x1*x1*y1*y1*y1<=0.0?'*':' ');         
		}
		system("color 0c");
		putchar('\n');
	}
    printf("爽够了没有,一起起来学!");
    Sleep(3000);
    return 0;
	
	
		
} 		
		
	
	
	
	
	
   	
    	
    	
	
    
    
    
    
    
    
    
    
    
    
    
    
		

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值