#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(); } }