設計思路:
(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 ...