#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
int high, width; //游戏画面大小
int bird_x, bird_y; //小鸟的坐标
int bar1_y, bar1_xDown, bar1_xTop; //障碍物
int score; //得分,经过障碍物的个数
void gotoxy(int x, int y){ //类似于清屏函数
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(handle, pos);
}
void startup(){
high = 15;
width = 20;
bird_x = 3;
bird_y = width / 3;
bar1_y = width / 2;
bar1_xDown = high / 3;
bar1_xTop = high / 2;
score = 0;
}
void show(){
gotoxy(0, 0); //清屏
int i, j;
for(i = 0; i < high; i++){
for(j = 0; j < width; j++){
if((i == bird_x) && (j == bird_y))
printf("@"); //输出小鸟
else if((j == bar1_y) && ((i < bar1_xDown) || (i > bar1_xTop)))
printf("*"); //输出墙壁
else
printf(" ");
}
printf("\n");
}
printf("Score: %d\n", score);
}
void updateWithoutInput(){
bird_x++;
bar1_y--;
if(bird_y == bar1_y){
if((bird_x >= bar1_xDown) && (bird_x <= bar1_xTop))
score++;
else{
printf("Failed\n");
system("pause");
exit(0);
}
}
if(bar1_y <= 0){ //再生成一个障碍物
bar1_y = width;
int temp = rand() % (int)high*0.8;
bar1_xDown = temp - high / 10;
bar1_xTop = temp + high / 10;
}
Sleep(150);
}
void updateWithInput(){
char input;
if(kbhit()){
input = getch();
if(input == ' '){
bird_x -= 2;
}
}
}
void main(){
startup();
while(1){
show();
updateWithoutInput();
updateWithInput();
}
}