qt写贪吃蛇

来源:互联网 发布:济南行知小学官网 编辑:程序博客网 时间:2024/04/29 08:16

其实刚才我写过一次这篇文章,然后我要发表,一直提示我选择文章类型,后来才发现,左上角有个原创或转载什么的选项,于是一大段内心澎湃又细致的文字就这么没了,第二次写,虽然是第一篇,感觉还是没第一次好,废话不多说。



用qt写贪吃蛇,源于我们开的windows程序设计课,这是一个小任务。


1.宏定义max_x,max_y,给整个界面定义,一个qlabel矩阵

2.int定义一个二维数组,对应每一个label,通过值为0,1,2,来控制,label 的颜色什么的(之前那篇文章可谓声情并茂,然而,万恶的复制粘贴失败,什么都一场空了)

Labels[i][j]->setStyleSheet("background:pink");我定义的普通界面为粉色,蛇身为蓝色,没有墙,不过过程中还是有墙的,撞到边界就会gameover哒
3.然后定义蛇<pre name="code" class="plain"> QList<QPoint>snake;   
4.通过qtimer来使蛇动起来

5.判断蛇有没有碰到墙,有没有咬到自己,这些都要gameover
6.判断蛇有没有吃到食物,吃到蛇身要变长。
接下来说一些自己遇到的疑惑:
疑惑一:qlist是什么,自行百度,是一种装不同类型数据的容器,也是在使用和看代码过程中理解,什么叫容器的
<span style="white-space:pre"></span>
疑惑二:为什么不直接装int在qlist里面,这样可以直接判断对应的label怎么表示啊,后来一想,因为蛇要动起来,蛇身要变长什么的,如果用int,就不能取出蛇头的横纵坐标和蛇尾的横纵坐标,就不好控制移动了
<span style="white-space:pre"></span>例如,qpoint.x();qpoint.y(),可以获取横纵坐标;qpoint.setx(值),qpoint.sety(值)来设置该点的横纵坐标;QPoint newpoint = QPoint(1,0); oldpoint += newpoint;这些都是可以的。
疑惑三:蛇怎么动,对此,我在纸上画图,终于想明白它的本质,其实都是假象<img alt="尴尬" src="http://static.blog.csdn.net/xheditor/xheditor_emot/default/awkward.gif" />(老师说的),因为,很多人一开始不理解,就是觉得,怎么让蛇头往前面挪一个,蛇头后面的往前面挪一格,然后整体往前面挪,其实不是这样的,其实整个游戏,不都是建立在一开始你定义的label上吗?有的人问,到底是label在移动还是qpoint在移动,本质上,什么都没有动,只是通过qpoint取出它的横纵坐标,可以得到对应的二维数组的值和label,从而,使label,变成粉色或者蓝色,或者                                             
1 0
原创粉丝点击