週末沒事,手寫小遊戲繼續~
1 定義資料結構
邏輯與介面分離,遊戲場景是個二維陣列區域,貪吃蛇是若干個連續的座標點集合,用動態鍊錶維護,果實是乙個隨機座標點。
const int block_size=25; //單個方塊單元的邊長
const int margin=5; //場景邊距
const int area_row=15; //場景行數
const int area_col=15; //場景列數
qpoint foodpoint; //果實出現座標
qlistsnake; //貪吃蛇結構
const int time_interval=500; //定時器間隔時間
enum direction
;
2新增介面重新整理和鍵盤監聽
首先需要定時器來控制貪吃蛇的移動以及介面的重新整理,繫結定時器的訊號槽
gametimer=new qtimer(this);
connect(gametimer,signal(timeout()),this,slot(snakeupdate()));
視窗重繪
void widget::paintevent(qpaintevent *event)
}
3貪吃蛇移動、吃果實、得分、遊戲結束邏輯
貪吃蛇的移動是個狀態機,總是朝著當前的方向前進,移動的邏輯是,不斷地消除尾部節點,並新增乙個新的頭部結點,如果碰到了果實,則不消除尾部結點
每次吃到了果實後會重新隨機生成乙個果實,並且保證果實不會與貪吃蛇身體重疊。
void widget::snakeupdate()
//如果吃到了果實,則尾部不刪除,否則刪除尾部更新頭部
if(snake.contains(foodpoint))
else
snake.pop_back();
//遊戲是否結束
if(isgameover())
update(); //重繪,比repaint函式效果好
}
void widget::generatefood()
當貪吃蛇頭部出界或者撞到了自身則判定為遊戲結束
bool widget::isgameover()
遊戲暫停和恢復
void widget::pauseresumegame()
else
}
遊戲結束
void widget::gameover()
csdn:
貪吃蛇github:
snake
貪吃蛇小遊戲
1 doctype html 2 html 3 head 4 title snake title 5head 6 body style text align center margih 100px background color aaaaaa 7 canvas id canv width 400 ...
Java貪吃蛇小遊戲開發
1 主要的物件 網格 邊界 食物 遊戲之一 蛇 主要物件 遊戲 由網格 食物 蛇組成而有規則的遊戲控制 因為食物是由單位網格 乙個網格 以及蛇是由幾個網格 蛇身 組成的 所以將乙個網格 乙個網格的表示不最基本的資料型別表示 所以封裝起來能方便使用 封裝起來即用節點表示 2 物件的屬性和方法 食物屬性...
C 貪吃蛇小遊戲
自學了幾天c 嘗試寫了乙個貪吃蛇小遊戲,比較詳細地做了注釋,實現 1 貪吃蛇基本功能 2 長按加速 3 計分板 xaml 及介面 namespace 貪吃蛇 新食物生成 public void newfoodgenerate 計時器每乙個計時週期內的時間處理程式 void timer tick ob...