最近學了一段時間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