c++簡易小遊戲

Mark_GXc發表於2020-12-31

一.小遊戲介紹

主角是一個出生在一個叫卡羅特的小鎮,小鎮的資源一天天流逝,直到今天,資源嚴重缺乏,主角作為勇士,不願看到大家一個一個被餓死,決定去地下城闖一闖。

二.小遊戲程式碼

#include<bits/stdc++.h>
#include<cstdlib>
#include<windows.h>
#include<conio.h>
#include<string>
using namespace std;
char  a[14][100]= {"| S小怪 M大怪 O入口 0你的位置 R小資源 H大資源 @傳送門 -道路 |道路 X回血|",
                   "|                                                                      |",
                   "|      |S-R-X|-H--M-S-R-S-S-H-M-X---|      |-X|-S--H-|                 |",
                   "|      M     |       |              |-S|R--|  |      |                 |",
                   "|      |     |-M--X--|H-R-|     |-S-|  |      |-M--H--|                |",
                   "|      S--R--|       |    |--M-R|      |-S|-X-|       |--@             |",
                   "| O0-|-----|R-M-S--|R-M-|--X--|S-S-M-|X-|-R-|-H-M-M---|                |",
                   "|      M--S|-|-X-R---|    |-|S-H|    |    |   |       |                |",
                   "|      S   |      |  |      |        |-X-|-M-|-H-|-MH-|                |",
                   "|      H   |-S--R-|-S--X-R--|-S-M--H-|       |        |                |",
                   "|      X   |                         |    |H-|X-H-H-M-|                |",
                   "|      R--M|S---H---M--M-X-|-S-M-R--S|-M-H|                            |",
                   "|                                                                      |"};
char  b[14][100]= {"| S小怪 M大怪 O入口 0你的位置 R小資源 H大資源 @傳送門 -道路 |道路 X回血|",
                   "|                                                                      |",
                   "|      |S-R-X|-H--M-S-R-S-S-H-M-X---|      |-X|-S--H-|                 |",
                   "|      M     |       |              |-S|R--|  |      |                 |",
                   "|      |     |-M--X--|H-R-|     |-S-|  |      |-M--H--|                |",
                   "|      S--R--|       |    |--M-R|      |-S|-X-|       M--@             |",
                   "| O0-|-----|R-M-S--|R-M-|--X--|S-S-M-|X-|-R-|-H-M-M-M-|                |",
                   "|      M--S|-|-X-R---|    |-|S-H|    |    |   |       |                |",
                   "|      S   |      |  |      |        |-X-|-M-|-H-|-MH-|                |",
                   "|      H   |-S--R-|-S--X-R--|-S-M--H-|       |        |                |",
                   "|      X   |                         |    |H-|X-H-H-M-|                |",
                   "|      R--M|S---H---M--M-X-|-S-M-R--S|-M-H|                            |",
                   "|                                                                      |"};
int c;        
int shang_hai=5;
int sheng_ming=5;
int sheng_ming_zhi=5;
int jb=10000;
string xing_ming;
int l,j;
void game_2();
void player_zi_liao();
void player();
void shop();
void zi_mu_1();
void q();
void game_1();
void s_1();
void shi_bai();
void da_guai();
void xiao_guai();
void xiao_ziyuan();
void da_ziyuan();
void hui_xue();
//S小怪 M大怪 O入口 0你的位置 R小資源 H大資源 @傳送門 -道路 |道路 X回血

void hui_xue()
{
	q();
	if(sheng_ming<sheng_ming_zhi)
	{
		sheng_ming++;
		cout<<"生命值加1";
	}
	else
	{
		cout<<"生命值已滿,回不了血";
	}
		Sleep(1000);
	q();
}

void xiao_ziyuan()
{
    q(); 
	cout<<"恭喜你獲得 金幣+2";
	jb+=2;
	Sleep(1000);
	q(); 
}

void da_ziyuan()
{
	q();
	cout<<"恭喜你獲得 金幣+5";
	jb+=5;
	Sleep(1000);
	q(); 
}

