蛋仔

#include<bits/stdc++.h>
#include<Windows.h>
using namespace std;
#define int long long
int php=300.0,bhp=300.0;
int phpmx=300.0,bhpmx=300.0;
int pad=30,bad=30;
double pd=0.01,bd=0.01;
int pp1=0,bp1=0;
int pxy=0,bxy=0; 
int pp2=0,bp2=0;
int pp3=0,bp3=0;
int pp1mx=2,bp1mx=2;
int pp2mx=3,bp2mx=3;
int pp3mx=5,bp3mx=5;
int pch=0,bch=0;
int pche=0,bche=0;
double pls=0,bls=0;
int pkp[100],bkp[100];
int pj=0;
bool ifch(int ch){
	srand(unsigned(time(NULL)));
	if(rand()%100+1<=ch)return 1;
	return 0;
}
signed main(){
	Sleep(500);
	int pw=0;
	int bw=0;
	cout<<"请输入你的角色:0.蛋小蓝,1.蛋小粉,2.蛋小黄,3.魔鬼蛋,4.蛋小绿,5.蛋小黑" << endl;
	cin>>pj;
	if(pj==0)pad+=10;
	if(pj==1){
		pad+=10;
	}
	if(pj==2){
		pd+=0.1;
	}
	int pphe=0;
	for(int i=1;i<=9;i++){
	if(pj==0)pad+=1;
	if(pj==1){
		pad+=1;
	}
	if(pj==2){
		pd+=0.01;
	}
	if(pj==3){
		phpmx*=1.03;
	}
		int pcf=0;
		int bcf=0;
		int pf=1;
		int bf=1;
		cout<<"你赢了"<<pw<<"局"<<'\n';
		phpmx+=10;
		phpmx+=pkp[7]*101;
		bhpmx+=10;
		bhpmx+=bkp[7]*101;
		pad++;
		bad++;
		cout<<"选卡牌时间\n";
		Sleep(500);
		abc:;
		srand(unsigned(time(NULL)));
		int k=rand()%21;
		k+=1;
		if(k==1){
			cout<<"血量+200\n";
			phpmx+=200;
		}
		if(k==2){
			cout<<"攻击+30\n";
			pad+=30;
		}
		if(k==3){
			if(pj!=0)goto abc;
			if(pkp[3]==1)goto abc;
			cout<<"激光发射两次\n";
			pkp[3]=1;
		} 
		if(k==4){
			cout<<"防御+25\n";
			pd+=0.25;
		} 
		if(k==5){
			cout<<"暴击+25\n";
			pch+=25; 
			pche+=25;
		}
		if(k==6){
			cout<<"攻击+20,每0.2点攻击提供1点暴击\n";
			pad+=20;
			pkp[6]++;
		}
		if(k==7){
			cout<<"每回合开始,生命永久提高101\n";
			pkp[7]=1;
		}
		if(k==8){
			cout<<"胜利时,生命永久提高150\n";
			pkp[8]=1;
		}
		if(k==9){
			if(pj!=0)goto abc;
			cout<<"头脑风暴开始时会引爆一个引力炸弹\n";
			pkp[9]=1;
		}
		if(k==10){
			cout<<"获胜时攻击+10\n";
			pkp[10]=1;
		}
		if(k==11){
			
			if(pj!=0)goto abc;
			cout<<"高能激光伤害系数1->1.5\n";
			pkp[11]++;
		}
		if(k==12){
			
			if(pj!=0)goto abc;
			cout<<"激光使用后减少1回合CD\n";
			pkp[12]++;
		}
		if(k==13){
			cout<<"冷却缩减+25\n";
			pls+=0.25;
		}
		if(k==14){
			
			if(pj!=0)goto abc;
			cout<<"引力炸弹使用后50%减少当前所有技能2秒CD\n";
			pkp[14]=1;
		}
		if(k==15){
			cout<<"战斗第一次伤害 x 2\n";
			pkp[15]=1;
		}
		if(k==16){
			if(pj!=1)goto abc;
			cout<<"爆炸箭伤害 x 1.5\n";
			pkp[16]=1;
		}
		if(k==17){
			cout<<"普攻伤害 x 0.8, 但是每次普攻攻击两次\n";
			pkp[17]=1;
		}
		if(k==18){
			if(pj!=1)goto abc;
			cout<<"每次攻击永久叠加8点额外攻击力\n";
			pkp[18]++;
		}
		if(k==19){
			if(pj!=2)goto abc;
			cout<<"剑气波发射两次\n";
			pkp[19]=1;
		}
		if(k==20){
			if(pj!=2)goto abc;
			cout<<"滚动开始时额外召唤一或两个剑气波\n";
			pkp[20]=1;
		}
		if(k==21){
			if(pj!=2)goto abc;
			cout<<"滚动减伤60%->35%\n";
		}
		pp1mx=2*((1-pls));
		pp2mx=3*((1-pls));
		pp3mx=5*((1-pls));
		
		bp1mx=2*((1-bls));
		bp2mx=3*((1-bls));
		bp3mx=5*((1-bls));
		abcd:;
		srand(unsigned(time(NULL)));
		int kk=(rand()*2+1)%17;
		kk+=1;
		if(kk==1){
			bhpmx+=200;
		}
		if(kk==2){
			bad+=30;
		}
		if(kk==3){
			if(bkp[3]==1)goto abcd;
			bkp[3]=1;
		} 
		if(kk==4){
			bd+=0.25;
		} 
		if(kk==5){
			bche+=25;
			bch+=25; 
		}
		if(kk==6){
			pad+=20;
			bkp[6]=1;
		}
		if(kk==7){
			bkp[7]=1;
		}
		if(kk==8){
			bkp[8]=1;
		}
		if(kk==9){
			bkp[9]=1;
		}
		if(kk==10){
			bkp[10]=1;
		}
		if(kk==11){
			bkp[11]++;
		}
		if(kk==12){
			bkp[12]++;
		}
		if((kk==13)){
			bls+=0.25;
		}
		if(kk==14){
			bkp[14]=1;
		}
		if(kk==15){
			bkp[15]=1;
		} 
		if(kk==17){
			bkp[17]=1;
		}
		php=phpmx;
		bhp=bhpmx;
		pp1=0;
		pp2=0;
		pp3=0;
		bp1=0;
		bp2=0;
		bp3=0;
		if(pkp[6]){
			pch=pche+pad/5;
		}
		if(bkp[6]){
			bch=bche+bad/5;
		}
		while(1){
			if(pxy!=0)pxy--;
			if(bxy!=0)bxy--;
			cout<<"第"<<i<<"局\n\n";
			if(php<=0&&bhp<=0){
				if(php>bhp){
					pw++;
					phpmx+=pkp[8]*150;
					pad+=pkp[10]*10;
				cout<<"你赢了\n";break;
				}
				else {
					bw++;
					bhpmx+=bkp[8]*150;
					bad+bkp[10]*10;
				cout<<"你输了\n";
					break;
				}
			}
			if(php<=0){
				bw++;
					bhpmx+=bkp[8]*150;
					bad+=bkp[10]*10;
				cout<<"你输了\n";
				break;
			}
			if(bhp<=0){
				pw++;
					phpmx+=pkp[8]*150;
					pad+=pkp[10]*10;
				cout<<"你赢了\n";
				break;
			}
			if(pxy==0){
				
			if(pp1!=0)pp1--;
			if(bp1!=0)bp1--;
			if(bp2!=0)bp2--;
			if(bp3!=0)bp3--;
			if(pp2!=0)pp2--;
			if(pp3!=0)pp3--;
			cout<<"我方血量"<<php<<"\t\t"<<"敌方血量"<<bhp<<'\n';
			cout<<"我方攻击"<<pad<<"\t\t"<<"敌方攻击"<<bad<<"\n\n";
			cout<<"我方暴击"<<pch<<"\n\n";
			cout<<"你的技能冷却\n";
			if(pj==0){
				cout<<"引力炸弹"<<pp1<<'\n';
				cout<<"高能激光"<<pp2<<"\n";
				cout<<"头脑风暴"<<pp3<<"\n\n";
			}
			if(pj==1){
				cout<<"标记箭"<<pp1<<'\n';
				cout<<"爆炸箭"<<pp2<<'\n';
				cout<<"飓风之力"<<pp3<<"\n\n";
			}
			if(pj==2){
				cout<<"剑气波"<<pp1<<'\n';
				cout<<"旋风斩"<<pp2<<'\n';
				cout<<"滚动"<<pp3<<"\n\n";
			}
			if(pj==3){
				
				cout<<"冲锋"<<pp1<<'\n';
				cout<<"过肩摔"<<pp2<<'\n';
				cout<<"炮拳"<<pp3<<"\n\n";
			}
			cout<<"你有三个技能\n";
			if(pj==0){
			cout<<"引力炸弹 造成攻击力80%+30伤害\n";
			cout<<"高能激光 造成攻击力160%+40伤害\n";
			cout<<"头脑风暴 持续2回合造成攻击力110%+25伤害\n";
			
				int p=0;
			cout<<"想使用哪个技能(1,2,3)\n";
			cin>>p;
			if(p==0){
				int ad=pad+pphe;
				pcf++;
				if(pkp[17]){
					pcf++;
					ad*=0.8;
					bhp-=ad;
					pphe+=8;
				cout<<"普攻造成伤害"<<ad<<'\n';
				}
				bhp-=ad;
				pphe+=8;
				cout<<"普攻造成伤害"<<ad<<'\n';
			}
			if(p==1&&pp1<=0){
				pcf++;
				pp1=pp1mx;
				int ad=(1-bd)*(0.8*pad+30);
				if(ifch(pch))ad*=1.5;
				if(pkp[15]&&pf){
					ad*=2;
					pf=0;
				}
				bhp-=ad;
				if(pkp[14]){
					srand(unsigned(time(NULL)));
					int kkk=rand()%2;
					if(kkk==1){
						pp1--;
						pp2--;
						pp3--;
					}
				}
				cout<<"引力炸弹造成伤害"<<ad<<'\n';
			}
			if(p==2&&pp2<=0){
				pcf++;
				pp2=pp2mx;
				int ad=(1-bd)*(1.6*pad+40);
				if(ifch(pch))ad*=1.5;
				if(pkp[11])ad*=pow(1.5,pkp[11]);
				if(pkp[15]&&pf){
					ad*=2;
					pf=0;
				}
				bhp-=ad;
				cout<<"高能激光造成伤害"<<ad<<'\n';
				if(pkp[12])pp2--;
				if(pkp[3]==1){
					pcf++;
					int ad=(1-bd)*(1.6*pad+40);
				if(ifch(pch))ad*=1.5;
				if(pkp[11])ad*=pow(1.5,pkp[11]);
				if(pkp[15]&&pf){
					ad*=2;
					pf=0;
				}
				bhp-=ad;
				cout<<"高能激光造成伤害"<<ad<<'\n';
				if(pkp[12])pp2--;
				}
			}
			if(p==3&&pp3<=0||pp3==pp3mx-1){
				pcf++;
				if(pp3!=4)pp3=pp3mx;
				int ad=(1-bd)*(1.1*pad+25);
				if(ifch(pch))ad*=1.5;
				if(pkp[15]&&pf){
					ad*=2;
					pf=0;
				}
				bhp-=ad;
				cout<<"头脑风暴造成伤害"<<ad<<'\n';
				if(pkp[9]&&pp3==5){
					pcf++;
				int ad=(1-bd)*(0.8*pad+30);
				if(ifch(pch))ad*=1.5;
				if(pkp[15]&&pf){
					ad*=2;
					pf=0;
				}
				bhp-=ad;
				if(pkp[14]){
					srand(unsigned(time(NULL)));
					int kkk=rand()%2;
					if(kkk==1){
						pp1--;
						pp2--;
						pp3--;
					}
				}
				cout<<"引力炸弹造成伤害"<<ad<<'\n';
				}
				
			}
			}
			if(pj==1){
				cout<<"1.标记箭,可以破隐身,造成100%+30伤害\n";
				cout<<"2.爆炸箭,造成150%+41伤害\n";
				cout<<"3.飓风之力,三回合内每一回合攻击两次\n";
				int pj1f=0;
				int ifgoto=0;
				abccc:;
				if(pj1f>=1){
					cout<<"飓风之力效果持续中,还剩"<<pj1f<<"回合\n\n";
					pj1f--;
				}
				int p=0;
				cout<<"想使用哪个技能(1,2,3)\n";
				cin>>p;
			if(p==0){
				pcf++; 
				if(pkp[18])pad+=8; 
				int ad=pad;
				if(pkp[17]){
				if(pkp[18])pad+=8; 
					pcf++;
					ad*=0.8;
					bhp-=ad;
				cout<<"普攻造成伤害"<<ad<<'\n';
				}
				bhp-=ad;
				cout<<"普攻造成伤害"<<ad<<'\n';
			}
				if(p==1&&pp1<=0){
					pcf++;
				if(pkp[18])pad+=8; 
					pp1=pp1mx;
					int ad=(1-bd)*(pad+30);
					if(ifch(pch))ad*=1.5;
					if(pkp[15]&&pf){
						ad*=2;
						pf=0;
					}
					bhp-=ad;
					cout<<"标记箭造成伤害"<<ad<<'\n';
				}
				if(p==2&&pp2<=0){
					pcf++;
				if(pkp[18])pad+=8; 
					pp2=pp2mx;
					int ad=(1-bd)*(1.5*pad+41);
					if(ifch(pch))ad*=1.5;
					if(pkp[15]&&pf){
						ad*=2;
						pf=0;
					}
					if(pkp[16]){
						ad*=1.5;
					}
					bhp-=ad;
					cout<<"爆炸箭造成伤害"<<ad<<'\n';
				}
				if(p==3&&pp3<=0){
					pp3=pp3mx;
					pj1f=3;
					goto abccc;
				}
				if(ifgoto==0){
				if(pp3==pp3mx-1||pp3==pp3mx-2){
					ifgoto=1;
					goto abccc;
				}
				}
			}
			if(pj==2){
			cout<<"剑气波 造成攻击力105%+27伤害\n";
			cout<<"旋风斩 造成攻击力120%+54伤害\n";
			cout<<"滚动 持续3回合获得60%减伤并造成攻击力80%+55伤害\n";
			
				int p=0;
			cout<<"想使用哪个技能(1,2,3)\n";
			cin>>p;
			if(p==0){
				int ad=pad+pphe;
				pcf++;
				if(pkp[17]){
					pcf++;
					ad*=0.8;
					bhp-=ad;
					pphe+=8;
				cout<<"普攻造成伤害"<<ad<<'\n';
				}
				bhp-=ad;
				pphe+=8;
				cout<<"普攻造成伤害"<<ad<<'\n';
			}
			if(p==1&&pp1<=0){
				pcf++;
				pp1=pp1mx;
				int ad=(1-bd)*(1.05*pad+27);
				if(ifch(pch))ad*=1.5;
				if(pkp[15]&&pf){
					ad*=2;
					pf=0;
				}
				bhp-=ad;
				cout<<"剑气波造成伤害"<<ad<<'\n';
				if(pkp[19]){
					
				pcf++;
				pp1=pp1mx;
				int ad=(1-bd)*(1.05*pad+27);
				if(ifch(pch))ad*=1.5;
				bhp-=ad;
				cout<<"剑气波造成伤害"<<ad<<'\n';
				}
			}
			if(p==2&&pp2<=0){
				pcf++;
				pp2=pp2mx;
				int ad=(1-bd)*(1.2*pad+54);
				if(ifch(pch))ad*=1.5;
				if(pkp[15]&&pf){
					ad*=2;
					pf=0;
				}
				bhp-=ad;
				cout<<"旋风斩造成伤害"<<ad<<'\n';
				if(pkp[12])pp2--;
			}
			if(p==3&&pp3<=0||pp3==pp3mx-1||pp3==pp3mx-2){
				pcf++;
				if(pp3<=0){pp3=pp3mx;
				if(pkp[20]){
					srand(unsigned(time(NULL)));
					int kkk=rand()%2+1;
					for(int i=1;i<=kkk;i++){
						
				pcf++;
				int ad=(1-bd)*(1.05*pad+27);
				if(ifch(pch))ad*=1.5;
				if(pkp[15]&&pf){
					ad*=2;
					pf=0;
				}
				bhp-=ad;
				cout<<"剑气波造成伤害"<<ad<<'\n';
				if(pkp[19]){
					
				pcf++;
				pp1=pp1mx;
				int ad=(1-bd)*(1.05*pad+27);
				if(ifch(pch))ad*=1.5;
				bhp-=ad;
				cout<<"剑气波造成伤害"<<ad<<'\n';
				}
					}
				}
				}
				int ad=(1-bd)*(0.8*pad+55);
				if(ifch(pch))ad*=1.5;
				if(pkp[15]&&pf){
					ad*=2;
					pf=0;
				}
				bhp-=ad;
				cout<<"滚动造成伤害"<<ad<<'\n';
				
			}
			}
			if(pj==3){
				cout<<"1.冲锋,造成75%+30伤害,眩晕0.4回合\n";
				cout<<"2.过肩摔,造成100%+40伤害,眩晕1回合\n";
				cout<<"3.炮拳,造成150%+60伤害,眩晕0.3回合\n";
				int pj1f=0;
				int ifgoto=0;
				if(pj1f>=1){
					cout<<"飓风之力效果持续中,还剩"<<pj1f<<"回合\n\n";
					pj1f--;
				}
				int p=0;
				cout<<"想使用哪个技能(1,2,3)\n";
				cin>>p;
			if(p==0){
				pcf++; 
				int ad=pad;
				if(pkp[17]){
					pcf++;
					ad*=0.8;
					bhp-=ad;
				cout<<"普攻造成伤害"<<ad<<'\n';
				}
				bhp-=ad;
				cout<<"普攻造成伤害"<<ad<<'\n';
			}
				if(p==1&&pp1<=0){
					pcf++;
					pp1=pp1mx;
					int ad=(1-bd)*(pad*0.75+30);
					if(ifch(pch))ad*=1.5;
					if(pkp[15]&&pf){
						ad*=2;
						pf=0;
					}
					srand(unsigned(time(NULL)));
					int kkkk=rand()%10;
					kkkk++;
					if(kkkk<=3)bxy++;
					bhp-=ad;
					cout<<"冲锋造成伤害"<<ad<<'\n';
				}
				if(p==2&&pp2<=0){
					pcf++;
					pp2=pp2mx;
					int ad=(1-bd)*(pad+40);
					if(ifch(pch))ad*=1.5;
					if(pkp[15]&&pf){
						ad*=2;
						pf=0;
					}
					if(pkp[16]){
						ad*=1.5;
					}
					bxy++; 
					bhp-=ad;
					cout<<"过肩摔造成伤害"<<ad<<'\n';
				}
				if(p==3&&pp3<=0){
					pp3=pp3mx;
					
					pcf++;
					pp3=pp3mx;
					int ad=(1-bd)*(pad*1.5+60);
					if(ifch(pch))ad*=1.5;
					if(pkp[15]&&pf){
						ad*=2;
						pf=0;
					}
					srand(unsigned(time(NULL)));
					int kkkk=rand()%10;
					kkkk++;
					if(kkkk<=4)bxy++;
					bhp-=ad;
					cout<<"炮拳造成伤害"<<ad<<'\n';
				}
			}
			}
			if(bxy==0){
				
			int k;
			 int f=0;
			 int iii=0;
			 if(bp1!=0&&bp2!=0&&bp3!=0)goto abc1;
			while(!f){
				iii++;
				srand(unsigned(time(NULL)));
				 k=(iii+rand()%3)%3+1;
				//cout<<"k="<<k<<'\n';
				 switch(k){
				 	case 1:if(bp1<=0){f=1;}break;
				 	case 2:if(bp2<=0){f=1;}break;
				 	case 3:if(bp3<=0){f=1;}break;
				 }
			}
			abc1:;
			if(k==1){
				
				bp1=bp2mx;
				int ad=(1-pd)*(0.8*bad+30);
				if(pj==2&&(pp3==pp3mx-1||pp3==pp3mx-2)){
					if(pkp[21])ad*=0.4;
					else ad*=0.6;
				}
				if(ifch(bch))ad*=1.5;
				if(bkp[15]&&bf){
					ad*=2;
					bf=0;
				}
				php-=ad;
				if(bkp[14]){
					srand(unsigned(time(NULL)));
					int kkk=rand()%2;
					if(kkk==1){
						bp1--;
						bp2--;
						bp3--;
					}
				}
				cout<<"敌方引力炸弹造成伤害"<<ad<<'\n';
			}
			if(k==2){
				
				bp2=bp3mx;
				int ad=(1-pd)*(1.6*bad+40);
				if(pj==2&&(pp3==pp3mx-1||pp3==pp3mx-2)){
					if(pkp[21])ad*=0.4;
					else ad*=0.6;
				}
				if(ifch(bch))ad*=1.5;
				if(bkp[11])ad*=pow(1.5,bkp[11]);
				if(bkp[15]&&bf){
					ad*=2;
					bf=0;
				}
				php-=ad;
				cout<<"敌方高能激光造成伤害"<<ad<<'\n';
				if(bkp[12])bp2--;
				if(bkp[3]==1){
					int ad=(1-pd)*(1.6*bad+40);
				if(pj==2&&(pp3==pp3mx-1||pp3==pp3mx-2)){
					if(pkp[21])ad*=0.4;
					else ad*=0.6;
				}
				if(ifch(bch))ad*=1.5;
				if(bkp[11])ad*=pow(1.5,bkp[11]);
				php-=ad;
				cout<<"敌方高能激光造成伤害"<<ad<<'\n';
				if(bkp[12])bp2--;
				}
			}
			if(k==3||bp3==bp3mx-1){
				
				if(bp3!=4)bp3=bp3mx-1;
				int ad=(1-pd)*(1.1*bad+25);
				if(pj==2&&(pp3==pp3mx-1||pp3==pp3mx-2)){
					if(pkp[21])ad*=0.4;
					else ad*=0.6;
				}
				if(ifch(bch))ad*=1.5;
				if(bkp[15]&&bf){
					ad*=2;
					bf=0;
				}
				php-=ad;
				if(bkp[15]&&bf){
					ad*=2;
					bf=0;
				}
				cout<<"敌方头脑风暴造成伤害"<<ad<<'\n';
				if(bkp[9]&&bp3==5){
					
				int ad=(1-pd)*(0.8*bad+30);
				if(pj==2&&(pp3==pp3mx-1||pp3==pp3mx-2)){
					if(pkp[21])ad*=0.4;
					else ad*=0.6;
				}
				if(ifch(bch))ad*=1.5;
				if(bkp[15]&&bf){
					ad*=2;
					bf=0;
				}
				php-=ad;
				if(bkp[14]){
					srand(unsigned(time(NULL)));
					int kkk=rand()%2;
					if(kkk==1){
						bp1--;
						bp2--;
						bp3--;
					}
				}
				cout<<"敌方引力炸弹造成伤害"<<ad<<'\n';
				}
			}
			}
			Sleep(2500); 
			system("cls");
		}
	}
	if(bw<pw)cout<<"恭喜获胜";
	return 0;
}


