当前位置:网站首页>-飞机大战-
-飞机大战-
2022-08-03 05:10:00 【-JMY-】
#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
using namespace std;
int z[100][2];bool zc[100];int px,py,sm,df,l=0;char c;void color(int a);void gotoxy(int x,int y);void full_screen();int chu();void start();void csh();void drawmap();void drawplayer();void clsplayer();void _cin();void move();void drawz();void clsz();void change(int k);void print_s_d();void swa(int k);
int poss1_x=12,poss1_y=5;int way=0,poss1sm=200;int p1z[50][2];bool p1zc[50];void printposs1();void clsposs1();void moveposs1z();void changeposs1z();void drawp1z();void clsp1z();void po1_p();void p_po1();void prints(int posssm);void poss1();
int poss2_x=10,poss2_y=5,poss2sm=400;int p2z[100][2];bool p2zc[100];void printposs2();void clsposs2();void moveposs2z();void changep2(int k);void drawp2z();void clsp2z();void poss2();void po2_p();void p_po2();
int poss3_x=10,poss3_y=5,poss3sm=400;int p3z[100][2],sorty[100],sortx[100];bool p3zc[100];void quick_sort(int l,int r);void printposs3();void clsposs3();void moveposs3z();void changep3(int k);void drawp3z();void clsp3z();void p3move();void po3_p();void p_po3();void poss3();
int main(){full_screen();csh();start();while(true){system("cls");df=0;csh();if(chu()==0){color(7);drawmap();color(11);drawplayer();print_s_d();l=0;poss1_x=12;poss1_y=5;way=0;poss1sm=200;poss2_x=10;poss2_y=5;poss2sm=400;poss3_x=10;poss3_y=5;poss3sm=400;while(true){_cin();clsz();move();drawz();_sleep(50);l++;if(l%20==0){df++;print_s_d();}if(l==100){poss1();clsp1z();clsposs1();gotoxy(9,58);printf(" ");clsz();color(11);drawplayer();if(sm<=0){color(12);gotoxy(23,21);printf("游 戏 结 束");_sleep(3000);system("cls");break;}df+=20;clsplayer();csh();color(11);drawplayer();swa(1);color(7);drawmap();color(11);drawplayer();print_s_d();l=100;}if(l==200){poss2();clsp2z();clsposs2();gotoxy(9,58);printf(" ");clsz();color(11);drawplayer();if(sm<=0){color(12);gotoxy(23,21);printf("游 戏 结 束");_sleep(3000);system("cls");break;}df+=50;clsplayer();csh();color(11);drawplayer();swa(2);color(7);drawmap();color(11);drawplayer();print_s_d();l=200;}if(l==300){sm+=df;df=0;poss3();clsp3z();clsposs3();gotoxy(9,58);printf(" ");clsz();color(11);drawplayer();if(sm<=0){color(12);gotoxy(23,21);printf("游 戏 结 束");_sleep(3000);system("cls");break;}system("cls");color(14);printf("WIN!\n");system("pause");break;}}}else{color(7);drawmap();color(11);drawplayer();print_s_d();l=0;poss1_x=12;poss1_y=5;way=0;poss1sm=200;poss2_x=10;poss2_y=5;poss2sm=400;poss3_x=10;poss3_y=5;poss3sm=400;while(sm>0){_cin();clsz();move();drawz();_sleep(50);l++;if(l%20==0){df++;print_s_d();}if(l==300){poss3();clsp3z();clsposs3();gotoxy(9,58);printf(" ");if(sm<=0){color(12);gotoxy(23,21);printf("游 戏 结 束");_sleep(3000);system("cls");df+=300;break;}sm+=240;df+=800;color(11);drawplayer();print_s_d();l=0;}else if(l==200){poss2();clsp2z();clsposs2();gotoxy(9,58);printf(" ");if(sm<=0){color(12);gotoxy(23,21);printf("游 戏 结 束");_sleep(3000);system("cls");break;}sm+=120;df+=100;color(11);drawplayer();print_s_d();l=200;}else if(l==100){poss1();clsp1z();clsposs1();gotoxy(9,58);printf(" ");if(sm<=0){color(12);gotoxy(23,21);printf("游 戏 结 束");_sleep(3000);system("cls");break;}sm+=60;df+=20;color(11);drawplayer();print_s_d();l=100;}}system("cls");color(14);printf("最终得分:%d\n",df);system("pause");}}}
int chu(){short k=0;char bei='b';color(9);gotoxy(16,36);printf("飞机大战");gotoxy(18,29);printf("按s,w键切换 空格键确认");while(bei!=' '){if(k==0){color(14);gotoxy(20,34);printf("→");gotoxy(20,44);printf("←");color(12);}else{gotoxy(20,34);printf(" ");gotoxy(20,44);printf(" ");color(10);}gotoxy(20,36);printf("关卡模式");if(k==1){color(14);gotoxy(22,34);printf("→");gotoxy(22,44);printf("←");color(12);}else{gotoxy(22,34);printf(" ");gotoxy(22,44);printf(" ");color(10);}gotoxy(22,36);printf("生存模式");if(k==2){color(14);gotoxy(24,34);printf("→");gotoxy(24,44);printf("←");color(12);}else{gotoxy(24,34);printf(" ");gotoxy(24,44);printf(" ");color(10);}gotoxy(24,36);printf("退出游戏");bei=getch();if(bei=='s'||bei=='S')k=(k+1)%3;if(bei=='w'||bei=='W'){k--;if(k<0)k=2;}}system("cls");color(7);if(k==2)exit(0);return k;}
void color(int a){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);return;}
void gotoxy(int i,int j){COORD position={j,i};SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),position);return;}
void full_screen(){HWND hwnd=GetForegroundWindow();int cx=GetSystemMetrics(SM_CXSCREEN);int cy=GetSystemMetrics(SM_CYSCREEN);LONG l_WinStyle=GetWindowLong(hwnd,GWL_STYLE);SetWindowLong(hwnd,GWL_STYLE,(l_WinStyle|WS_MAXIMIZE|WS_POPUP)&~WS_CAPTION&~WS_THICKFRAME&~WS_BORDER); SetWindowPos(hwnd,HWND_TOP,0,0,cx,cy,0);return;}
void start(){color(9);gotoxy(3,36);printf("飞");_sleep(250);color(12);gotoxy(3,38);printf("机");_sleep(250);color(11);gotoxy(3,40);printf("大");_sleep(250);color(14);gotoxy(3,42);printf("战");_sleep(250);color(7);gotoxy(5,34);printf("游戏加载中…");color(10);for(int i=0;i<20;i++){for(int j=0;j<6;j++){gotoxy(7,20+i*2);switch(j){case 0:printf("▏");break;case 1:printf("▎");break;case 2:printf("▍");break;case 3:printf("▌");break;case 4:printf("▋");break;case 5:printf("▉");break;}_sleep(25);}}return;}
void csh(){CONSOLE_CURSOR_INFO cursor_info={1,0};SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);px=10;py=35;z[0][0]=py+2;z[0][1]=px+1;z[1][0]=py+2;z[1][1]=px+5;for(int i=0;i<100;i++)zc[i]=false;zc[0]=zc[1]=true;sm=100;sm+=df;df=0;return;}
void drawmap(){gotoxy(0,0);system("cls");for(int i=0;i<39;i++)printf("■");printf("\n");for(int i=1;i<44;i++){printf("■");for(int j=1;j<26;j++)printf(" ");printf("■");for(int j=27;j<38;j++)printf(" ");printf("■\n");}for(int i=0;i<39;i++)printf("■");printf("\n");gotoxy(23,54);for(int i=27;i<38;i++)printf("■");color(11);gotoxy(26,55);printf("游戏规则:");gotoxy(29,55);printf("w,a,s,d,控制飞机移动");gotoxy(32,55);printf("注意别让子弹打中飞机");color(12);gotoxy(23,27);printf("③");_sleep(1000);gotoxy(23,27);printf("②");_sleep(1000);gotoxy(23,27);printf("①");_sleep(1000);gotoxy(23,21);printf("游 戏 开 始");_sleep(1000);gotoxy(23,21);printf(" "); return;}
void drawplayer(){gotoxy(py,px*2+6);printf("│");gotoxy(py+1,px*2+6);printf("▲");gotoxy(py+2,px*2+4);printf("◢█◣");gotoxy(py+3,px*2);printf("◥█████◤");gotoxy(py+4,px*2+4);printf("◢█◣");return;}
void clsplayer(){gotoxy(py,px*2+6);printf(" ");gotoxy(py+1,px*2+6);printf(" ");gotoxy(py+2,px*2+4);printf(" ");gotoxy(py+3,px*2);printf(" ");gotoxy(py+4,px*2+4);printf(" ");return;}
void _cin(){if(kbhit()!=0){while(kbhit()!=0)c=getch();switch(c){case 'w':case 'W':{if(py>10){clsplayer();py--;color(11);drawplayer();}break;}case 's':case 'S':{if(py<39){clsplayer();py++;color(11);drawplayer();}break;}case 'a':case 'A':{if(px>1){clsplayer();px--;color(11);drawplayer();}break;}case 'd':case 'D':{if(px<19){clsplayer();px++;color(11);drawplayer();}break;}}}return;}
void move(){int minn=INT_MAX;for(int i=0;i<100;i++){if(zc[i]){z[i][0]--;if(z[i][0]==0)zc[i]=false;minn=min(minn,(py-z[i][0]+2));}}if(minn>=4){change(0);change(1);}return;}
void change(int k){for(int i=k;i<100;i+=2){if((!zc[i])&&k==0&&i%2==0){z[i][0]=py+2;z[i][1]=px+1;zc[i]=true;break;}if((!zc[i])&&k==1&&i%2==1){z[i][0]=py+2;z[i][1]=px+5;zc[i]=true;break;}}return;}
void drawz(){bool _bool=false;color(14);for(int i=0;i<100;i++){if(zc[i]){gotoxy(z[i][0],z[i][1]*2);printf("┇");_bool=true;}}if(_bool){color(11);drawplayer();}return;}
void clsz(){for(int i=0;i<100;i++)if(zc[i]){gotoxy(z[i][0],z[i][1]*2);printf(" ");}return;}
void print_s_d(){color(11);gotoxy(3,60);printf("生命:%d ",sm);gotoxy(6,60);printf("得分:%d ",df);return;}
void swa(int k){color(11);gotoxy(22,19);printf("恭喜你关通过第%d关",k);gotoxy(24,21);printf("第%d关即将开始",k+1);_sleep(3000);gotoxy(22,19);printf(" ");gotoxy(24,21);printf(" ");return;}
void printposs1(){gotoxy(poss1_y,poss1_x*2+2);printf("▼");gotoxy(poss1_y+1,poss1_x*2);printf("◥〒◤");return;}
void clsposs1(){gotoxy(poss1_y,poss1_x*2+2);printf(" ");gotoxy(poss1_y+1,poss1_x*2);printf(" ");return;}
void moveposs1z(){int minn=INT_MAX;for(int i=0;i<50;i++){if(p1zc[i]){p1z[i][0]++;if(p1z[i][0]==44)p1zc[i]=false;minn=min(minn,(p1z[i][0]-poss1_y-1));}}if(minn>=10)changeposs1z();return;}
void changeposs1z(){for(int i=0;i<50;i++){if(!p1zc[i]){p1z[i][0]=poss1_y+1;p1z[i][1]=poss1_x+1;p1zc[i]=true;p1zc[i]=true;break;}}return;}
void drawp1z(){color(10);for(int i=0;i<50;i++){if(p1zc[i]){gotoxy(p1z[i][0],p1z[i][1]*2);printf("┇");}}return;}
void clsp1z(){for(int i=0;i<50;i++)if(p1zc[i]){gotoxy(p1z[i][0],p1z[i][1]*2);printf(" ");}return;}
void po1_p(){for(int i=0;i<50;i++)if(p1zc[i]&&((p1z[i][0]==py&&p1z[i][1]==px+3)||(p1z[i][0]==py+1&&p1z[i][1]==px+3)||(p1z[i][0]==py+2&&p1z[i][1]>=px+2&&p1z[i][1]<=px+4)||(p1z[i][0]==py+3&&p1z[i][1]>=px&&p1z[i][1]<=px+6))){sm-=20;p1zc[i]=false;print_s_d();}return;}
void p_po1(){for(int i=0;i<100;i++)if(zc[i]&&((z[i][0]==poss1_y&&z[i][1]==poss1_x+1)||(z[i][0]==poss1_y+1&&z[i][1]>=poss1_x&&z[i][1]<=poss1_x+2))){poss1sm-=5;prints(poss1sm);zc[i]=false;printposs1();}return;}
void prints(int posssm){color(12);gotoxy(9,58);printf("敌方生命:%d ",posssm);return;}
void poss1(){p1z[0][0]=poss1_y+1;p1z[0][1]=poss1_x+1;for(int i=0;i<50;i++)p1zc[i]=false;p1zc[0]=true;printposs1();while(true){_cin();clsz();move();drawz();_sleep(50);l++;if(l%20==0){df++;print_s_d();}po1_p();p_po1();if(sm<=0||poss1sm<=0)return;if(l%2==0){if(poss1_x==1)way=0;if(poss1_x==23)way=1;clsposs1();if(way==0)poss1_x++;else poss1_x--;color(12);printposs1();}clsp1z();moveposs1z();drawp1z();color(12);printposs1();prints(poss1sm);}return;}
void printposs2(){gotoxy(poss2_y,poss2_x*2+4);printf("◥█◤");gotoxy(poss2_y+1,poss2_x*2);printf("◢█████◣");gotoxy(poss2_y+2,poss2_x*2+4);printf("◥█◤");gotoxy(poss2_y+3,poss2_x*2+6);printf("▼");gotoxy(poss2_y+4,poss2_x*2+6);printf("│");return;}
void clsposs2(){gotoxy(poss2_y,poss2_x*2+4);printf(" ");gotoxy(poss2_y+1,poss2_x*2);printf(" ");gotoxy(poss2_y+2,poss2_x*2+4);printf(" ");gotoxy(poss2_y+3,poss2_x*2+6);printf(" ");gotoxy(poss2_y+4,poss2_x*2+6);printf(" ");return;}
void moveposs2z(){int minn=INT_MAX;for(int i=0;i<100;i++){if(p2zc[i]){p2z[i][0]++;if(p2z[i][0]==44)p2zc[i]=false;minn=min(minn,(p2z[i][0]-1-poss2_y));}}if(minn>=4){changep2(0);changep2(1);}return;}
void changep2(int k){for(int i=k;i<100;i+=2){if((!p2zc[i])&&k==0&&i%2==0){p2z[i][0]=poss2_y+1;p2z[i][1]=poss2_x+1;p2zc[i]=true;break;}if((!p2zc[i])&&k==1&&i%2==1){p2z[i][0]=poss2_y+1;p2z[i][1]=poss2_x+5;p2zc[i]=true;break;}}return;}
void drawp2z(){bool _bool=false;color(10);for(int i=0;i<100;i++){if(p2zc[i]){gotoxy(p2z[i][0],p2z[i][1]*2);printf("┇");_bool=true;}}if(_bool){color(12);printposs2();}return;}
void clsp2z(){for(int i=0;i<100;i++)if(p2zc[i]){gotoxy(p2z[i][0],p2z[i][1]*2);printf(" ");}return;}
void po2_p(){for(int i=0;i<100;i++)if(p2zc[i]&&((p2z[i][0]==py&&p2z[i][1]==px+3)||(p2z[i][0]==py+1&&p2z[i][1]==px+3)||(p2z[i][0]==py+2&&p2z[i][1]>=px+2&&p2z[i][1]<=px+4)||(p2z[i][0]==py+3&&p2z[i][1]>=px&&p2z[i][1]<=px+6))){sm-=20;p2zc[i]=false;print_s_d();}return;}
void p_po2(){for(int i=0;i<100;i++)if(zc[i]&&((z[i][0]==poss2_y+1&&z[i][1]>=poss2_x&&z[i][1]<=poss2_x+6)||(z[i][0]==poss2_y+2&&z[i][1]>=poss2_x+2&&z[i][1]<=poss2_x+4)||(z[i][0]==poss2_y+3&&z[i][1]==poss2_x+3)||(z[i][0]==poss2_y+4&&z[i][1]==poss2_x+3))){poss2sm-=5;prints(poss2sm);zc[i]=false;}return;}
void poss2(){color(12);printposs2();int xx[3]={1,10,19};p2z[0][0]=poss2_y+1;p2z[0][1]=poss2_x+1;p2z[1][0]=poss2_y+1;p2z[1][1]=poss2_x+5;for(int i=0;i<100;i++)p2zc[i]=false;p2zc[0]=p2zc[1]=true;srand(time(NULL));while(true){_cin();clsz();move();drawz();l++;if(l%20==0){df++;print_s_d();}clsposs2();if(l%20==0)poss2_x=xx[rand()%3];color(12);printposs2();prints(poss2sm);clsp2z();moveposs2z();p_po2();po2_p();if(sm<=0||poss2sm<=0)return;drawp2z();_sleep(50);}return;}
void quick_sort(int l,int r){if(l==r) return;int i=l-1,j=r+1,x=sorty[l+r>>1];while(i<j){do i++;while(sorty[i]<x);do j--;while(sorty[j]>x);if(i<j){swap(sorty[i],sorty[j]);swap(sortx[i],sortx[j]);}}quick_sort(l,j);quick_sort(j+1,r);}
void printposs3(){gotoxy(poss3_y,poss3_x*2+4);printf("◥█◤");gotoxy(poss3_y+1,poss3_x*2);printf("◢█████◣");gotoxy(poss3_y+2,poss3_x*2+4);printf("◥█◤");gotoxy(poss3_y+3,poss3_x*2+6);printf("▼");gotoxy(poss3_y+4,poss3_x*2+6);printf("│");return;}
void clsposs3(){gotoxy(poss3_y,poss3_x*2+4);printf(" ");gotoxy(poss3_y+1,poss3_x*2);printf(" ");gotoxy(poss3_y+2,poss3_x*2+4);printf(" ");gotoxy(poss3_y+3,poss3_x*2+6);printf(" ");gotoxy(poss3_y+4,poss3_x*2+6);printf(" ");return;}
void moveposs3z(){int minn=INT_MAX;for(int i=0;i<100;i++){if(p3zc[i]){p3z[i][0]++;if(p3z[i][0]==44)p3zc[i]=false;minn=min(minn,(p3z[i][0]-1-poss3_y));}}if(minn>=4){changep3(0);changep3(1);}return;}
void changep3(int k){for(int i=k;i<100;i+=2){if((!p3zc[i])&&k==0&&i%2==0){p3z[i][0]=poss3_y+1;p3z[i][1]=poss3_x+1;p3zc[i]=true;break;}if((!p3zc[i])&&k==1&&i%2==1){p3z[i][0]=poss3_y+1;p3z[i][1]=poss3_x+5;p3zc[i]=true;break;}}return;}
void drawp3z(){bool _bool=false;color(10);for(int i=0;i<100;i++){if(p3zc[i]){gotoxy(p3z[i][0],p3z[i][1]*2);printf("┇");_bool=true;}}if(_bool){color(12);printposs3();}return;}
void clsp3z(){for(int i=0;i<100;i++)if(p3zc[i]){gotoxy(p3z[i][0],p3z[i][1]*2);printf(" ");}return;}
void p3move(){int l=0,ip[14],ipl,lon,minn;bool Map[27],k,wc=true;for(int i=0;i<100;i++){if(zc[i]&&z[l][0]>=5){sorty[l]=z[i][0];sortx[l]=z[i][1];l++;}}if(l>0)quick_sort(0,l-1);if(l>0){for(int i=l-1;i>=0;i--){for(int j=1;j<26;j++)Map[j]=false;Map[0]=Map[26]=true;ipl=0;lon=0;minn=INT_MAX;k=true;for(int j=i;j>=0;j--)Map[sortx[j]]=true;for(int j=0;j<27;j++){if(!Map[j]){lon++;if(lon>=7){ip[ipl]=j-6;ipl++;}}else lon=0;}if(ipl>0){for(int j=0;j<ipl;j++){if(abs(poss3_x-ip[j])<minn){minn=abs(poss3_x-ip[j]);if(poss3_x-ip[j]<=0)k=false;else k=true;}}}if(ipl>0){wc=false;if(k){if(minn==1)poss3_x--;else if(minn==2)poss3_x-=2;else if(minn>=3)poss3_x-=3;}else{if(minn==1)poss3_x++;else if(minn==2)poss3_x+=2;else if(minn>=3)poss3_x+=3;}break;}}}if(wc){int zf=rand()%2;if(zf==0)zf--;int q=rand()%5+1;for(int i=0;i<q;i++)if(poss3_x+zf>0&&poss3_x+zf<19){clsposs3();poss3_x+=zf;color(12);printposs3();}if(l%240==0){changep3(0);changep3(1);}}return;}
void po3_p(){for(int i=0;i<100;i++)if(p3zc[i]&&((p3z[i][0]==py&&p3z[i][1]==px+3)||(p3z[i][0]==py+1&&p3z[i][1]==px+3)||(p3z[i][0]==py+2&&p3z[i][1]>=px+2&&p3z[i][1]<=px+4)||(p3z[i][0]==py+3&&p3z[i][1]>=px&&p3z[i][1]<=px+6))){sm-=10;p3zc[i]=false;print_s_d();}return;}
void p_po3(){for(int i=0;i<100;i++)if(zc[i]&&((z[i][0]==poss3_y+1&&z[i][1]>=poss3_x&&z[i][1]<=poss3_x+6)||(z[i][0]==poss3_y+2&&z[i][1]>=poss3_x+2&&z[i][1]<=poss3_x+4)||(z[i][0]==poss3_y+3&&z[i][1]==poss3_x+3)||(z[i][0]==poss3_y+4&&z[i][1]==poss3_x+3))){poss3sm-=5;prints(poss3sm);zc[i]=false;}return;}
void poss3(){color(12);printposs3();p3z[0][0]=poss3_y+1;p3z[0][1]=poss3_x+1;p3z[1][0]=poss3_y+1;p3z[1][1]=poss3_x+5;for(int i=0;i<100;i++)p3zc[i]=false;p3zc[0]=p3zc[1]=true;while(true){_cin();clsz();move();drawz();color(12);printposs3();_sleep(50);l++;if(l%10==0){sm++;print_s_d();prints(poss3sm);}clsp3z();moveposs3z();drawp3z();po3_p();p_po3();if(sm<=0||poss3sm<=0)return;clsposs3();p3move();if(l%60==0){int zf=rand()%2;if(zf==0)zf--;int q=rand()%10+1;for(int i=0;i<q;i++)if(poss3_x+zf>1&&poss3_x+zf<19){clsposs3();poss3_x+=zf;color(12);printposs3();}}}return;}
边栏推荐
猜你喜欢

