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; //小鳥坐標(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; //初始化小鳥坐標(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))//輸出小鳥@
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() //與用戶輸入無(wú)關(guān)的更新
{
if(bird_y==bar_y-1)
{
if((bird_x>bar_xTop)&&(bird_x<bar_xDown)) //小鳥通過(guò)擋板開(kāi)口加分
score++;
else
{
printf("小鳥死亡\n"); //小鳥沒(méi)沒(méi)通過(guò)擋板開(kāi)口小鳥死亡
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("小鳥死亡\n");
exit(0);
}
Sleep(200);
}
void updateWithInpute() //與用戶輸入有關(guān)的更新
{
char input;
if(kbhit())
{
input=getch();
if((input==' ')&&(bird_x>0)&&(bird_x<=high) ) //小鳥向上跳
bird_x=bird_x-2;
}
}
int main()
{
startup(); //數(shù)據(jù)初始化
while(1)
{
show(); //顯示界面
updateWithoutInput(); //與用戶輸入無(wú)關(guān)的更新
updateWithInpute(); //與用戶輸入有關(guān)的更新
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)單鏈表逆序與逆序輸出實(shí)例
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)單鏈表逆序與逆序輸出,是數(shù)據(jù)結(jié)構(gòu)與算法中比較基礎(chǔ)的重要內(nèi)容,有必要加以牢固掌握,需要的朋友可以參考下2014-08-08
C語(yǔ)言詳解數(shù)據(jù)結(jié)構(gòu)與算法中枚舉和模擬及排序
枚舉和模擬其實(shí)是沒(méi)什么算法可言的,大多數(shù)都是按照題目意思去寫,這里提供快排和歸并的兩個(gè)模板,感興趣的朋友來(lái)看看吧2022-04-04
一篇文章帶你實(shí)現(xiàn)C語(yǔ)言中常用庫(kù)函數(shù)的模擬
這篇文章主要介紹了C語(yǔ)言中常用庫(kù)函數(shù)的模擬,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
C++中用棧來(lái)判斷括號(hào)字符串匹配問(wèn)題的實(shí)現(xiàn)方法
這篇文章主要介紹了C++中用棧來(lái)判斷括號(hào)字符串匹配問(wèn)題的實(shí)現(xiàn)方法,是一個(gè)比較實(shí)用的算法技巧,包含了關(guān)于棧的基本操作,需要的朋友可以參考下2014-08-08
C語(yǔ)言?模擬實(shí)現(xiàn)strlen函數(shù)詳解
在 C 語(yǔ)言 中我們要獲取 字符串 的長(zhǎng)度,可以使用strlen 函數(shù),strlen 函數(shù)計(jì)算字符串的長(zhǎng)度時(shí),直到空結(jié)束字符,但不包括空結(jié)束字符,因?yàn)?nbsp;strlen 函數(shù)時(shí)不包含最后的結(jié)束字符的,因此一般使用 strlen函數(shù)計(jì)算的字符串的長(zhǎng)度會(huì)比使用 sizeof 計(jì)算的字符串的字節(jié)數(shù)要小2022-04-04
C++面向?qū)ο笳Z(yǔ)言自制多級(jí)菜單功能實(shí)現(xiàn)代碼
菜單類主要負(fù)責(zé)菜單的創(chuàng)建、修改、刪除,是包含菜單結(jié)構(gòu)組織和響應(yīng)函數(shù)的模型,用戶擁有充分的自主性,可根據(jù)需要自定義菜單顯示和響應(yīng)函數(shù),這篇文章主要介紹了C++面向?qū)ο笳Z(yǔ)言自制多級(jí)菜單,需要的朋友可以參考下2024-06-06
C++實(shí)現(xiàn)希爾排序(ShellSort)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)希爾排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04
C++實(shí)現(xiàn)字符串元音字母反轉(zhuǎn)的兩種方法
在處理字符串問(wèn)題時(shí),我們經(jīng)常需要對(duì)其中的字符進(jìn)行操作,例如反轉(zhuǎn)、替換等,本文將詳細(xì)討論如何在C++中實(shí)現(xiàn)僅反轉(zhuǎn)字符串中的所有元音字母,并返回結(jié)果字符串,需要的朋友可以參考下2024-07-07

