c語言實現flybird
原始碼如下:
#include
#include
#include
#include
#include
#include
#include
#include
#pragma comment(lib,"winmm.lib")
//宣告變數
image begin;
//開始介面
image background;
//背景
image bird[2]
;//鳥
image down[2]
;//往下的柱子(上邊的柱子)
image up[2]
;//往上的柱子(下邊的柱子)
image end[2]
;//結束介面
//定義pillar結構體
struct pillar
pillar[3]
;struct pillar *n;
//定義指向pillar[3]的指標
//定義bird結構體
struct bird
flybird=
;struct bird *p;
//定義指向flybird的指標
void
play_bgm()
//定義載入函式
void
load_image()
//定義一組柱子的數量
int i;
//定義初始化柱子的函式
void
init_pillar
(struct pillar pillar,
int i)
pillar[i]
.x=288
; pillar[i]
.y=0
;//起始位置
}//定義輸出柱子的函式
void
put_pillar
(struct pillar pillar,
int i)
}//定義柱子移動的函式
void
move_pillar
(struct pillar pillar,
int i)
endbatchdraw()
;}}//定義輸出鳥的函式
void
put_bird
(int x,
int y)
//定義按鍵函式,按"w"或者"space"鳥就往上動
void
key_down()
}//定義撞擊判斷函式,如果鳥撞到視窗上沿(y座標為0)或者背景圖中的地面(y座標為512),則遊戲結束
intstrike_floor()
else
}//定義撞擊判斷函式,如果鳥撞到柱子,則遊戲結束
intstrike_pillar
(struct pillar pillar)
}if( pillar[i]
.x>=
((p->x)-38
)&& pillar[i]
.x<=
((p->x)+34
))//判斷是否與下邊柱子相撞}}
return0;
//將(return 0)寫在for迴圈外面,如果與三個柱子都沒有碰撞,則返回0
}//定義顯示遊戲結束函式
void
gameover()
system
("gameover.vbs");
//輸出音訊
sleep
(5000);
exit(0
);}int
main()
system
("title flybird beta version 1.0");
initgraph
(288
,608);
//定義視窗大小,視窗座標繫在視窗的左上角
beginbatchdraw()
;putimage(0
,0,&begin)
;//輸出開始介面
sleep
(3000);
endbatchdraw()
;while(1
)if(strike_floor()
||strike_pillar
(pillar)
)sleep(90
);//休眠90ms
endbatchdraw()
;}getchar()
;closegraph()
;return0;
}
FlyBird原始碼 C語言版
其實flybird的實現邏輯難點主要是畫面的重新整理,而對小鳥的控制相對與貪吃蛇 俄羅斯方塊要簡單的多。include include include include int key 80,bird y 15,b long 0,map 60 30 void gotoxy int x,int y in...
C語言實現memcpy
memcpy和memmove都是c語言中的庫函式,在標頭檔案string.h中,作用是拷貝一定長度的記憶體的內容,他們的作用是一樣的,唯一的區別是,當記憶體發生區域性重疊 的時候,memmove保證拷貝的結果是正確的,memcpy不保證拷貝的結果的正確。程式設計師面試寶典中有例題 對應的原型如下 v...
C語言實現多型
c 中的多型是指 通過基類物件的指標或者基類物件的引用呼叫虛函式 表現更多派生類的特性,但根據c 多型的實現,我們發現這種方法存在一定的空間和效率的折損。不可否認,多型輕鬆解決了很多任務程中遇到的問題,這與 pure c 的解決方法比起來,更為優雅。在考慮移植性上,c 的光芒要蓋過 c 但 c 的多...