void da_guai()
{
	q();
	int bguai_xue;
	cout<<"即將跟大怪物戰鬥\n";
	bguai_xue=12;
	while(1)
	{
		if(sheng_ming<=0)
		{
			cout<<"你被大怪打死了";
				Sleep(1000);
			q();
			break;
		}
		if(bguai_xue<=0)
		{
		    cout<<"你打敗了大怪";
		    	Sleep(1000);
		    q();
			break;	
        }
        cout<<"\n1.攻擊 2.防禦(暫時獲得1血)\n";
        cout<<"請輸入:";
        cin>>c;
        if(c==1)
        {
        	bguai_xue-=shang_hai;
        	cout<<"\n成功造成攻擊\n";
        	Sleep(500);
        	cout<<"你受到傷害*5";
        	sheng_ming-=5;
		}
		if(c==2)
		{
			sheng_ming++;
			sheng_ming-=5;
		} 
		cout<<"\n你的生命:"<<sheng_ming;
		cout<<"\n怪物的生命:"<<bguai_xue; 
}
}

void xiao_guai()
{
	q();
	int sguai_xue;
	cout<<"即將跟小怪物戰鬥\n";
	sguai_xue=6;
	while(1)
	{
		if(sheng_ming<=0)
		{
			cout<<"你被小怪打死了";
				Sleep(1000);
			q();
			break;
		}
		if(sguai_xue<=0)
		{
		    cout<<"你打敗了小怪";
		    	Sleep(1000);
		    q();
			break;	
        }
        cout<<"\n1.攻擊 2.防禦(暫時獲得1血)\n";
        cout<<"請輸入:";
        cin>>c;
        if(c==1)
        {
        	sguai_xue-=shang_hai;
        	cout<<"\n成功造成攻擊\n";
        	Sleep(500);
        	cout<<"你受到傷害*5";
        	sheng_ming-=3;
		}
		if(c==2)
		{
			sheng_ming++;
			sheng_ming-=3;
		} 
		cout<<"\n你的生命:"<<sheng_ming;
		cout<<"\n怪物的生命:"<<sguai_xue; 
}
}

void s_1()
{
    cout<<"\t";
	cout<<"小鎮";
	Sleep(500);
	cout<<"1.0";
	Sleep(500);
	cout<<"地下城";
	Sleep(1000);
	q();
    zi_mu_1();
}

void player_zi_liao()
{
	q();
	cout<<"\n    名字:"<<xing_ming<<endl;
	cout<<"    金幣:"<<jb<<endl;
	cout<<"    傷害:"<<shang_hai<<endl;
	cout<<"    生命:"<<sheng_ming<<endl;
	Sleep(2000);
	game_1();
}

void player()
{
	q();
	cout<<"勇士,請輸入你的姓名:";
	cin>>xing_ming;
	game_1();
}

void q()
{
	system("cls");
}

void zi_mu_1()
{
	cout<<"卡羅特小鎮的資源一天天流逝,直到今天,資源嚴重缺乏,你身為勇士,不願看到大家一個一個被餓死,決定去地下城闖一闖\n";
	system("pause");
	q();
	player();
}

void game_1()
{
	q();
	cout<<"\n";
	cout<<"\t\t小鎮\n\n";
	cout<<"\t1.去地下城  2.鐵匠鋪  3.個人資料\n";
	cout<<"你選擇:";
	cin>>l;
	if(l==2)
	{
		shop();
	}
	if(l==3)
	{
		player_zi_liao();
	}
	if(l==1)
	{
		game_2();
	}
}

void shi_bai()
{
	q();
	cout<<"你死亡了(裝備不掉落)";
	Sleep(1000);
	q();
	game_1();
}