飞机大战

#include <bits/stdc++.h>
#include <conio.h>
#include <windows.h>
#include <vector>
#include <ctime>

using namespace std;

// 控制台尺寸
const int WIDTH = 50;
const int HEIGHT = 30;

// 玩家结构体
struct Player {
    int x, y;
    bool alive;
    int score;
};

// 子弹结构体
struct Bullet {
    int x, y;
    bool active;
};

// 敌机结构体
struct Enemy {
    int x, y;
    bool active;
};

// 游戏状态
Player player;
vector<Bullet> bullets;
vector<Enemy> enemies;
bool gameover;

// 控制台光标设置
void Gotoxy(int x, int y) {
    COORD coord = { x, y };
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

// 隐藏光标
void HideCursor() {
    CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}

// 初始化游戏
void InitGame() {
    player.x = WIDTH / 2;
    player.y = HEIGHT - 2;
    player.alive = true;
    player.score = 0;
    bullets.clear();
    enemies.clear();
    gameover = false;

    // 设置控制台尺寸
    system(("mode con cols=" + to_string(WIDTH) + " lines=" + to_string(HEIGHT)).c_str());
    HideCursor();
}

// 绘制游戏
void Draw() {
    Gotoxy(0, 0);
    
    // 绘制顶部边框
    for (int i = 0; i < WIDTH; i++) cout << "#";
    cout << endl;

    // 绘制游戏区域
    for (int y = 1; y < HEIGHT - 1; y++) {
        for (int x = 0; x < WIDTH; x++) {
            if (x == 0 || x == WIDTH - 1) cout << "#";
            else {
                bool printed = false;
                
                // 绘制玩家
                if (player.alive && x == player.x && y == player.y) {
                    cout << "A";
                    printed = true;
                }

                // 绘制子弹
                if (!printed) {
                    for (auto& b : bullets) {
                        if (b.active && x == b.x && y == b.y) {
                            cout << "||";
                            printed = true;
                            break;
                        }
                    }
                }

                // 绘制敌机
                if (!printed) {
                    for (auto& e : enemies) {
                        if (e.active && x == e.x && y == e.y) {
                            cout << " ▼";
                            printed = true;
                            break;
                        }
                    }
                }

                if (!printed) cout << " ";
            }
        }
        cout << endl;
    }

    // 绘制底部边框和分数
    for (int i = 0; i < WIDTH; i++) cout << "#";
    cout << endl;
    cout << " Score: " << player.score;
}

// 处理输入
void ProcessInput() 
{
    if (_kbhit()) 
	{
        switch (_getch()) 
		{
        case 75: // 左
            if (player.x > 1) player.x-=2;
            break;
        case 77: // 右
            if (player.x < WIDTH - 2) player.x+=2;
            break;
        case 32: // 空格(射击)
            bullets.push_back({ player.x, player.y - 1, true });
            break;
        case 27: // ESC
            gameover = true;
            break;
        }
    }
}

// 更新游戏状态
void Update() 
{
    // 更新子弹
    for (auto& b : bullets) 
	{
        if (b.active) 
		{
            b.y--;
            if (b.y <= 0) b.active = false;
            
            // 检查敌机碰撞
            for (auto& e : enemies) 
			{
                if (e.active && b.x == e.x && b.y == e.y) 
				{
                    e.active = false;
                    b.active = false;
                    player.score += 10;
                }
            }
        }
    }

    // 生成敌机
    if (rand() % 10 == 0) {
        enemies.push_back({ rand() % (WIDTH - 2) + 1, 1, true });
    }

    // 更新敌机
    for (auto& e : enemies) 
	{
        if (e.active) 
		{
            e.y++;
            if (e.y >= HEIGHT - 1) e.active = false;
            
            // 检查玩家碰撞
            if (e.x == player.x && e.y == player.y) 
			{
                gameover = true;
            }
        }
    }

    // 清理不活跃的子弹和敌机
    bullets.erase(remove_if(bullets.begin(), bullets.end(),
        [](const Bullet& b) { return !b.active; }), bullets.end());
    
    enemies.erase(remove_if(enemies.begin(), enemies.end(),
        [](const Enemy& e) { return !e.active; }), enemies.end());
}

int main() 
{
    srand(time(0));
    InitGame();

    while (!gameover) 
	{
        Draw();
        ProcessInput();
        Update();
        Sleep(50); // 控制游戏速度
    }

    system("cls");
    cout << "--  Game Over!  -- \n\n Final Score: " << player.score << endl << endl;
    
    return 0;
}

愤怒的小鸟

/*愤怒的小鸟*/

#include <bits/stdc++.h>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <time.h>
using namespace std;

const double pi = 3.1415926536;
int toint (float a) 
{
	return ((int) (a * 10 + 5)) / 10; 
}

void Color (int a) 
{

	if (a == 0 || a == 14 || a == 20) 
	{
		SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
	} else if (a == 1 || a == 12) 
	{
	
	SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_GREEN | FOREGROUND_BLUE);
	} else if (a == 2) 
	{
	SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_GREEN);
	} else if (a == 3) 
	{	
	SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE);
	} else if (a == 4 || a == 11) {	
	SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED);
	} else if (a == 5 || a == 13) 
	{	
	SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN);
	} else if (a == 7) 
	{	
		SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_GREEN | FOREGROUND_BLUE);
	} else if (a == 15) 
	{	
	SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY);
	} else if (a == 16)
	{	
	SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_GREEN);
	} else if (a == 17) 
	{
		SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_RED);
	} else if (a == 8) 
	{
		SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
	} else if (a == 6) 
	{	
		SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),	FOREGROUND_INTENSITY | FOREGROUND_BLUE);
	} else if (a == 9) 
	{	
		SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY | FOREGROUND_RED | BACKGROUND_RED | BACKGROUND_GREEN);
	} 
}

