当前位置:网站首页>飞机大战完整版
飞机大战完整版
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();bool 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()){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");}}}
bool chu(){bool k=true;char bei='b';color(9);gotoxy(18,36);printf("飞机大战");gotoxy(20,29);printf("按s,w键切换 空格键确认");while(bei!=' '){if(k){color(14);gotoxy(22,34);printf("→");gotoxy(22,44);printf("←");color(12);}else{gotoxy(22,35);printf(" ");gotoxy(22,44);printf(" ");color(10);}gotoxy(22,36);printf("关卡模式");if(!k){color(14);gotoxy(24,34);printf("→");gotoxy(24,44);printf("←");color(12);}else{gotoxy(24,35);printf(" ");gotoxy(24,44);printf(" ");color(10);}gotoxy(24,36);printf("生存模式");bei=getch();if(bei=='s'||bei=='S'||bei=='w'||bei=='W')k=!k;}return k;system("cls");}
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;}
边栏推荐
猜你喜欢
Djiango第四次培训笔记
Newifi路由器第三方固件玩机教程,这个路由比你想的更强大以及智能_Newifi y1刷机_smzdm
web安全-sql注入漏洞
1. 两数之和
[Harmony OS] [ARK UI] ETS context basic operations
阿里云对象存储oss私有桶生成链接
typescript42-readonly修饰符
深度学习入门之GRU
Fluorescent marker peptides FITC/AMC/FAM/Rhodamine TAMRA/Cy3 / Cy5 / Cy7 - Peptide
idea uses @Autowired annotation to explain the reasons and solutions
随机推荐
Odps temporary query can write SQL, turned out to a named?
传说中可“免费白拿”的无线路由器 - 斐讯 K2 最简单刷 breed 与第三方固件教程
User password verification
力扣561. 数组拆分
-飞机大战-
NotImplementedError: file structure not yet supported
【Harmony OS】【ARK UI】ets use startAbility or startAbilityForResult to invoke Ability
Pr第四次培训笔记
MCM box model modeling method and source analysis of atmospheric O3
Super handy drawing tool is recommended
Redis6学习笔记
Newifi路由器第三方固件玩机教程,这个路由比你想的更强大以及智能_Newifi y1刷机_smzdm
2017-06-11 Padavan 完美适配newifi mini【adbyby+SS+KP ...】youku L1 /小米mini
shell script loop statement
Response 重写设置返回值
typescript39-class类的可见修饰符
【Biotin Azide|cas:908007-17-0】Price_Manufacturer
idea uses @Autowired annotation to explain the reasons and solutions
-最高分-
背压机制