標籤:pre out nbsp sleep win use rtu put update
#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(); }}
4 flappy bird