void SetPos (float x, float y) 
{
	int xx = toint (x), yy = toint (y);
	COORD pos;
	pos.X = yy * 2;
	pos.Y = xx;
	SetConsoleCursorPosition (GetStdHandle (STD_OUTPUT_HANDLE), pos); 
}
struct node 
{
	int W, W2, S, mS;
	float X, Y;
	float vx, vy;
	float ax, ay;
	bool go, boom; 
} blt[100001], pig[100001], boo[100001];

int T, yX, yY, Xy, put, K, K2, Sle, What;
int Bot, Pit, Blt, Pig, Sco, pigk, scok;
int m[41][41];

void Cout (int a, int x, int y) 
{
	if (a == 1) 
	{
		SetPos (x, y);
		Color (5);
		cout << put << ' ';
	}
	
	if (y == 202) 
	{
		SetPos (pig[a].X, pig[a].Y);
		cout << "  ";
		if ((pig[a].W == 2 || pig[a].W == 3) && pig[a].X >= 2) 
		{
			SetPos (pig[a].X - 2, pig[a].Y);
			cout << "  ";
			SetPos (pig[a].X - 1, pig[a].Y);		
			cout << "  ";	
		} else if (pig[a].W == 4) 
		{		
			SetPos (pig[a].X, pig[a].Y - 1);
			cout << "  ";
		} else if (pig[a].W == 5) 
		{
			SetPos (pig[a].X - 1, pig[a].Y);
			cout << "  ";
			SetPos (pig[a].X - 1, pig[a].Y - 1);
			cout << "  ";	
		}
	}
	
	if (a == 2) 
	{	
		for (int i = 0; i <= 40; i++) 
		{	
			for (int j = 0; j <= 40; j++) 
			{
				if (i <= 18 && m[i][j] == 1) 
				{
					SetPos (i, j);
					Color (7);
					cout << "■";
				}
		
				if (m[i][j] >= 2 && m[i][j] <= 19) 
				{
					SetPos (i, j);
					Color (5);	
					cout << "█";
					m[i][j]++;
				}
		
				if (m[i][j] > 19 && m[i][j] <= 29) 
				{
					SetPos (i, j);
					Color (0);
					cout << "█";
					m[i][j]++;
					
					if (m[i][j] == 30) 
					{
						SetPos (i, j);
						Color (0);
						cout << "  ";
						m[i][j] = 0;
					}
					if (m[i][j] >= 31 && m[i][j] <= 49) 
					{
						SetPos (i, j);
						Color (0);
						cout << "■";
						m[i][j]++;
					}
					if (m[i][j] == 50) 
					{
						SetPos (i, j);
						Color (7);
						cout << "■";
						m[i][j] = 1;
					}
				}
			}
		}
	}
	
	if (y == 666) 
	{
		SetPos (blt[a].X, blt[a].Y);
		Color (10 + blt[a].W);
		cout << "●";
	}	
	Color (0); 
}

