QT5實現貪喫蛇使用圖形視圖構架

最近學了一段時間QT,寫個程序鞏固一下所學。

這個貪喫蛇程序參考了很多Qt學習之路2的代碼,我把裏面有些我看不懂的部分換成了自己寫的,總體功能還是實現了,但有很多Bug,希望各位指正。

首先是QGraphicsView,因爲我希望能夠,自定義背景,所有我寫了個Map類繼承了它,然後重寫了他的drawBackground(),這樣就可以自定義不同的圖片來做背景了。同時也不用擔心尺寸大小的問題,關於尺寸的我都用了.width(),.height()。函數取的所有尺寸會跟着圖片大小變。

       重點是蛇的移動這樣我看不懂,我用了個QList來存儲蛇的身體,然後takelast()取出最後一個值,然後加到頭取,實現移動。如果喫到food就不會用takelast()了,直接在頭insert()對應的點。

QGraphicsItem的碰撞函數cooidingItems()還是很屌的,蛇自己喫到自己我本來想用自己碰撞自己,然後讀他的data()(事先設置了),發現讀不出來好像自己碰撞自己檢測不出來,用的是QList自帶的contains(),要記得去掉頭。

Timer和advance()的使用是寫這個遊戲的關鍵,有點像滴答定時器,可以設置這個遊戲每秒多少幀。

因爲主顯示是個繼承QMainWindow的類就在工具欄加了兩個工具按鈕實現結果如圖:

建議使用大點的顯示器。


代碼的下載如下:

http://download.csdn.net/detail/u013239402/9658160


        


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章