教你實現簡單的貪吃蛇 C語言版

2021-08-13 20:43:54 字數 2285 閱讀 1216

貪吃蛇相信大家小時候都玩過,那麼你有沒有想過有一天你也能自己程式設計實現它呢?今天我就在這裡教大家用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 遊戲框架 實現遊戲空間,包括外圍牆 貪吃蛇和食物的顯示 由...