C++马里奥(附代码)

这个代码要在linux环境下运行,过几天在上windows的 ,请大家多多支持,谢谢!好,话不多说,上代码!

#include <termio.h>
#include <unistd.h>
#include <bits/stdc++.h>
using namespace std;
int row,line,answer,row2,line2,point=0;
time_t start=0,finish=0;
bool secret=false;
char a[80][80]=
{
	{'*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*'},
	{'*',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*'},
	{'*',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*'},
	{'*',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*'},
	{'*',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*'},
	{'*',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*'},
	{'*',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*'},
	{'*',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*'},
	{'*',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*'},
	{'*',' ','5','5','5',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','5','5','5',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*'},
	{'*',' ','5','5','5',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','5','5','5',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','*'},
	{'*',' ','5','5','5','6',' ','6',' ','6',' ','6','6',' ',' ','6',' ','6',' ','6','6',' ','6',' ','6',' ','6',' ','6','5','5','5',' ',' ',' ','6','6','6',' ',' ',' ','6','6','6','6','6','6','6',' ',' ',' ','6','6','6',' ',' ','6',' ','*'},
	{'*',' ','4','4','4','4',' ','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4','4',' ','*'},
	{'*',' ','3','3','3','3',' ','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3',' ','*'},
	{'*','1','3','3','3','3',' ','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','3','2','*'},
	{'*','*','*','*','*','*','l','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*'},
	{' ',' ',' ',' ',' ','*',' ',' ',' ',' ','s','e','c','r','e','t',' ',' ',' ','c','o','i','n','*',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
	{' ',' ',' ',' ',' ','*',' ',' ',' ',' ',' ',' ','i','+','p',' ',' ',' ','i','+','i','+','o','*',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
	{' ',' ',' ',' ',' ','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*','*',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
};
int getch(void)
{
    struct termios oldt,newt;
    int ch;
    tcgetattr( STDIN_FILENO, &oldt );
    newt = oldt;
    newt.c_lflag &= ~( ICANON | ECHO );
    tcsetattr( STDIN_FILENO, TCSANOW, &newt );
    ch = getchar();
    tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
    return ch;
}
void PrintScreen()
{
	srand(time(NULL));
	if(answer==1)
	{
		cout<<"\033[2J\033[0m";
		cout<<"\033[100A\033[0m";
		for(int i=0;i<=15;i++)
		{
			for(int j=0;j<=70;j++)
			{
				if(a[i][j]=='1')
				{
					cout<<"\033[31m*\033[0m";
					row=i,line=j;
				}
				else
					if(a[i][j]=='2')
					{
						cout<<"\033[32m*\033[0m";
						row2=i,line2=j;
					}
					else
						if(a[i][j]=='3')
						{
							
							int draw=rand()%8;
							if(draw==1)
								a[i][j]='*',cout<<"*";
							else
								a[i][j]=' ',cout<<" ";
						}
						else
							if(a[i][j]=='4')
							{
								a[i][j]=' ',cout<<" ";
							}
							else
								if(a[i][j]=='5')
									cout<<"\033[93m*\033[0m";
								else
									if(a[i][j]=='l')
										cout<<'*';
									else
										if(a[i][j]=='6')
										{
											a[i][j]=' ',cout<<" ";
										}
										else
											cout<<a[i][j];
			}
			cout<<endl;
		}
		cout<<"______________________________________________________________________________________________"<<endl<<"左:a  右:d  下:s  大跳:w  小跳:q  超大跳:e  二段跳:ww  神秘技能1:?+?  神秘技能2:?+?+?"<<endl;	
	}
	if(answer==2)
	{
		cout<<"\033[2J\033[0m";
		cout<<"\033[100A\033[0m";
		for(int i=0;i<=15;i++)
		{
			for(int j=0;j<=70;j++)
			{
				if(a[i][j]=='1')
				{
					cout<<"\033[31m*\033[0m";
					row=i,line=j;
				}
				else
					if(a[i][j]=='2')
					{
						cout<<"\033[32m*\033[0m";
						row2=i,line2=j;
					}
					else
						if(a[i][j]=='3')
						{
							int draw=rand()%5;
							if(draw==1)
								a[i][j]='*',cout<<"*";
							else
								a[i][j]=' ',cout<<" ";
						}
						else
							if(a[i][j]=='4')
							{
								a[i][j]=' ',cout<<" ";
							}
							else
								if(a[i][j]=='5')
									cout<<"\033[93m*\033[0m";
								else
									if(a[i][j]=='l')
										cout<<'*';
									else
										if(a[i][j]=='6')
										{
											a[i][j]=' ',cout<<" ";
										}
										else
											cout<<a[i][j];
			}
			cout<<endl;
		}
		cout<<"______________________________________________________________________________________________"<<endl<<"左:a  右:d  下:s  大跳:w  小跳:q  超大跳:e  二段跳:ww  神秘技能1:?+?  神秘技能2:?+?+?"<<endl;	
	}
	if(answer==3)
	{
		cout<<"\033[2J\033[0m";
		cout<<"\033[100A\033[0m";
		for(int i=0;i<=15;i++)
		{
			for(int j=0;j<=70;j++)
			{
				if(a[i][j]=='1')
				{
					cout<<"\033[31m*\033[0m";
					row=i,line=j;
				}
				else
					if(a[i][j]=='2')
					{
						cout<<"\033[32m*\033[0m";
						row2=i,line2=j;
					}
					else
						if(a[i][j]=='3')
						{
							
							int draw=rand()%4;
							if(draw==1)
								a[i][j]='*',cout<<"*";
							else
								a[i][j]=' ',cout<<" ";
						}
						else
							if(a[i][j]=='4')
							{
								int draw2=rand()%8;
								if(draw2==1)
									a[i][j]='*',cout<<"*";
								else
									a[i][j]=' ',cout<<" ";
							}
							else
								if(a[i][j]=='5')
									cout<<"\033[93m*\033[0m";
								else
									if(a[i][j]=='l')
										cout<<'*';
									else
										if(a[i][j]=='6')
										{
											a[i][j]=' ',cout<<" ";
										}
										else
											cout<<a[i][j];
			}
			cout<<endl;
		}
		cout<<"______________________________________________________________________________________________"<<endl<<"左:a  右:d  下:s  大跳:w  小跳:q  超大跳:e  二段跳:ww  神秘技能1:?+?  神秘技能2:?+?+?"<<endl;
	}
	if(answer==4)
	{
		cout<<"\033[2J\033[0m";
		cout<<"\033[100A\033[0m";
		for(int i=0;i<=15;i++)
		{
			for(int j=0;j<=70;j++)
			{
				if(a[i][j]=='1')
				{
					cout<<"\033[31m*\033[0m";
					row=i,line=j;
				}
				else
					if(a[i][j]=='2')
					{
						cout<<"\033[32m*\033[0m";
						row2=i,line2=j;
					}
					else
						if(a[i][j]=='3')
						{
							
							int draw=rand()%3;
							if(draw==1)
								a[i][j]='*',cout<<"*";
							else
								a[i][j]=' ',cout<<" ";
						}
						else
							if(a[i][j]=='4')
							{
								int draw2=rand()%5;
								if(draw2==1)
									a[i][j]='*',cout<<"*";
								else
									a[i][j]=' ',cout<<" ";
							}
							else
								if(a[i][j]=='5')
									cout<<"\033[93m*\033[0m";
								else
									if(a[i][j]=='l')
										cout<<'*';
									else
										if(a[i][j]=='6')
										{
											a[i][j]=' ',cout<<" ";
										}
										else
											cout<<a[i][j];
			}
			cout<<endl;
		}
		cout<<"______________________________________________________________________________________________"<<endl<<"左:a  右:d  下:s  大跳:w  小跳:q  超大跳:e  二段跳:ww  神秘技能1:?+?  神秘技能2:?+?+?"<<endl;	
	}
	if(answer==5)
	{
		cout<<"\033[2J\033[0m";
		cout<<"\033[100A\033[0m";
		for(int i=0;i<=15;i++)
		{
			for(int j=0;j<=70;j++)
			{
				if(a[i][j]=='1')
				{
					cout<<"\033[31m*\033[0m";
					row=i,line=j;
				}
				else
					if(a[i][j]=='2')
					{
						cout<<"\033[32m*\033[0m";
						row2=i,line2=j;
					}
					else
						if(a[i][j]=='3')
						{
							
							int draw=rand()%3;
							if(draw==1)
								a[i][j]='*',cout<<"*";
							else
								a[i][j]=' ',cout<<" ";
						}
						else
							if(a[i][j]=='4')
							{
								int draw2=rand()%5;
								if(draw2==1)
									a[i][j]='*',cout<<"*";
								else
									a[i][j]=' ',cout<<" ";
							}
							else
								if(a[i][j]=='5')
									cout<<"\033[93m*\033[0m";
								else
									if(a[i][j]=='l')
										cout<<'*';
									else
										if(a[i][j]=='6')
										{
											int pll=rand()%2;
											if(pll==1)
												a[i][j]='*',cout<<'*';
											else
												a[i][j]=' ',cout<<' ';	
										}
										else
											cout<<a[i][j];
			}
			cout<<endl;
		}
		cout<<"______________________________________________________________________________________________"<<endl<<"左:a  右:d  下:s  大跳:w  小跳:q  超大跳:e  二段跳:ww  神秘技能1:?+?  神秘技能2:?+?+?"<<endl;	
	}
}
void PlayDrawEasy()
{
	cout<<"\033[2J\033[0m";
	cout<<"\033[100A\033[0m";
	for(int i=0;i<=15;i++)
	{
		for(int j=0;j<=70;j++)
		{
			if(a[i][j]=='1')
			{
				cout<<"\033[31m*\033[0m";
			}
			else
				if(a[i][j]=='2')
				{
					cout<<"\033[32m*\033[0m";
				}
				else
					if(a[i][j]=='5')
						cout<<"\033[93m*\033[0m";
					else
						if(a[i][j]=='l')
							cout<<'*';
						else
							cout<<a[i][j];
		}
		cout<<endl;
	}
	if(secret==true)
	{
		for(int i=16;i<=18;i++)
		{
			for(int j=0;j<=70;j++)
				if(a[i][j]=='1')
					cout<<"\033[31m*\033[0m";
				else
					cout<<a[i][j];
			cout<<endl;
		}
		if(row<15)
			secret=false;
	}
	cout<<"______________________________________________________________________________________________"<<endl<<"左:a  右:d  下:s  大跳:w  小跳:q  超大跳:e  二段跳:ww  神秘技能1:?+?  神秘技能2:?+?+?"<<endl;
}
void Menu()
{
	cin>>answer;
	if(answer>5||answer<1)
	{
		cout<<"非法输入,请重新输入:";
		Menu();
	}
}
void fall()
{
	while(a[row+1][line]==' '||a[row+1][line]=='2'||a[row+1][line]=='5')
	{
		a[row+1][line]='1';
		a[row][line]=' ';
		row=row+1;
	}
	PlayDrawEasy();
}
void Play()
{
	start=time(NULL);
	while(a[row2][line2]=='2')
	{
		char k=getch();
		if(k=='s')
		{
			if(a[row+1][line]!='*')
			{
				if(a[row+1][line]=='l')
				{
					secret=true;
					a[row+2][line]='1';
					a[row][line]=' ';
					row=row+2;
					fall();
				}
				else
				{
					a[row+1][line]='1';
					a[row][line]=' ';
					row=row+1;
					fall();
				}
			}
		}
		if(k=='a')
		{
			if(a[row][line-1]!='*')
			{
				a[row][line-1]='1';
				a[row][line]=' ';
				line=line-1;
				fall();
			}
		}
		if(k=='d')
		{
			if(a[row][line+1]!='*')
			{
				a[row][line+1]='1';
				a[row][line]=' ';
				line=line+1;
				fall();
			}
		}
		if(k=='w')
		{
			if(a[row-2][line]!='*')
			{
				a[row-2][line]='1';
				a[row][line]=' ';
				row=row-2;
				PlayDrawEasy();
				a[row][line]=' ';
				if(getch()=='a')
				{
					if(a[row][line-1]!='*')
					{
						a[row][line-1]='1';
						a[row][line]=' ';
						line=line-1;
					}
				}
				if(getch()=='d')
				{
					if(a[row][line+1]!='*')
					{
						a[row][line+1]='1';
						a[row][line]=' ';
						line=line+1;
					}
				}
				if(getch()=='w')
				{
					if(a[row-3][line]!='*')
					{
						a[row-3][line]='1';
						a[row][line]=' ';
						row=row-3;
						PlayDrawEasy();
						a[row][line]=' ';
						if(getch()=='a')
						{
							if(a[row][line-1]!='*')
							{
								a[row][line-1]='1';
								a[row][line]=' ';
								line=line-1;
							}
						}
						if(getch()=='d')
						{
							if(a[row][line+1]!='*')
							{
								a[row][line+1]='1';
								a[row][line]=' ';
								line=line+1;
							}
						}
						if(getch()=='s')
						{
							if(a[row+1][line]!='*')
							{
								a[row+1][line]='1';
								a[row][line]=' ';
								row=row+1;
							}
						}
						sleep(0.5);
						a[row][line]=' ';
					}
				}
				if(getch()=='s')
				{
					if(a[row+1][line]!='*')
					{
						a[row+1][line]='1';
						a[row][line]=' ';
						row=row+1;
					}
				}
				sleep(0.5);
				a[row][line]=' ';
				fall();
			}
		}
		if(k=='q')
		{
			if(a[row-1][line]!='*')
			{
				a[row-1][line]='1';
				a[row][line]=' ';
				row=row-1;
				PlayDrawEasy();
				a[row][line]=' ';
				if(getch()=='a')
				{
					if(a[row][line-1]!='*')
					{
						a[row][line-1]='1';
						a[row][line]=' ';
						line=line-1;
					}
				}
				if(getch()=='d')
				{
					if(a[row][line+1]!='*')
					{
						a[row][line+1]='1';
						a[row][line]=' ';
						line=line+1;
					}
				}
				sleep(0.5);
				a[row][line]=' ';
				fall();
			}
		}
		if(k=='e')
		{
			if(a[row-3][line]!='*')
			{
				a[row-3][line]='1';
				a[row][line]=' ';
				row=row-3;
				PlayDrawEasy();
				a[row][line]=' ';
				if(getch()=='a')
				{
					if(a[row][line-1]!='*')
					{
						a[row][line-1]='1';
						a[row][line]=' ';
						line=line-1;
					}
				}
				if(getch()=='d')
				{
					if(a[row][line+1]!='*')
					{
						a[row][line+1]='1';
						a[row][line]=' ';
						line=line+1;
					}
				}
				sleep(0.5);
				a[row][line]=' ';
				fall();
			}
		}
		if(k=='i')
		{
			if(getch()=='p')
			{
				for(int i=1;i<=14;i++)
					for(int j=1;j<=line2;j++)
						if(a[i][j]=='*')
							a[i][j]=' ';
				PlayDrawEasy();
			}
			if(getch()=='o')
			{
				for(int i=1;i<=14;i++)
					for(int j=1;j<=line2;j++)
						if(a[i][j]=='5')
							a[i][j]=' ';
				PlayDrawEasy();
			}
		}
	}
	finish=time(NULL);
}
void Opening()
{
	cout<<"\033[2J\033[100A\033[0m";
	cout<<"简单:1"<<endl<<"中等:2"<<endl<<"困难:3"<<endl<<"地狱:4"<<endl<<"无敌:5"<<endl;
}
void Point()
{
	int rev=0;
	for(int i=1;i<=15;i++)
		for(int j=1;j<=70;j++)
			if(a[i][j]=='5')
				rev++;
	point=18-rev;
	cout<<"金币数量:"<<point<<endl;
	
}
void GameTime()
{
	if((finish-start)/60<10)
		if((finish-start)%60>=10)
			cout<<"时间:"<<'0'<<(finish-start)/60<<":"<<(finish-start)%60<<endl;
		else
			cout<<"时间:"<<'0'<<(finish-start)/60<<":0"<<(finish-start)%60<<endl;
	else
		if((finish-start)%60>=10)
			cout<<"时间:"<<(finish-start)/60<<":"<<(finish-start)%60<<endl;
		else
			cout<<"时间:"<<(finish-start)/60<<":0"<<(finish-start)%60<<endl;
}
void Game()
{
	Opening();
	Menu();
	PrintScreen();
	Play();
	Point();
	GameTime();
}
int main()
{
	Game();
}

### 回答1: 超级马里奥源代码是指超级马里奥游戏程序中的代码部分,包括游戏的核心逻辑、图形渲染、音效播放、输入输出、存档管理等方面的代码实现。这些代码通常是由游戏开发者所编写,用于控制游戏的运行和玩家的操作。 对于程序员来说,掌握超级马里奥源代码可以提高他们的编程技能和实现能力,同时也有助于他们了解游戏编程的基础知识和原理。对于游戏开发者来说,使用超级马里奥源代码可以作为开发游戏的参考,帮助他们设计和实现自己的游戏核心逻辑。 但需要注意的是,超级马里奥源代码是由任天堂公司所拥有和保护的知识产权,未经授权不得擅自使用或修改。同时,也需要遵守相关的知识产权法律法规,不侵犯任何相关权益。 ### 回答2: 超级马里奥是一款由任天堂公司于1985年推出的经典游戏,已经成为了游戏史上的经典之一。它的源代码由任天堂公司开发,不对外公开。 由于源代码是游戏开发的核心文件,是游戏规则、场景、角色等一切元素的基础,因此任天堂公司保护它的知识产权,不会公开放出。 超级马里奥的成功离不开其精良的设计和经典的游戏玩法,它不仅是一款经典的平台类冒险游戏,还是游戏史上最受欢迎的游戏之一。它的流畅操作、丰富多彩的场景设计、可爱的角色塑造都深受玩家喜爱。尽管无法查看其源代码,但游戏厂商和开发者依然可以从超级马里奥的设计理念、玩法习惯等方面汲取灵感,创造更多优秀的游戏作品。 总之,超级马里奥是一款无与伦比的经典游戏,其源代码已由任天堂公司保护,但是由于它在游戏开发史上的重要地位,它永远都会是很多游戏开发者的灵感源泉和学习参考。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值