void Go (int a) 
{
	SetPos (blt[a].X, blt[a].Y)	;
	cout << " ";
	blt[a].X += blt[a].vx / 2;
	blt[a].Y += blt[a].vy / 2;
	blt[a].vx += blt[a].ax / 2;
	blt[a].vy += blt[a].ay / 2;
	if (blt[a].X >= 20) 
	{
		blt[a].X = 19;
	}
	if (blt[a].X > 20 || blt[a].Y > 38 || blt[a].X < 0 || blt[a].Y <= 0) 
	{
		blt[a].go = 1;
	}
	if (blt[a].W2 == 1 && blt[a].Y >= Xy) 
	{
		blt[a].go = 1;
		Sle = 0;//地跑鸟
	}
	if (blt[a].W2 == 0) 
	{
		for (int i = 0; i <= blt[a].vx / 2 + 1; i++) 
		{
			if (blt[a].vx > 0 && m[toint (blt[a].X) + i][toint (blt[a].Y)] == 1) 
			{
				if (blt[a].W != 5) 
				{
					blt[a].boom = 1;
				}
				blt[a].X = toint (blt[a].X) + i - 1;
				blt[a].Y += blt[a].vy / 2;	
				blt[a].vx = -blt[a].vx * 0.4;
				blt[a].vy = blt[a].vy * 0.8;
				if (blt[a].W == 3) 
				{
					blt[a].ax = 0.5;
				}		
				if (blt[a].W == 7) 
				{	
					blt[a].vx *= 2;
				}
				if (blt[a].W == 10) 
				{
					blt[a].go = 1;		
					Bot++;
					boo[Bot].X = blt[a].X;
					boo[Bot].Y = blt[a].Y;
					boo[Bot].S = 1;
					boo[Bot].mS = 4;
				}
			}
			if (blt[a].vx < 0 && m[toint (blt[a].X) - i][toint(blt[a].Y)] == 1) 
			{
				if (blt[a].W != 5) 
				{
					blt[a].boom = 1;
				}
				blt[a].X = toint (blt[a].X) + i + 1;
				blt[a].Y += blt[a].vy / 2;
				blt[a].vx = -blt[a].vx;
				blt[a].vy = blt[a].vy * 0.8;
				if (blt[a].W == 3) 
				{
					blt[a].ax = 0.5;
				}
				if (blt[a].W == 7) 
				{
					blt[a].vx *= 2;
				}
				if (blt[a].W == 10) 
				{
					blt[a].go = 1;
					Bot++;
					boo[Bot].X = blt[a].X;
					boo[Bot].Y = blt[a].Y;
					boo[Bot].S = 1;
					boo[Bot].mS = 4;
				}
			}		
		}
	
		if (abs (blt[a].vx) <= 0.1 && abs (blt[a].vy) <= 0.1 && abs (blt[a].ay) <= 0.1) 
		{		
			blt[a].go = 1;
			if (blt[a].W == 5) 
			{
				Bot++;
				boo[Bot].X = blt[a].X;
				boo[Bot].Y = blt[a].Y;
				boo[Bot].S = 1;
				boo[Bot].mS = 4;
				blt[a].go = 1;
			}		
		}
	}
	
	if (blt[a].go == 0) 
	{
		Cout (a, 0, 666);
	} 
}