void game_2()
{
	q();
	int i,k;
	for(i=0;i<14;i++)
	for(k=0;k<100;k++)
	{
		a[i][k]=b[i][k];
	}
	int x=6,y=5; 
	for(i=0; i<=12; i++)
		cout<<a[i]<<endl;
	char ch;
	while(1) 
	{
		if(sheng_ming<=0)
		{
			shi_bai();
		}
		ch=getch();
		if(ch=='w')//S小怪 M大怪 O入口 0你的位置 R小資源 H大資源 @傳送門 -道路 |道路 X回血
		{
			if(a[x-1][y]=='-'||a[x-1][y]=='|'||a[x-1][y]=='R'||a[x-1][y]=='S'||a[x-1][y]=='M'||a[x-1][y]=='H'||a[x-1][y]=='X') 
			{
				if(a[x-1][y]=='H')
				{
					q();
					da_ziyuan();
					q();
				}
				if(a[x-1][y]=='R')
				{
					q();
					xiao_ziyuan();
					q();
				}
				if(a[x-1][y]=='S')
				{
					q();
					xiao_guai();
					q();
				}
				if(a[x-1][y]=='M')
				{
					q();
					da_guai();
				    q();
				}
				if(a[x-1][y]=='X')
				{
					q();
					hui_xue(); 
					q();
				}
				if(a[x+1][y]!=' '||a[x-1][y]!=' ')
				{
					a[x][y]='|';
				}
				else
				{
					a[x][y]='-';
				}
				x--;
				a[x][y]='0';
				q();
				for(i=0; i<=12; i++)
		cout<<a[i]<<endl;
			}
		}
		if(ch=='s')//S小怪 M大怪 O入口 0你的位置 R小資源 H大資源 @傳送門 -道路 |道路 X回血
		{
			if(a[x+1][y]=='-'||a[x+1][y]=='|'||a[x+1][y]=='R'||a[x+1][y]=='S'||a[x+1][y]=='M'||a[x+1][y]=='H'||a[x+1][y]=='X') 
			{
				if(a[x+1][y]=='H')
				{
					q();
					da_ziyuan();
					q();
				}
				if(a[x+1][y]=='R')
				{
					q();
					xiao_ziyuan();
					q();
				}
				if(a[x+1][y]=='S')
				{
					q();
					xiao_guai();
					q();
				}
				if(a[x+1][y]=='M')
				{
					q();
					da_guai();
				    q();
				}
				if(a[x+1][y]=='X')
				{
					q();
					hui_xue(); 
					q();
				}
				if(a[x+1][y]!=' '||a[x-1][y]!=' ')
				{
					a[x][y]='|';
				}
				else
				{
					a[x][y]='-';
				}
				x++;
				a[x][y]='0';
				q();
			for(i=0; i<=12; i++)
		cout<<a[i]<<endl;
			

			}
		}
		if(ch=='a')//S小怪 M大怪 O入口 0你的位置 R小資源 H大資源 @傳送門 -道路 |道路 X回血
		{
			if(a[x][y-1]=='-'||a[x][y-1]=='|'||a[x][y-1]=='R'||a[x][y-1]=='S'||a[x][y-1]=='M'||a[x][y-1]=='H'||a[x][y-1]=='X') 
			{
				if(a[x][y-1]=='H')
				{
					q();
					da_ziyuan();
					q();
				}
				if(a[x][y-1]=='R')
				{
					q();
					xiao_ziyuan();
					q();
				}
				if(a[x][y-1]=='S')
				{
					q();
					xiao_guai();
					q();
				}
				if(a[x][y-1]=='M')
				{
					q();
					da_guai();
				    q();
				}
				if(a[x][y-1]=='X')
				{
					q();
					hui_xue(); 
					q();
				}
				if(a[x][y+1]!=' '||a[x][y-1]!=' ')
				{
					a[x][y]='-';
				}
				else
				{
					a[x][y]='|';
				}
				y--;
				a[x][y]='0';
				q();
			for(i=0; i<=12; i++)
		cout<<a[i]<<endl;
			

			}
		}
		if(ch=='d')//S小怪 M大怪 O入口 0你的位置 R小資源 H大資源 @傳送門 -道路 |道路 X回血
		{
			if(a[x][y+1]=='-'||a[x][y+1]=='|'||a[x][y+1]=='R'||a[x][y+1]=='S'||a[x][y+1]=='M'||a[x][y+1]=='H'||a[x][y+1]=='X') 
			{
				if(a[x][y+1]=='H')
				{
					q();
					da_ziyuan();
					q();
				}
				if(a[x][y+1]=='R')
				{
					q();
					xiao_ziyuan();
					q();
				}
				if(a[x][y+1]=='S')
				{
					q();
					xiao_guai();
					q();
				}
				if(a[x][y+1]=='M')
				{
					q();
					da_guai();
				    q();
				}
				if(a[x][y+1]=='X')
				{
					q();
					hui_xue(); 
					q();
				}
				if(a[x][y+1]!=' '||a[x][y+1]!=' ')
				{
					a[x][y]='-';
				}
				else
				{
					a[x][y]='|';
				}
				y++;
				a[x][y]='0';
				q();
				for(i=0; i<=12; i++)
		cout<<a[i]<<endl;
			

			}
		}
}
}