idea使用@Autowired注解爆红原因及解决方法

第三次HarmonyOS培训

2. 两数相加

MOSN 反向通道详解

Common lipophilic cell membrane dyes DiO, Dil, DiR, Did spectrograms and experimental procedures

How to prepare for the test interface test data

Tag stack - stack monotonically preparatory knowledge - lt. 739. The daily temperature

typescript41-class类的私有修饰符

Interface Test Framework Practice (4) | Get Schema Assertion

第四次培训
随机推荐
【HMS core】【Ads Kit】Huawei Advertising——Overseas applications are tested in China. Official advertisements cannot be displayed
shell script loop statement
VSO Downloader Ultimate 5.0.1.45 中文多语免费版 在线视频下载工具
Technology Sharing | How to do assertion verification for xml format in interface automation testing?
typescript45-接口之间的兼容性
Js学习笔记(四)
1069 微博转发抽奖 (20 分)(C语言)
HarmonyOS应用开发第一次培训
Newifi路由器第三方固件玩机教程,这个路由比你想的更强大以及智能_Newifi y1刷机_smzdm
typescript40-class类的保护修饰符
Talking about GIS Data (6) - Projected Coordinate System
Get the Ip tool class
1089 狼人杀-简单版 (20 分)
[Harmony OS] [ARK UI] ETS context basic operations
FileZilla 搭建ftp服务器
dataframe插入一列
Business table analysis - balance system
[Fine talk] Using native js to implement todolist
高可用 两地三中心
Interface testing framework combat (3) | JSON request and response assertion