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


        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值