C語言實現flappy bird(視覺化程式設計)

2021-10-13 11:38:26 字數 3513 閱讀 9057

;//定義圖形變數陣列

initgraph

(288

,624);

//構建乙個寬288,高624的視窗

loadimage

(&bj[0]

,"名稱");

//將賦給圖形變數,就相當於給起乙個名字

loadimage

(&bj[1]

,"名稱");

putimage(0

,0,&bg[0]

);//在0,0的位置貼上

putimage(0

,512

,&bg[1]

);因為我使用的素材是天空與地面分開的背景圖,所以這裡貼了2次。

接著便是貼小鳥和柱子的了,但是與貼背景圖不同的是這裡的小鳥和柱子並不是乙個規則的圖形,所以我們採用透明貼圖技術將小鳥和柱子貼上去。具體方法可以參考下面這篇文章。

因為柱子的高度是隨機而且成對出現的,我們需要乙個隨機數去模擬上面柱子及下面柱子的高度,我們使用結構體的方法去寫柱子。

//下面的x,y都指其所在視窗的位置

//定義小鳥的結構體

struct

huoyin

;struct

huoyin hero =

;//三對柱子的結構體

struct

walls

;struct

walls pillar[3]

;void

pillars

(struct

walls pillar,

int i)

//貼柱子

void

drawwall

(struct

walls nowpillar)

//以時間為種子構建隨機函式

#include

//需要的標頭檔案

srand

(time

(null))

;//移動柱子

for(

int i =

0; i <

3; i++

)//柱子的初始化

for(

int i =

0; i <

3; i++

)//不斷創造新的柱子

for(

int i =

0; i <

3; i++

)}

介紹一下在貼柱子使用的putimage(x,y,width,height,&image,xx,yy),是從(&image)的x,y座標擷取width寬與height高貼在視窗的xx,yy座標上。

#

include

#pragma

comment

(lib,

"winmm.lib"

)dword winapi playmusic

(lpvoid lpvoid)

接著就要實現使用空格讓小鳥彈跳了。

//按鍵響應

void

keydown()

}

//判斷遊戲是否結束

intovers()

else

return0;

}}

//遊戲結束動畫

void

overmovies()

}

#

include

#include

#include

#include

#include

#pragma

comment

(lib,

"winmm.lib"

)//背景圖\小鳥圖\遊戲結束圖\柱子圖

image bg[2]

,bird[2]

[3],end[2]

,wall[4]

;//定義小鳥的結構體

struct

huoyin

;struct

huoyin hero =

;//三對柱子的結構體

struct

walls

;struct

walls pillar[3]

;void

pillars

(struct

walls pillar,

int i)

//批量載入資源(給資料夾裡的命名)

void

jiazai()

//透明貼圖(掩碼圖加原圖)

/*void drawhero()

*///貼柱子*****

void

drawwall

(struct

walls nowpillar)

dword winapi playmusic

(lpvoid lpvoid)

//按鍵響應

void

keydown()

}//判斷遊戲是否結束

intovers()

else

return0;

}}//遊戲結束動畫

void

overmovies()

}int

main()

initgraph

(288

,624);

for(

int num =

0; num <

3; num++)if

(overs()

)break

;//不斷創造新的柱子

for(

int i =

0; i <

3; i++)}

if(overs()

)break

; += 20;if(

overs()

)break;if

(_kbhit()

)if(num ==

2)num =0;

sleep

(100);

}sleep

(240);

overmovies()

;_getch()

;closegraph()

;system

("pause");

return0;

}

因為我還給小鳥做了扇動翅膀的動畫,所以這個for (int num = 0; num < 3; num++)迴圈是載入鳥的三張。

由於有小夥伴找反映不到對應的素材,所以我將素材也放在網盤上分享了

提取碼:1234

還有 3d 模型、貼圖、音效等素材。就是國外**,訪問速度有點慢。

這是第一次在csdn上寫文章,如有不妥之處還請多多包涵。

用C語言實現FlappyBird

在開始遊戲之前,我們先了解一些輔助函式 void gotoxy int x,int y 將游標調整到 x,y 的位置 void hidecursor 隱藏游標 setconsolecursorinfo getstdhandle std output handle cursor info 我們使用乙個...

C語言實現memcpy

memcpy和memmove都是c語言中的庫函式,在標頭檔案string.h中,作用是拷貝一定長度的記憶體的內容,他們的作用是一樣的,唯一的區別是,當記憶體發生區域性重疊 的時候,memmove保證拷貝的結果是正確的,memcpy不保證拷貝的結果的正確。程式設計師面試寶典中有例題 對應的原型如下 v...

C語言實現多型

c 中的多型是指 通過基類物件的指標或者基類物件的引用呼叫虛函式 表現更多派生類的特性,但根據c 多型的實現,我們發現這種方法存在一定的空間和效率的折損。不可否認,多型輕鬆解決了很多任務程中遇到的問題,這與 pure c 的解決方法比起來,更為優雅。在考慮移植性上,c 的光芒要蓋過 c 但 c 的多...