升级版打飞机!
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <windows.h>
#include <conio.h>
#include <cmath>
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);
if (enemies[k].plane == '@') {
enemies[k].plane = 'V';
for (int t=k; t<NumberOfEnemies; t++) {
enemies[t].x = enemies[t+1].x;
enemies[t].y = enemies[t+1].y;
}
enemies[NumberOfEnemies].x = 1;
enemies[NumberOfEnemies].y = RandomyOfEnemy();
}
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 (abs(enemies[i].x-player1.x_zd) <= 1 && enemies[i].y == player1.y_zd) {
enemies[i].plane = '@';
score++;
ok = true;
}
}
if (ok == true) {
player1.x_zd = -1;
}
}
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 quit.\n>>>";
}
void pause(char *a) {
do {
*a = getch();
}while (*a != 'm');
cout<<*a;
}
int main() {
char a;
ProcedureOfGame();
pause(&a);
return 0;
}
京公网安备 11010502036488号