Qt版貪吃蛇遊戲

2021-06-28 20:31:44 字數 2552 閱讀 1542

qt版貪吃蛇遊戲

以下是windows 7下執行截圖:

以下是ubuntu下執行截圖:

我在windows下編寫好之後,將原始碼在ubuntu下重新編譯執行,就可以在ubuntu下執行,這也充分體現出qt一次編寫,到處執行的優勢。

關於貪吃蛇遊戲的設計原理就不講了,具體可以參考我的部落格《c++版貪吃蛇遊戲》、《vc版貪吃蛇遊戲》。

下面主要說一下qt與vc不同的東西。

先看標頭檔案中變數以及槽的定義:

class snake : public qmainwindow

;

不同的只是

void keypressevent(qkeyevent  *event);

void timerevent(qtimerevent *event);

void paintevent(qpaintevent *event);

三個槽的實現是qt的方式。

牟尼的專欄

具體**如下:

/

void snake::keypressevent(qkeyevent *event)

else if(direction == 4 || direction == 6)

}void snake::timerevent(qtimerevent *event)

else

close();

else if(level>5)

if(qmessagebox::question(this,tr("提示"),tr("你一定是高手!還想挑戰嗎?"),qmessagebox::yes,qmessagebox::no) == qmessagebox::yes)

else

close();

else if(qmessagebox::question(this,tr("提示"),tr("繼續努力!還想挑戰嗎?"),qmessagebox::yes,qmessagebox::no) == qmessagebox::yes)

else

close();

}drawsnake(); //判斷是否吃食物

}this->repaint();

}}void snake::paintevent(qpaintevent *event)

else if(image[i][j] == 1)

else if(direction == 4)

else if(direction == 6)

else

}else if(image[i][j] == 2)}}

}}//

還有乙個是按鍵響應的訊號和槽建立關聯**:

/

connect(ui->action_startgame, signal(triggered()), this, slot(gamestart()));

connect(ui->action_pause, signal(triggered()) ,this, slot(onpause()));

connect(ui->action_quit, signal(triggered()), this, slot(close()));

connect(ui->action_veryfast, signal(triggered()), this, slot(superspeed()));

connect(ui->action_fast, signal(triggered()), this, slot(fastspeed()));

connect(ui->action_mid, signal(triggered()), this, slot(midspeed()));

connect(ui->action_slow, signal(triggered()), this, slot(slowspeed()));

connect(ui->action_veryslow, signal(triggered()), this, slot(veryslowspeed()));

還有乙個小細節就是隨機函式:qsrand() 用於產生食物的位置:

//產生食物

int snake::generatefood()

while(image[foodx][foody]!=0); //產生的食物座標限定在遊戲面板內,且食物座標不與小蛇身體座標重合

image[foodx][foody]=2;

return image[foodx][foody];

}

牟尼的專欄

貪吃蛇遊戲

貪吃蛇遊戲 結構化程式設計 c語言程式設計 重要的的是結構化的程式設計思想 include include include include include include define field width 300 就做20個格仔的 define field height 300 define f...

貪吃蛇遊戲

include include include include include 使用當前時間做種子 enum dir 列舉型別enum dir 圍牆 class fencef 定義物件 畫框框 void fence initfence 顯示框框 void fence outputf int snak...

貪吃蛇遊戲

閒暇之餘,學習前輩經驗,再利用執行緒和窗體自己做了個貪吃蛇小遊戲。遊戲帶有加速功能,能顯示遊戲分數。借鑑的朋友們後期還可以在此基礎上增加其他功能。下面給大家顯示遊戲 以及詳細註解 一 bean類 蛇和食物的構造基礎,author deng public class node public node ...