void Kill (int a) 
{
	if (pig[a].go == 0 && pig[a].W != 2 && pig[a].W != 3 && pig[a].Y < 16) 
	{	
		Cout (a, 202, 202);
		pig[a].Y = 16;
	}
	if (pig[a].go == 0 && pig[a].W == 4 && pig[a].Y < 20) 
	{
		pig[a].W = 1;
	}
	int R = rand () % 50;
	Cout (a, 202, 202);
	
	//清除猪猪
	
	pig[a].X += pig[a].vx / 2;
	pig[a].Y += pig[a].vy / 2;
	pig[a].vx += pig[a].ax / 2;
	pig[a].vy += pig[a].ay / 2;
	for (int i = -2; i <= pig[a].vx / 2 + 1; i++) 
	{
			if (m[toint (pig[a].X) + i][toint (pig[a].Y)] == 1) 
			{
				pig[a].X = toint (pig[a].X) + i - 1;		
				pig[a].Y += pig[a].vy / 2;
				pig[a].vx = -pig[a].vx * 0.5;
				pig[a].vy = pig[a].vy * 0.8;
			}
	}
		
	for (int i = Blt - 10; i <= Blt; i++) 
	{		
		if (pig[a].W == 5 && blt[i].go == 0 && abs (pig[a].X - blt[i].X) <= 1 && abs (pig[a].Y - blt[i].Y) <= 1) 
		{	
			m[toint (pig[a].X) - 1][toint (pig[a].Y)] = 2;
			pig[a].W2++;
			Sco += 2;
			break;
		}
		
		if (pig[a].W == 5 && m[toint (pig[a].X)][toint (pig[a].Y)] >= 2 && m[toint (pig[a].X)][toint (pig[a].Y)] < 30) 
		{		
			m[toint (pig[a].X) - 1][toint (pig[a].Y)] = 2;
			pig[a].W2++;
			Sco += 2;
			break;
		}
		if (blt[i].go == 0 && abs (pig[a].X - blt[i].X) <= 1 && abs (pig[a].Y - blt[i].Y) <= 1) 
		{
			if (pig[a].W == 6) 
			{
				Bot++;
				boo[Bot].X = pig[a].X;
				boo[Bot].Y = pig[a].Y;
				boo[Bot].S = 1;
				boo[Bot].mS = 4;
				blt[i].go = 1;
			}
			m[toint (pig[a].X)][toint (pig[a].Y)] = 2;
			pig[a].go = 1;
			Pig--;
			Sco += 10;
			break;
		}
		if (m[toint (pig[a].X)][toint (pig[a].Y)] >= 2 && m[toint (pig[a].X)][toint (pig[a].Y)] < 30) 
		{
			if (pig[a].W == 6) 
			{
				Bot++;
				boo[Bot].X = pig[a].X;
				boo[Bot].Y = pig[a].Y;
				boo[Bot].S = 1;
				boo[Bot].mS = 4;
			}
			pig[a].go = 1;
			Pig--;
			Sco += 10;
			break;
		}
		if ((pig[a].W == 2 || pig[a].W == 3) && blt[i].go == 0 && abs (pig[a].X - 2 - blt[i].X) <= 1 && abs (pig[a].Y - blt[i].Y) <= 1) 
		{
			m[toint (pig[a].X)][toint (pig[a].Y)] = 2;
			pig[a].go = 1;
			Pig--;
			Sco += 10;
			break;	
		}
		if ((pig[a].W == 2 || pig[a].W == 3) && m[toint (pig[a].X - 2)][toint (pig[a].Y)] >= 2 && m[toint (pig[a].X - 2)][toint (pig[a].Y)] < 30) 
		{
			pig[a].go = 1;
			Pig--;
			Sco += 10;
			break;
		}
	}
	//弄死猪猪
	if (pig[a].go == 0) 
	{
		if (pig[a].go == 0 && pig[a].W != 2 && pig[a].W != 3 && pig[a].Y < 16) 
		{
			Cout (a, 202, 202); 
			pig[a].Y = 16;
		}
	
	if (pig[a].go == 0 && pig[a].W == 4 && pig[a].Y < 20) 
	{
		pig[a].W = 1;
	}
	
	int Xx = toint (pig[a].X), Xy = toint (pig[a].Y);
	if (pig[a].W == 6) 
	{
		SetPos (pig[a].X, pig[a].Y);
		Color (9);
		cout << "TN";
		Color (0);
	} 
	else 
	{
		SetPos (pig[a].X, pig[a].Y);
		Color (2);
		cout << "●";
		if ((pig[a].W == 2 || pig[a].W == 3) && pig[a].X >= 2) 
		{
			SetPos (pig[a].X - 2, pig[a].Y);
			Color (0);
			cout << "○";
			SetPos (pig[a].X - 1, pig[a].Y);
			cout << "|";
		} else if (pig[a].W == 4) {
			SetPos (pig[a].X, pig[a].Y - 1);
			Color (2);
			cout << "﹃";
		} else if (pig[a].W == 5) {
			SetPos (pig[a].X - 1, pig[a].Y);
			Color (8);
	
			SetPos (pig[a].X - 1, pig[a].Y - 1);
	
			cout << "▁";
	
			if (pig[a].W2 == 0) {
	
				cout << "▅";
	
			} else if (pig[a].W2 == 1) {
	
				cout << "▃";
	
			} else if (pig[a].W2 == 2) {
	
				cout << "▂";
	
			} else if (pig[a].W2 == 3) {
	
				pig[a].W = 1;
	
				pig[a].W2 = 0;
	
				SetPos (pig[a].X - 1, pig[a].Y - 1);
	
				cout << "  ";
	
			}
	
		}
	
	}
	
	//输出猪猪
	
	if (pig[a].W == 2 && pig[a].X > pig[a].S) {
	
		pig[a].W = 3;
	
		pig[a].ax = -0.4;
	
		pig[a].vx = 1.5;
	
	} else if (pig[a].W == 3 && pig[a].X <= pig[a].S) {
	
		pig[a].W = 2;
	
		pig[a].ax = 0.4;
	
		pig[a].vx = -1.5;
	
	}
	
	if ((pig[a].W == 2 || pig[a].W == 3) && (pig[a].Y <= 10 || pig[a].Y >= 38)) {
	
		pig[a].vy *= -1;
	
	}
	
	if (pig[a].W == 4 && R == 0 && pig[a].X == 20) {
	
		pig[a].vx = -((rand () % 40) / 10);
	
	}
	
	if (pig[a].W == 4) {
	
		int r = rand () % 20;
	
		for (int i = Blt - 10; i <= Blt; i++) {
	
			if (r <= 5 && blt[i].go == 0 && pig[a].Y - blt[i].Y <= 5 &&
	
			    abs (blt[i].X - pig[a].X) <= 1.5 && r < 5) {
	
				r = 0;
	
				break;
	
			}
	
		}
	
		if (r == 0) {
	
			m[toint (pig[a].X)][toint (pig[a].Y) - 2] = 10;
	
			m[toint (pig[a].X)][toint (pig[a].Y) - 3] = 2;
	
			for (int j = toint (pig[a].Y) - 1; j >= toint (pig[a].Y) - 5; j--) {
	
				for (int i = Blt - 10; i <= Blt; i++) {
	
					if (blt[i].go == 0 && !(blt[i].W == 3 && blt[i].boom == 1)
	
					    && blt[i].W2 == 0 && toint (blt[i].Y) == j
	
					    && abs (blt[i].X - pig[a].X) <= 2) {
	
						blt[i].vy = -2;
	
					}
	
				}
	
				for (int i = Pit - 50; i <= Pit; i++) {
	
					if (pig[i].go == 0 && toint (pig[i].Y) == j && abs (pig[i].X - pig[a].X) <= 2) {
	
						pig[i].vy = -1;
	
					}
	
				}
	
			}
	
		}
	
	}
	
	//移动猪猪
	
	if (pig[a].go == 0 && pig[a].W != 2 && pig[a].W != 3 && pig[a].Y < 16) {
	
		Cout (a, 202, 202);
	
		pig[a].Y = 16;
	
	}
	
	if (pig[a].go == 0 && pig[a].W == 4 && pig[a].Y < 20) {
	
		pig[a].W = 1;
	
	}
	
	if (pig[a].X > 20 || pig[a].Y > 38 || pig[a].X < 0 || pig[a].Y <= 0) {
	
		pig[a].go = 1;
	
		Pig--;
	
		Cout (a, 202, 202);
	
	}
	
	//清除猪猪
	} 
}

