C語言小專案之貪吃蛇

2021-08-22 09:53:17 字數 1683 閱讀 9571

設計思路:

(1)、首先需要定義乙個確定大小的範圍,即乙個矩形範圍。需要定義兩個巨集height ,width分別代表長和寬。

(2)、蛇身設計需要定義乙個一定大小的陣列,由於矩形範圍是height*width , 所以可以定義陣列大小為 height*width即可。

(3)、蛇所吃的食物的設計需要乙個在矩形範圍內隨便出現的光點位置,用乙個隨機函式產生乙個有範圍限制的隨機值即可。需要注意的是

食物出現的位置要避免被蛇身覆蓋。

(4)、蛇身的移動實現是在乙個函式中,迴圈獲得鍵值,判斷鍵值為上下左右任一方向,然後做出響應,例如如果按左鍵,蛇身的

每乙個點除蛇頭外都賦值為當前點的前乙個點的座標,設定蛇頭點向左移動一位即可,蛇身長度length+1。

(5)、存活和死亡的判斷,當移動時迴圈監聽蛇頭的位置即可,當蛇頭和蛇身某位置重合時game over,或者舌頭座標接觸到矩形邊界即撞牆

也game over。

(6)、由於遊戲是乙個動態的過程,因此我們用乙個庫函式來短間隔地重新整理螢幕即可看到動態效果。

(7)、遊戲結束後可以通過鍵值y繼續遊戲,n退出遊戲。

具體的實現方法,及相應的函式,程式中也有詳細的講解,**可直接複製執行。(此次執行實在vs2013下完成)

#define _crt_secure_no_warnings 1

#include #include #include #include #define max_wide 60

#define max_high 20

//蛇身結構體 包含蛇體長度len 和 蛇身陣列

struct snakesnake;

short dx = 1, dy = 0, randxy, score = 0; //dx為橫座標 dy為縱座標

coord coord; //定位光點座標

void draw()

coord.x = randxy & 127; //

coord.y = randxy >> 8; //隨機放置乙個光點*作為食物

setconsolecursorposition(getstdhandle(std_output_handle), coord);

putchar('*'); //顯示隨機放置的光點

}void run()

for (j = 1; j < snake.len; j++)

if (snake.body[j] == snake.body[0]) //蛇頭和蛇身相碰就結束

return;

if (randxy == snake.body[0]) //隨機光點和蛇頭相碰則加長蛇身

for (i = snake.len - 1; i > 0; i--)

snake.body[i] = snake.body[i - 1]; //蛇身整體向前挪動一位

snake.body[0] = ((snake.body[0] & 127) + dx) | ((snake.body[0] >> 8) + dy) << 8; //新的蛇頭的位置

sleep(600); //延時

system("cls"); //螢幕重新整理

前端練手小專案 貪吃蛇

雖然不難 但是可以說 從頭到尾都是自己想的!開心 下面說一下js方面的詳細思路以及遇到的問題,獨立寫下來還是收穫比較大 這裡我的規則就是簡化的版本,也就是隨機出現食物,每次蛇吃到長度就加一。這個專案還比較簡單,因此事件需要繫結的就三個 1 按鍵按鈕 給document全域性繫結,這裡採用keyup而...

C語言 貪吃蛇遊戲專案

蛇的初始化實際就是二維陣列的初始化,該二維陣列儲存兩個值,裡面包含該蛇身體的座標資訊,他出現的初始位置是模擬座標的中間位置。蛇的移動是通過改變二維陣列座標來實現的,例如當蛇向右前進乙個單位,則將尾每乙個身體位置的座標更改,同時改變舌頭 蛇身以及蛇尾的方向。這樣整體來看蛇就前進了乙個單位。當蛇吃了正常...

C語言貪吃蛇

include include include include include include define screen width 40 遊戲螢幕寬度 define screen length 15 遊戲螢幕長度 define start x 16 螢幕起始x座標 define start y ...