飞机大战-第1,2关

以下是代码:

#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();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 main(){
    full_screen();csh();start();color(7);drawmap();color(11);drawplayer();print_s_d();
    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");return 0;}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");return 0;}df+=20;clsplayer();csh();color(11);drawplayer();swa(2);color(7);drawmap();color(11);drawplayer();print_s_d();l=200;}
    }
    return 0;
}


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>1){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;}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;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;}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值