void Creat (int a, int p) {

if (a == -1 && p == -1) {

Blt++;

blt[Blt].W = What;

blt[Blt].W2 = 1;

blt[Blt].vy = 1;

blt[Blt].X = 19;

blt[Blt].Y = 0;

blt[Blt].boom = 1;
} else if (a == 0 && p == -1) {

int u = rand () % 7 + 1, U = rand() % 30;

if (u >= 5) {

	Pit++;

	pig[Pit].Y = rand () % 15 + 20;

	pig[Pit].X = 2;

	pig[Pit].ax = 0.5;

	pig[Pit].W = 1;

} else if (u == 1) {

	Pit++;

	pig[Pit].Y = rand () % 15 + 20;

	pig[Pit].X = 2;

	pig[Pit].vy = 0.5;

	pig[Pit].ax = 0.5;

	pig[Pit].S = rand () % 5 + 7;

	pig[Pit].W = 2;

} else if (u == 2) {

	Pit++;

	pig[Pit].Y = rand () % 15 + 20;

	pig[Pit].X = 2;

	pig[Pit].ax = 0.5;

	pig[Pit].W = 4;

} else if (u == 3) {

	Pit++;

	pig[Pit].Y = rand () % 15 + 20;

	pig[Pit].X = 2;

	pig[Pit].ax = 0.5;

	pig[Pit].W = 5;

} else if (u == 4) {

	Pit++;

	pig[Pit].Y = rand () % 15 + 20;

	pig[Pit].X = 2;

	pig[Pit].ax = 0.5;

	pig[Pit].W = 6;

}

if (U == 1) {

	Bot++;

	boo[Bot].Y = rand () % 13 + 15;

	boo[Bot].X = (rand () % 4) * 3 + 8;

	boo[Bot].S = 0;

	boo[Bot].mS = rand () % 2 + 2;

	boo[Bot].W2 = 1;

}
} else {

Blt++;

blt[Blt].W = What;

if (a == 1) {

	blt[Blt].X = yX;

	blt[Blt].Y = yY;

	blt[Blt].ax = 0.5; //抛物线

}

blt[Blt].vx = -3.5 * sin (p * pi / 180);

blt[Blt].vy = 3 * cos (p * pi / 180);

if (p <= 45) {

	blt[Blt].vy *= 1 + (0.33 - 0.01 * (45 - p));

}

if (p >= 45) {

	blt[Blt].vy *= 1 + (0.33 - 0.01 * (p - 45));

}

if (blt[Blt].W == 6) {

	blt[Blt].vy *= 1.2;

	blt[Blt].ax = 0.4;

}
} }

