貪吃蛇相信大家小時候都玩過,那麼你有沒有想過有一天你也能自己程式設計實現它呢?今天我就在這裡教大家用c語言,通過自頂向下逐步求精的方法,實現乙個簡易的貪吃蛇。
(首先心裡要有點x數)既然是簡易的,那麼沒有高大上的畫面,我們實現的一定是字元版。為了方便我們之後的思考,我們先把最基礎的幾個引數和初始引數定下來。
#include
#include
#define snake_max_length 20
#define snake_head 'h'
#define snake_body 'x'
#define blank_cell ' '
#define wall_cell '*'
#define snake_food '$'
#define stay 's'
char map[12][12] =
;int snakex[snake_max_length] = ;
int snakey[snake_max_length] = ;
int snake_length = 5;
對沒錯,那個二元字元組就是遊戲介面,第二行那一條就是我們的蛇了。
秉著由簡入繁的原則,我們先來實現最基本的功能,就是一條能夠接受我們命令(wasd)動起來,而且撞到牆或者自己會死的蛇。讓我們先敲下偽**。
輸出字元矩陣
while
not 遊戲結束 do
ch=輸入的字元
move(ch);
輸出字元矩陣
endwhile
輸出 game over!!!
然後按照偽**敲下main函式,以及我們秉著「自頂向下、逐步求精」的原則自己寫的move函式以及判斷死亡的函式。這裡用到了兩個小技巧,乙個是getch()這個函式,可以讓程式不需要每次輸入後再敲個回車;另乙個是p這個值(其實就是布林值)來幫助記錄蛇的死活。
void print(char
map[12][12])
printf("\n");
}}int hit_it_self(int x, int y)
int hit_the_wall(int x, int y)
void move(int x)
switch (x)
map[snakey[0]][snakex[0]] = 'h';
}int main()
}printf("game over");
}
貪吃蛇的另一功能就是吃食物,然後變長。這裡有兩個難點:乙個就是放置食物需要隨機,而c語言的隨機是隨機數表法生成的偽隨機,所以我們這裡就需要一點小技巧,根據啟動程式的時間來決定隨機的seed;另乙個則是吃食物後我要實現立刻再生成乙個食物,以及蛇的身體長度加一。下面就是相關的函式。
int food = 0;
int foodx, foody;
int tempx, tempy;
void set_food(char map[12][12])
}if(judge == 1)
//if(judge == 0) set_food(map);如果迭代就會偶爾導致程式崩潰。
}void eat(char map[12][12])
接下來就是最後的部分,我需要蛇能夠自己動起來。就是說,當我沒有輸入的時候,蛇要自己沿著原方向繼續走。這裡我們用了兩個函式,乙個是kbhit()來解決輸入的問題,另乙個則是clock()或者sleep()來解決自己動的問題,我這裡選擇的是前者。其中kbhit的功能是有輸入則返回輸入值,沒有則返回0;clock()則是返回程式執行的時間。
具體**如下:(這裡筆者就將整個main函式再重新敲一遍了。)
char my_kbhit(char movement)
else
return movement;
}int main()
}int
x = movement;
move(x);
int p1 = hit_it_self(snakex, snakey);
int p2 = hit_the_wall(snakex, snakey);
if (p1 == 0 || p2 == 0) p = 0;
else
}}if(snake_length == 20)
printf("game over");
}
這裡為了增加難度,我讓被模的數隨蛇的長度增加而減少,從而實現了蛇越長動得越快來給遊戲增加樂趣。 打造C語言版貪吃蛇(上)
學了程式設計後難免會有些手癢,於是飢渴難耐的我瞄上了小學的經典記憶 貪吃蛇。下面我就遊戲的設計來逐步講解我打造c語言版貪吃蛇的過程。這是乙個系列的文章,共三篇,第一篇講遊戲的主體設計,第二篇就設計的細節及具體實現給出講解,第三篇給出簡易遊戲ai的設計。遊戲中用到了windows的庫,只保證能在win...
貪吃蛇原始碼(C語言版)
貪吃蛇其實就是實現以下幾步 1 蛇的運動 通過 畫頭擦尾 來達到蛇移動的視覺效果 2 生成食物 3 蛇吃食物 實現 畫頭不擦尾 4 遊戲結束判斷 也就是蛇除了食物,其餘東西都不能碰 include include include include include define width 60 def...
C 貪吃蛇的簡單實現版
近期看完c primer,決定小試身手,碰巧看到某博主用c 實現了貪吃蛇,所以我也決定試一試。c 程式設計的核心思想之一就是oo思維 物件導向思維 需要一定的抽象能力,同樣還需要更好的封裝。大概簡述一下我的c 貪吃蛇程式設計思想 物件有 a 遊戲框架 實現遊戲空間,包括外圍牆 貪吃蛇和食物的顯示 由...