}一定要自己定義set_level(),view_score()等函式,main()函式中主要運用了函式指標來縮短**。其中忽略了必要的#include標頭檔案和using指示(如 using namespace std;),請自行補充。
我的想法是有
兩個線性表
和乙個字串
(一)
定義第乙個線性表的**片段如下:
int coord[sz][2]=},length=1,
fd=;
也就是乙個維數為2的一維的整型陣列,length即蛇身的長度,fd儲存食物的座標,sz是自己定義的乙個常量:
const int cols=60,lines=20,sz=cols*lines;
其中的cols和lines是很重要的常量,它們代表輸出字元的行數和列數,即字元組成的乙個長方形的長和寬,包括有空格(spac),回車(carriage return)和其他的字元,如蛇身(』*』),蛇的食物(』$』),設定邊界(』#』),都可以自己可以定義,如下例:
const char spac=' ',snk_body='*',snk_fd='$';
等等……
(二)
定義第二個線性表的**片段如下:
char dir=;
enum ;
case east:
string s;
init(s,cols,lines);
事實上,函式init(s,cols,lines)更有用,你總得設定一些c_return和bound吧,
但我不貼出這個函式的**,因為我內部實現我寫錯了,導致整個遊戲執行的不好,只能吃乙個球,有時候還吃不到。
你還得定義乙個整型,儲存遊戲時的分數,如下:
int score;
輸出是整個程式中最簡單的一句:
print:
cout
其中check檢查是否吃到食物和是否死亡,檢查死亡很方便,判斷蛇的下一步是不是吃到蛇身就行了,沒必要遍歷蛇身元素,可以用到(二)中資料結構的特性方便實現。
sports把除蛇頭之外的元素的方向(儲存在dir中,見(二))依次賦值為它的前乙個元素的dir值,
即蛇向前移動,然後根據不同的方向按不同方式增減座標,如下所示:
/*start sports*/
for(int i=length-1;i!=0;--i)
dir[i]=dir[i-1];
for(int j=0;j!=length;++j)
switch(dir[j])
/*finished sports*/
其中/**/之間的內容為注釋,在編譯時會忽略,不增加執行時檔案的大小,在c++ primer中也有講到,博主就是看這本書細緻地學習了c++的。
到這裡完了。
再添一張遊戲時的圖:
本來應該蛇身長度+1的,並且賦有正確的方向和座標,卻只是加了分,果然程式中有錯誤。
C 簡單貪吃蛇遊戲
用c 實現的非常簡單的非圖形介面的簡單貪吃蛇遊戲 include include include include include includeusing namespace std void transport short short short void set short,short void...
簡單的「貪吃蛇」
近日無事,看見很多地方有人在詢問貪吃蛇程式的做法,剛好我前段時間在公司做手持終端應用開發時,利用乙個午休時間自己也寫了個貪吃蛇程式玩玩,效果和手機 遊戲機上一樣,但是程式是在公司電腦上,由於資訊保安,是拷不出來的,這裡就給大家講講如何寫貪吃蛇程式吧。其實貪吃蛇遊戲程式是很簡單的,只要大家坐下來細心地...
C 貪吃蛇二
小菜學習winform 一 貪吃蛇 說到oo可能一說一大堆,這裡面小菜只是簡單的把貪吃蛇抽象出來,先來說蛇,具有的屬性和行為,屬性比如蛇的長度 蛇的寬度 蛇的行動方向等 行為比如是否吃到食物 是否撞牆等,那我們可以抽象乙個蛇的類,這樣實現 1 using system 2using system.c...