void Boom (int a) {

if (boo[a].W2 == 0) {

int ms = boo[a].mS, s = boo[a].S, x = boo[a].X, y = boo[a].Y;

if (s == ms) {

	return ;

}

for (int i = x - s; i <= x + s; i++) {

	for (int j = y - s; j <= y + s; j++) {

		float k = (i - x) * (i - x) + (j - y) * (j - y) - s * s;

		if (k <= s && k >= -s && i <= 20 && j <= 38 && i >= 0 && j > 0 && m[i][j] != 1) {

			m[i][j] = 2;

		}

	}

}

boo[a].S++;
}

if (boo[a].W2 == 1) {

int ms = boo[a].mS, s = boo[a].S, x = boo[a].X, y = boo[a].Y;

if (s == ms) {

	return ;

}

if (y - s > 10) {

	m[x][y - s] = 31 - 31 * (boo[a].W2 - 1);

}

if (y + s < 40) {

	m[x][y + s] = 31 - 31 * (boo[a].W2 - 1);

}

boo[a].S++;
} }

void Move (int a) {

Color (5);

if (a == -2) {

SetPos (17, Xy);

cout << "        ";

SetPos (18, Xy);

cout << "        ";

SetPos (19, Xy);

cout << "        ";

SetPos (20, Xy);

cout << "       ";
}

if (a == -1) {

SetPos (17, Xy);

cout << "        ";

SetPos (18, Xy);

cout << "  ┃  ┃";

SetPos (19, Xy);

cout << "  ╰┳╯";

SetPos (20, Xy);

cout << "     ▏";
}

if (a == 0) {

SetPos (18, Xy);

cout << "  ┃";

Color (What + 10);

cout << "●";

Color (5);

cout << "┃";

SetPos (19, Xy);

cout << "  ╰┳╯";

SetPos (20, Xy);

cout << "     ▏";
}

if (a == 1) {

SetPos (18, Xy);

cout << "  ";

Color (What + 10);

cout << "●";

Color (5);

cout << "  ┃";

SetPos (19, Xy);

cout << "  ╰┳╯";

SetPos (20, Xy);

cout << "     ▏";
}

if (a == 2) {

SetPos (18, Xy);

Color (What + 10);

cout << "●";

Color (5);

cout << "┃  ┃";

SetPos (19, Xy);

cout << "  ╰┳╯";

SetPos (20, Xy);

cout << "     ▏";
}

if (a == 3) {

SetPos (18, Xy);

cout << "  ┃  ┃";

SetPos (19, Xy);

Color (What + 10);

cout << "●";

Color (5);

cout << "╰┳╯";

SetPos (20, Xy);

cout << "     ▏";
}

if (a == 4) {

SetPos (18, Xy);

cout << "  ┃  ┃";

SetPos (19, Xy);

cout << "  ╰┳╯";

SetPos (20, Xy);

Color (What + 10);

cout << "●";

Color (5);

cout << "   ▏";
}

if (a == 5) {

SetPos (18, Xy);

cout << "  ┃  ┃";

SetPos (19, Xy);

cout << "  ╰┳╯";

SetPos (20, Xy);

cout << "  ";

Color (What + 10);

cout << "●";

Color (5);

cout << " ▏";
}

if (a == 6) {

SetPos (18, Xy);

cout << "  ┃  ┃";

SetPos (19, Xy);

cout << "  ╰┳╯";

SetPos (20, Xy);

cout << "    ";

Color (What + 10);

cout << "●";

Color (5);

cout << " ";
}

Color (0); }

void Start () {

char g;

Color (5);

system ("cls");

SetPos (1, 1);

cout << "------- 愤 怒 的 小 鸟 -------";

Color (0);

SetPos (3, 1);

cout << "空格瞄准,按X触发小鸟技能,←→移动弹弓";

SetPos (5, 1);

cout << "猪猪技能自动触发,空中会有墙出现。";

SetPos (7, 1);

cout << "危险值由命中率,猪的存活时间计算!";

SetPos (9, 1);

cout << "危险值点满后失败!300分通关!";

SetPos (1, 20);

cout << "-------- 小 鸟 技 能 --------";

SetPos (3, 20);

Color (11);

cout << "●";

Color (0);

cout << ":无技能";

SetPos (5, 20);

Color (12);

cout << "●";

Color (0);

cout << ":分身!不同分身初速度大小相同,";

SetPos(6, 20); cout << " 方向不同。";

SetPos (7, 20);

Color (13);

cout << "●";

Color (0);

cout << ":加速!以当前速度做匀速直线运动,";

SetPos (8, 20);

cout << " 且免疫狙击猪的冲击。";

SetPos (9, 20);

Color (14);

cout << "●";

Color (0);

cout << ":投蛋!并获得向上速度做匀速直线";

SetPos (10, 20);

cout << " 运动,快达可以穿墙。";

SetPos (11, 20);

Color (15);

cout << "●";

Color (0);

cout << ":爆炸!";

SetPos (13, 20);

Color (16);

cout << "●";

Color (0);

cout << ":回旋!开始做向左加速运动!发射";

SetPos (14, 20);

cout << " 时获得双倍水平速度。";

SetPos (15, 20);

Color (17);

cout << "●";

Color (0);

cout << ":[被动] 弹跳力为普通鸟三倍。发射";

SetPos (16, 20);

cout << " 时获得1.5倍水平、竖直速度。";

SetPos (11, 1);

cout << "-------- 猪 猪 技 能 --------";

SetPos (13, 2);

Color (2);

cout << "●";

Color (0);

cout << ":无技能";

SetPos (14, 1);

Color (8);

cout << "▁▅";

SetPos (15, 2);

Color (2);

cout << "●";

Color (0);

cout << ":防御力为普通猪三倍";

SetPos (16, 2);

cout << "○";

SetPos (17, 2);

cout << "│:做空中简谐运动,受死范围";

SetPos (18, 2);

Color (2);

cout << "●";

Color (0);

cout << " 为普通猪两倍。";

SetPos (19, 2);

cout << " 有几率跳起或发射冲击波,冲";

SetPos (20, 1);

Color (2);

cout << "﹃●";

Color (0);

cout << ":开小鸟与同类,可以引爆TNT!";

SetPos (18, 20);

Color (5);

cout << "按 y 开始游戏!"; A:

if (kbhit ()) {

g = _getch ();
}

if (g != 'y') {

goto A;
} }

