《the Best Flying》
打飞机!
#include<iostream> #include<stdlib.h> #include<time.h> #include<windows.h> #include<conio.h> using namespace std; char sky[16][11]; bool game; int NumberOfEnemies; int NumberOfShowing; int score; class player{ public: int x=13; int y=5; char plane='A'; char zd='|'; bool attack=false; int x_zd; int y_zd; }; class enemy{ public: int x; int y; char plane='V'; }; player player1; enemy enemies[11]; void color(int a){ SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a); } void init(){ int i,j; for(i=1;i<=15;i++) for(j=1;j<=10;j++) if(j==1||j==10) sky[i][j]='#'; else sky[i][j]=' '; game=true; NumberOfEnemies=0; NumberOfShowing=0; score=0; } int RandomyOfEnemy(){ srand(time(0)); return rand()%8+2; } void show(){ int i,j,k; bool ok; system("cls"); for(i=1;i<=15;i++){ for(j=1;j<=10;j++){ ok=false; if(j>1&&j<10){ if(game==false&&((i==player1.x&&(j==player1.y-1||j==player1.y+1))||(j==player1.y&&(i==player1.x-1||i==player1.x+1)))){ color(14); cout<<"@"; color(15); continue; } if(i==player1.x&&j==player1.y){ if(game==true) color(11); else color(14); cout<<player1.plane; color(15); ok=true; } else{ for(k=1;k<=NumberOfEnemies;k++) if(i==enemies[k].x&&j==enemies[k].y){ if(enemies[k].plane=='@') color; else color(12); cout<<enemies[k].plane; color(15); ok=true; break; } if(ok==false&&player1.attack==true){ if(i==player1.x_zd&&j==player1.y_zd){ color(14); cout<<player1.zd; color(15); ok=true; } } if(ok==false) cout<<sky[i][j]; } } else{ color(10); cout<<sky[i][j]; color(15); ok=true; } } cout<<endl; } cout<<"----------"<<endl; cout<<"Your score: "<<score; } void EnemiesMove(){ int i; for(i=1;i<=NumberOfEnemies;i++) enemies[i].x++; } void NewEnemy(){ int i; if(enemies[1].x>15){ for(i=1;i<NumberOfEnemies;i++){ enemies[i].x=enemies[i+1].x; enemies[i].y=enemies[i+1].y; } enemies[NumberOfEnemies].x=1; enemies[NumberOfEnemies].y=RandomyOfEnemy(); } } void DieEnemy(){ int i,j; bool ok=false; for(i=1;i<=NumberOfEnemies;i++){ if((player1.x_zd==enemies[i].x||player1.x_zd==enemies[i].x+1||player1.x_zd==enemies[i].x-1)&&player1.y_zd==enemies[i].y){ enemies[i].plane='@'; show(); Sleep(50); enemies[i].plane='V'; for(j=i;j<NumberOfEnemies;j++){ enemies[j].x=enemies[j+1].x; enemies[j].y=enemies[j+1].y; } enemies[NumberOfEnemies].x=1; enemies[NumberOfEnemies].y=RandomyOfEnemy(); score++; ok=true; } } if(ok==true) player1.x_zd=0; } void DiePlayer(){ int i; for(i=1;i<=NumberOfEnemies;i++){ if(enemies[i].x==player1.x&&enemies[i].y==player1.y){ game=false; player1.plane='@'; break; } } } void ZdFly(){ if(player1.attack==true) player1.x_zd-=2; if(player1.x_zd<1) player1.attack=false; } void PlayerAttack(){ if(player1.attack==false&&player1.x>1){ player1.attack=true; player1.x_zd=player1.x-1; player1.y_zd=player1.y; } } void PlayerDo(){ while(kbhit()){ switch(getch()){ case 'w': if(player1.x>1) player1.x--; break; case 's': if(player1.x<15) player1.x++; break; case 'a': if(player1.y>2) player1.y--; break; case 'd': if(player1.y<9) player1.y++; break; case ' ': PlayerAttack(); break; } } } void ProcedureOfGame(){ init(); cout<<"╔═══════════════╗"<<endl; cout<<"║ the Best Flying ║"<<endl; cout<<"╠═══════════════╣"<<endl; cout<<"║ Made by Peter Winchester ║"<<endl; cout<<"╠═══════════════╣"<<endl; cout<<"║ How to play ║"<<endl; cout<<"║ Press w, s, a, d to move. The║"<<endl; cout<<"║A is your plane, and the V is ║"<<endl; cout<<"║enemies' plane. Press space to║"<<endl; cout<<"║attack enemies. ║"<<endl; cout<<"║ How much score can you get? ║"<<endl; cout<<"║ Press any key to start. ║"<<endl; cout<<"╚═══════════════╝"<<endl; getch(); while(game==true){ NumberOfShowing++; if(NumberOfShowing<=10&&NumberOfEnemies<10&&NumberOfShowing%3==0){ NumberOfEnemies++; enemies[NumberOfEnemies].x=1; enemies[NumberOfEnemies].y=RandomyOfEnemy(); } show(); Sleep(100); DieEnemy(); EnemiesMove(); DieEnemy(); ZdFly(); NewEnemy(); PlayerDo(); DiePlayer(); } show(); cout<<endl; cout<<"Game over!\n>>>Press m to quite.\n>>>"; } void pause(char *a){ do{ *a=getch(); }while(*a!='m'); cout<<*a; } int main(){ char a; ProcedureOfGame(); pause(&a); return 0; }