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


        


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