Qt小遊戲開發 貪吃蛇

2021-07-02 23:30:05 字數 1616 閱讀 2571

週末沒事,手寫小遊戲繼續~

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...