C語(yǔ)言實(shí)現(xiàn)flappy bird游戲
本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)flappy bird的具體代碼,供大家參考,具體內(nèi)容如下
#include<stdio.h>
#include<conio.h>
#include<windows.h>
//定義全局變量
int high,width; //邊界
int bird_x,bird_y; //小鳥(niǎo)坐標(biāo)
int bar_y; //擋板坐標(biāo)
int bar_xTop,bar_xDown; //擋板開(kāi)口上下坐標(biāo)
int score; //得分
void HideCursor() //隱藏光標(biāo)
{
CONSOLE_CURSOR_INFO cursor_info = {1, 0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}
void gotoxy(int x,int y) //光標(biāo)移動(dòng)到(x,y)位置
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos;
pos.X = x;
pos.Y = y;
SetConsoleCursorPosition(handle,pos);
}
void startup() //數(shù)據(jù)初始化
{
high=18; //初始化邊界
width=26;
bird_x=high/2; //初始化小鳥(niǎo)坐標(biāo)
bird_y=width/2;
bar_y=width; //擋板坐標(biāo)
bar_xTop=high/2; //擋板開(kāi)口
bar_xDown=bar_xTop+4;
score=0; //得分
HideCursor(); //隱藏光標(biāo)
}
void show() //顯示界面
{
int i,j;
gotoxy(0,0);
for(i=0;i<=high+1;i++)
{
for(j=0;j<=width;j++)
{
if((i==bird_x)&&(j==bird_y))//輸出小鳥(niǎo)@
printf("@");
else if(i==high+1) //輸出下邊界
printf("_");
else if(j==width) //輸出右邊界
printf("|");
else if((j==bar_y)&&((i<=bar_xTop)||(i>=bar_xDown))) //輸出擋板
printf("|");
else printf(" ");
}
printf("\n");
}
printf("得分:%d\n",score);
}
void updateWithoutInput() //與用戶(hù)輸入無(wú)關(guān)的更新
{
if(bird_y==bar_y-1)
{
if((bird_x>bar_xTop)&&(bird_x<bar_xDown)) //小鳥(niǎo)通過(guò)擋板開(kāi)口加分
score++;
else
{
printf("小鳥(niǎo)死亡\n"); //小鳥(niǎo)沒(méi)沒(méi)通過(guò)擋板開(kāi)口小鳥(niǎo)死亡
exit(0);
}
}
if(bar_y>0)
bar_y--;
else
{
bar_y=width;
bar_xTop=rand()%(high-4);
bar_xDown=bar_xTop+4;
}
if(bird_x<high+1)
bird_x++;
else
{
printf("小鳥(niǎo)死亡\n");
exit(0);
}
Sleep(200);
}
void updateWithInpute() //與用戶(hù)輸入有關(guān)的更新
{
char input;
if(kbhit())
{
input=getch();
if((input==' ')&&(bird_x>0)&&(bird_x<=high) ) //小鳥(niǎo)向上跳
bird_x=bird_x-2;
}
}
int main()
{
startup(); //數(shù)據(jù)初始化
while(1)
{
show(); //顯示界面
updateWithoutInput(); //與用戶(hù)輸入無(wú)關(guān)的更新
updateWithInpute(); //與用戶(hù)輸入有關(guān)的更新
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Objective-C不帶加減號(hào)的方法實(shí)例
顯而易見(jiàn)的事實(shí)是,Objective-C 中,+ 表示類(lèi)方法,- 表示實(shí)例方法,這篇文章主要給大家介紹了關(guān)于Objective-C不帶加減號(hào)的相關(guān)資料,需要的朋友可以參考下2021-06-06
項(xiàng)目之C++如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接池
這篇文章主要介紹了項(xiàng)目之C++如何實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接池問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
C++實(shí)現(xiàn)團(tuán)購(gòu)訂單管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了如何利用C++實(shí)現(xiàn)團(tuán)購(gòu)訂單管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-12-12
C++實(shí)現(xiàn)的大數(shù)相乘算法示例
這篇文章主要介紹了C++實(shí)現(xiàn)的大數(shù)相乘算法,結(jié)合實(shí)例形式分析了C++大數(shù)相乘的概念、原理及代碼實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-08-08
C++實(shí)現(xiàn)LeetCode(25.每k個(gè)一組翻轉(zhuǎn)鏈表)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(25.每k個(gè)一組翻轉(zhuǎn)鏈表),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
Qt網(wǎng)絡(luò)編程實(shí)現(xiàn)TCP通信
這篇文章主要為大家詳細(xì)介紹了Qt網(wǎng)絡(luò)編程實(shí)現(xiàn)TCP通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
C語(yǔ)言實(shí)現(xiàn)靜態(tài)版通訊錄的代碼分享
這篇文章主要為大家詳細(xì)介紹了如何利用C語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的靜態(tài)版通訊錄,主要運(yùn)用了結(jié)構(gòu)體,一維數(shù)組,函數(shù),分支與循環(huán)語(yǔ)句等等知識(shí),需要的可以參考一下2023-01-01

