對於新手而言,**似乎是令人難以忍受的事情。但實際上,隨著難題乙個個解決,不論是誰,都會由衷地感到激動。
先從乙個經典的貪吃蛇遊戲開始。我們做的是貪吃蛇的極為簡化的版本,使用命令列的、按一次走一次的那種。
首先,我們要用自頂向下、逐步求精的思想來逐步構建框架。構建框架的最好的方式,當然是通過標頭檔案了。
我們要思考的是,這個貪吃蛇裡面需要完成哪些動作?
最開始,遊戲需要初始化,因此我們在標頭檔案裡面寫上:
void initialize();
然後,我們考慮到蛇是需要運動的,因此:
void movesnake();
但是這個函式似乎需要一點引數,因為要確定蛇的方向。因此我們改動一下這個函式的原型:
void movesnaketowards(enum direction);
這裡需要指出的是,「enum direction
」是乙個整體,它是乙個資料型別。我們要在這個標頭檔案的頂部新增它的定義:
enum direction
;
然後,我們考慮到貪吃蛇裡除了蛇之外還有食物,因此我們需要乙個函式:
void putfood();
這個函式是否需要什麼引數(比如說指定x, y)呢?我們考慮到食物放置的位置是隨機的,因此不需要什麼引數,只要隨機取點,判斷那個點是否是空的就可以了。
我們考慮到蛇頭可能會碰到別的東西,可能是牆,也可能是食物,因此,如果蛇頭進入了非空的地方我們需要判斷一下:
void checkscore();
這個函式的引數似乎不夠,因為判斷乙個具體的點才有意義。因此改為:
void checkscore(int, int);
如果判斷發現玩家被淘汰了,我們需要:
void endgame();
這樣看起來**的框架就做出來了。但是我們往深層次考慮,蛇身移動的時候應該怎麼處理?我們需要乙個佇列:
struct
queue
;
再定義一下幾個函式原型:
void queue_push(struct
queue*, int);
void queue_pop(struct
queue*);
void queue_clear(struct
queue*);
int queue_front(struct
queue*);
int queue_back(struct
queue*);
void queue_getnextindex(struct
queue*, int*);
這樣,**的框架基本就構造完了。然後我們在main
函式中加上這些**:
int main()
while (operation == ' ' || operation == '\n' || operation == '\t');
switch (operation)
}return
0;}
這樣自頂向下的工作就完成得差不多了。接下來就需要逐步求精,把函式的定義補全。考慮到很多讀者看到這裡已經昏昏欲睡,作者的寫部落格的熱情也不是很高。這裡就不詳細講了。不過需要注意的是,「自頂向下,逐步求精」和「物件導向」的方法並不是互斥的。例如,上面有關queue
的函式,實際上是用了「物件導向」的方法。在程式設計的過程中,經常會同時使用多種方法,讀者應當靈活選用。 vb做的貪吃蛇
dim q as integer dim w as integer dim sq as integer dim sw as integer dim cq as integer dim cw as integer dim ss as long dim c as integer dim a as int...
vb做的貪吃蛇
dim q as integer dim w as integer dim sq as integer dim sw as integer dim cq as integer dim cw as integer dim ss as long dim c as integer dim a as int...
c語言做貪吃蛇遊戲
閒話不多說,直接上 include stdio.h include windows.h include stdbool.h 座標系 y x 按鍵 移動 8 4 5 6 9 暫停 define x 20 define y 70 define wait time 700 移動一次需要的時間 enum 對...