美文网首页
Android 贪吃蛇

Android 贪吃蛇

作者: 废柴大妈 | 来源:发表于2017-09-27 11:20 被阅读0次

先上个效果图吧

贪吃蛇.gif

改个颜色,瞬间帅气了有木有。

帅气.jpg

实现思路:

自定义一个View,在游戏开始的时候,开启一个定时器,不停地去刷新界面(即调用View的invalidate或者postInvalidate)。在onDraw中去绘制蛇身、食物,并且要判断蛇是否吃到了苹果,是否死亡(碰到边界或者咬到自己)。

其中

· 蛇身可以看做的一些连续的点的集合,用一个List<PointF>来维护。  

·食物可以看做是一个点,用一个PointF来维护。

·由于蛇可以拐弯,而且可以连续地拐,所以还需要一个List<PointF>来维护拐点。

绘制过程:

食物的是一个点。可以直接用canvas.drawCircle()来绘制。

难点在于蛇身的绘制,用的是canvas.drawPath()来绘制一系列点的联结,其中path是这样定位的:蛇尾->拐点1->拐点2->拐点3->....->蛇头。这里面的拐点又涉及到一个失效的问题,当蛇身中所有的点都经过了这个拐点的时候,它就失效了。就要从拐点的List中移除它。如果不让它失效的话,会造成绘制混乱,这里不细说。

蛇身绘制代码段.jpg

两个判断:

·是否吃到食物:这个比较容易,只要判断蛇头和食物是否是同一个点即可。但是有一点需要注意,就是在判断过程中不能刷新界面,因为刷新过程中的蛇头是不停移动的。如果不停止刷新,可能会有碰到食物但是吃不到的现象。吃到食物后,蛇身要增加一个点。这里我是加在了尾部。

吃食物代码段.jpg

·是否死亡:

碰到边界死亡:循环蛇身看是否有超出边界的点即可。

咬到自己死亡:看蛇头是否与蛇身中其他点重合即可。

废话两句

我得承认我有个特别不好的毛病,就是做事只做一半。也许就是我成不了大器的原因哈哈。游戏是花了十几个小时完成的,但是还有很多需要完善的地方。比如说:有的时候会不明原因地死掉,有的时候拐点没有失效导致蛇身绘制混乱。因为都是一些随机的情况,真的非常难测试(自己给自己找借口)。我还默默地决定不随便上传源码了哈。

相关文章

  • Android 贪吃蛇

    先上个效果图吧 改个颜色,瞬间帅气了有木有。 实现思路: 自定义一个View,在游戏开始的时候,开启一个定时器,不...

  • Android贪吃蛇

    0x0000 写在前面 记得第一次做贪吃蛇,是在大一学习C++,在贴吧看到了源码,心里一动,连抄带蒙,用VS实现了...

  • Android贪吃蛇游戏

    闲来无事,就自己做了一个经典的贪吃蛇的小游戏,瞬间回到童年,感觉自己从头到尾写一个非常有意思。 演示效果 Gith...

  • 贪吃蛇巴士 for Mac(休闲街机游戏) v0.1

    贪吃蛇巴士(snakeybust)是将经典街机游戏“贪吃蛇”用现代图形来展现的休闲街机游戏。贪吃蛇巴士Mac版游戏...

  • 贪吃蛇背后的故事

    贪吃蛇介绍 贪吃蛇最先出现于1976年,是Gremlin平台推出的一款经典街机游戏Blockade。贪吃蛇(也叫做...

  • 贪吃蛇大结局

    童年的回忆,贪吃蛇大结局,看一下贪吃蛇最后变成了什么?

  • JS-进阶-Day2

    贪吃蛇案例:

  • 从零开始的贪吃蛇游戏

    打算从零开始开发贪吃蛇游戏,写个帖子,记录一下制作过程 先准备一个空项目,当然是熟悉的qt on android框...

  • 贪吃蛇

    js 贪吃蛇代码

  • 逆向破解Android版贪吃蛇

    逆向就像破案,不断找线索,等最后破案了才发现原来如此简单。先说下破解目标,在无尽模式下让蛇不死。首先神器apkto...

网友评论

      本文标题:Android 贪吃蛇

      本文链接:https://www.haomeiwen.com/subject/qygyextx.html