int main () 
{
	system ("mode con cols=79 lines=22");
	CONSOLE_CURSOR_INFO cursor_info = {1, 0};
	SetConsoleCursorInfo (GetStdHandle (STD_OUTPUT_HANDLE), &cursor_info);
	srand ((unsigned)time(NULL)); St: Start ();
	system ("cls");
	memset (blt, 0, sizeof (blt));
	memset (pig, 0, sizeof (pig));
	memset (boo, 0, sizeof (boo));
	memset (m, 0, sizeof (m));
	T = put = K = K2 = Sle = What = Pig = Sco = 0;
	pigk = scok = -1;
	Xy = 4;
	yX = 18;
	yY = 6;
	Blt = 20;
	Bot = 20;
	Pit = 60;
	Color (7);
	SetPos (19, 14);
	cout << "■";
	SetPos (20, 13);
	cout << " █▍";
	m[19][14] = m[20][13] = m[20][14] = 1;
	SetPos (21, 0);
	for (int i = 0; i < 39; i++) 
	{
	cout << "■";
	m[21][i] = 1;
	}
	
	Color (0);
	What = rand () % 5 + 1;
	while (1) 
	{
		if (Sco >= 300) 
		{
			break;
		}
		T++;
		K = 0;
		Color (0);
		if (Sco != scok) 
		{
			SetPos (1, 1);
			cout << "分数:" << Sco << ' ';
		}
		if (Pig != pigk) 
		{
			SetPos (3, 1);
			cout << "危险值:";
			int aa = min (Sco / 100, 10);
			Pig += aa;
			SetPos (3, 5);
			if (Pig <= 2) 
			{
				Color (2);
			} else if (Pig <= 4) 
			{
				Color (16);
			} else if (Pig <= 6) 
			{
				Color (7);
			} else if (Pig <= 9) 
			{
				Color (6);
			} else if (Pig <= 12) 
			{
				Color (3);
			} else if (Pig <= 15) 
			{
				Color (17);
			} else 
			{
				Color (11);
			}
			for (int i = 1; i <= Pig; i++) 
			{
				cout << "■";
			}
			Color (0);
			cout << ' ' << Pig;
			for (int i = 1; i <= 5; i++) 
			{
				cout << "  ";
			}
			if (Pig > 18) 
			{
				break;
			}
			Pig -= aa;
		}
		scok = Sco;
		pigk = Pig;
		if (GetAsyncKeyState (VK_LEFT) & 0x8000 && Xy > 0) 
		{
			Move (-2);
			Xy--;
			K = 1;
		}
		if (GetAsyncKeyState (VK_RIGHT) & 0x8000 && Xy < 10) 
		{
			Move (-2);
			Xy++;
			K = 1;
		}
		
		if (K == 1) 
		{
			if (put == 0 && Sle == 0) 
			{
				Move (0);
			} 
			else 
			{
				Move (-1);
			}
		}
		
		if (kbhit ()) 
		{
			char g = _getch ();
			if (g == 'x' || g == 'X') 
			{
				for (int i = Blt - 10; i <= Blt; i++) 
				{
					if (blt[i].go == 0 && blt[i].boom == 0 && blt[i].W != 1 && blt[i].W != 7) 
					{
						blt[i].boom = 1;
						if (blt[i].W == 2) 
						{
							Blt++;
							blt[Blt].W = 2;
							blt[Blt].vy = blt[i].vy * 1.2;
							blt[Blt].vx = blt[i].vx + 1;
							blt[Blt].ax = blt[i].ax;
							blt[Blt].X = blt[i].X;
							blt[Blt].Y = blt[i].Y;
							blt[Blt].boom = 1;
							Blt++;
							blt[Blt].W = 2;
							blt[Blt].vy = blt[i].vy * 0.7;
							blt[Blt].vx = blt[i].vx - 1;
							blt[Blt].ax = blt[i].ax;
							blt[Blt].X = blt[i].X;
							blt[Blt].Y = blt[i].Y;
							blt[Blt].boom = 1;
						}
						if (blt[i].W == 3) 
						{
							blt[i].vy = fmax (blt[i].vy * 1.5, 2.5);
							blt[Blt].vx++;
							blt[i].ax = 0;	
						}
						if (blt[i].W == 4) 
						{
							blt[i].vx = -3;
							blt[i].ax = 0.1;
							Blt++;
							blt[Blt].boom = 1;
							blt[Blt].W = 10;
							blt[Blt].X = blt[i].X;
							blt[Blt].Y = blt[i].Y;
							blt[Blt].ax = blt[i].ax;
							blt[Blt].vx = 1;
						}
		
						if (blt[i].W == 5) 
						{
							Bot++;
							boo[Bot].X = blt[i].X;
							boo[Bot].Y = blt[i].Y;
							boo[Bot].S = 1;
							boo[Bot].mS = 5;
							blt[i].go = 1;
						}
						if (blt[i].W == 6) 
						{
							blt[i].ay = -1;
							blt[i].ax = 0.3;
							blt[i].vx = min (blt[i].vx / 2, (float)0);
						}
						break;
					}
				}
			}
		}
		if (GetAsyncKeyState (' ') & 0x8000 && K == 0 && Sle == 0) 
		{
			if (put <= 5) 
			{
				Move (1);
				yX = 18;
				yY = Xy + 1;
			} else if (put <= 20) 
			{
				Move (2);
				yX = 18;
				yY = Xy;
			} else if (put <= 40) 
			{
				Move (3);
				yX = 19;
				yY = Xy;
			} else if (put <= 60) 
			{
				Move (4);
				yX = 20;
				yY = Xy;
			} else if (put <= 80) 
			{
				Move (5);
				yX = 20;	
				yY = Xy + 1;
			} 
			else 
			{
				Move (6);
				yX = 20;
				yY = Xy + 2;
			}
		
			if (put == 0) 
			{
				K2 = 1;
			}
			if (put == 90) 
			{
				K2 = -1;
			}
		
			if (K2 == 1) 
			{
				put += min (rand () % 7 + 1, 90 - put);
			}
		
			if (K2 == -1) 
			{
				put -= min(rand() % 7 + 1, put);
			}
			Cout (1, 17, Xy + 2);
		}
		if ((!(GetAsyncKeyState (' ') & 0x8000) && (put != 0)) || (put != 0 && K == 1)) 
		{
			Move (-1);
			Creat (1, put);
			put = 0;
			yX = 18;
			yY = 5;
			Sle = 1;
			What = rand () % 7 + 1;
			Creat (-1, -1);
			Sco = max (Sco - 5, 0);
		}
		for (int i = Blt - 10; i <= Blt; i++) 
		{
			if (blt[i].go == 0) 
			{
				Go (i);
			}
		}
		
		for (int i = Bot - 10; i <= Bot; i++) 
		{
			if (boo[i].go == 0) 
			{
				Boom (i);
				Cout (2, 0, 0);
			}
		}
		
		for (int i = Pit - 50; i <= Pit; i++) 
		{
			if (pig[i].go == 0) 
			{
				Kill (i);
			}
		}
		if (Sle != 0) 
		{
			Move (-1);
		} else if (put == 0) {
			Move (0);
		}
		
		if (T % 300 == 0) 
		{
			system ("cls");
			pigk = scok = -1;
		}
		if (T % 100 == 0) 
		{
			Color (7);
			for (int i = 0; i <= 18; i++) 
			{
				for (int j = 0; j <= 40; j++) 
				{
					if (m[i][j] == 1 && T % 100 == 0) 
					{
						SetPos (i, j);
						cout << "■";
					}	
				}
			}
		
			SetPos (19, 14);
			cout << "■";
			SetPos (20, 13);
			cout << " █▍";
			SetPos (21, 0);
			for (int i = 0; i < 39; i++) 
			{
				cout << "■";
				Color (0);
			}
		}
		
		if (T % min (50, (2000 - Sco) / 30) == 0) 
		{
			Pig++;
			Creat (0, -1);
		}
		Sleep (30);
	}
	
	if (Sco < 300) 
	{
	
		if (MessageBox (NULL, "很遗憾,您输了,您还想再来一次吗?", "温馨提示", MB_YESNO) == IDYES) 
		{	
			goto St;
		}
		else 
		{		
			return 0;
		}
	} 
	else 
	{		
		if (MessageBox (NULL, "恭喜您赢了!您还想再来一次吗?", "温馨提示", MB_YESNO) == IDYES) 
		{		
			goto St;
		}
		else 
		{
			return 0;
		}
	}
	return 0; 
}

会接着更新的~