void shop()
{
	q();
	cout<<"歡迎光臨!\n";
	cout<<"請問你需要什麼幫助? (注意:傷害和生命值是=關係,不是+的關係,比如你現在傷害是5,買了桃木劍是把傷害變為10,而不是加10)\n";
	cout<<"1.桃木劍    10傷害 20金幣\n";
	cout<<"2.鐵劍      15傷害 30金幣\n";
	cout<<"3.黃金劍    30傷害 40金幣\n";
	cout<<"4.鑽石劍    40傷害 50金幣\n";
	cout<<"5.x光劍     50傷害 100金幣\n";
	cout<<"6.皮革甲    10生命 20金幣\n";
	cout<<"7.鐵甲      15生命 30金幣\n";
	cout<<"8.黃金甲    30生命 40金幣\n";
	cout<<"9.鑽石甲    40生命 50金幣\n";
	cout<<"10.鐳射披風 50生命 100金幣\n";
	cout<<"11.返回\n";
	cout<<"請輸入:";
	cin>>j;
	if(j==1||j==6)
	{
		if(jb>=20)
		{
			jb-=20;
			if(j==1)
			shang_hai=10;
			else
			{
				sheng_ming=10;
			sheng_ming_zhi=10;
			}
			game_1();
		}
		else
		cout<<"金幣不夠"; 
		game_1();
	}
	if(j==2||j==7)
	{
		if(jb>=30)
		{
			jb-=20;
			if(j==2)
			shang_hai=15;
			else
			{
				sheng_ming=15;
			sheng_ming_zhi=15;
			}
			game_1();
		}
		else
		cout<<"金幣不夠"; 
		game_1();
	}
	if(j==3||j==8)
	{
		if(jb>=40)
		{
			jb-=40;
			if(j==3)
			shang_hai=30;
			else
			{
				sheng_ming=30;
			sheng_ming_zhi=30;
			}
			game_1();
		}
		else
		cout<<"金幣不夠"; 
		game_1();
	}
	if(j==4||j==9)
	{
		if(jb>=50)
		{
			jb-=50;
			if(j==4)
			shang_hai=40;
			else
			{
					sheng_ming=40;
			sheng_ming_zhi=40;
			}
			game_1();
		}
		else
		cout<<"金幣不夠"; 
		game_1();
	}
	if(j==5||j==10)
	{
		if(jb>=100)
		{
			jb-=100;
			if(j==5)
			shang_hai=50;
			else
			{
				sheng_ming=50;
			sheng_ming_zhi=50;	
			}
			game_1();
		}
		else
		cout<<"金幣不夠"; 
		game_1();
	}
	if(j==11)
	{
		game_1();
	}
}

int main()
{
	system("title 小鎮1.0地下城");
    s_1();
    return 0;
}

三.後言

這個遊戲是臨時做的,不是很好,只是測試一下,如果你覺得好的話可以評論留言噢!
如果我看到了,我就會持續更新這一系列

相關文章