android小游戏:贪吃蛇

阅读更多
贪吃蛇游戏总结:首先大体思路,贪吃蛇游戏需要自定义view,因为需要美化界面,利用画布Canvas,画笔Paint,将你自己想要画的图片画到画布上,而得到图片资源就需要使用BitMap位图,canvas.creatBitMap(bitmap),将位图画到画布上,首先我们要画布局,画四个边框,画边框的时候我们就需要想到屏幕适配的问题,所以要通过DisplayMetrics这个类的heightPixels和widthPixels来获得当前手机屏幕的大小,在通过知道我们要用到的图片的大小来确定画的个数,画完边框,就开始画小蛇,首先我定义的蛇身是两个小方块,头部是一个小方块,这样初始的小蛇就是三个小方块,这是定义一个list集合,将小蛇的坐标通过map添加到list集合中,(这里需要说一下,我有想过直接像list集合中添加坐标,这种就需要使用二围数组),小蛇画完,就需要使小蛇运动了,要想使小蛇运动起来我首先想到的是根据小蛇的运动轨迹,可以看出是蛇身随着蛇头在走,所以要想蛇运动要先让蛇头运动起来,蛇头一动,那么把紧接着就将他的蛇身方块的坐标设成蛇头坐标,以此类推,蛇身就随蛇头动了,这里就需要进行遍历list集合,将下一个坐标赋给上一个,因为蛇运动需要更新UI,后期的随机产生豆,蛇吃豆等一系列动作都需要更新UI,所以考虑到多线程之间的死锁现象,我们将一些操作写到一个线程中,然后通过Handler发送消息进行UI更新,这样我就要写一个启动线程的方法,启动一个线程,当然因为线程中最好代码能少就少,所以我们要将实现功能的方法全部提出来写,然后在线程中去调用,蛇运动起来之后,就需要考虑让他随着方向键指定的方向走的问题了,覆写onKeyDown()方法,通过KEYCODE的匹配,设置键盘上的方向键的点击事件,事件中通过改变蛇头的坐标来匹配方向,这里需要注意的是,例如当小蛇在向上运动时,点击下方向键是不好使的,这就需要通过布尔类型的标志位进行逻辑判断,现在小蛇可以按照方向键指示的方向进行行走了,所以接下来我就需要随机产生豆豆,让小蛇来吃了,随机豆的产生需要注意的是不可出现在小蛇的身上,随机豆产生完毕,接下来就让小蛇去吃豆豆,每吃一个豆就要实现蛇身的增长,并且实现加分操作,并且需要让随机豆消失,同时产生另一个随机豆,蛇身增加方法中需要注意的是,我们要新实例化一个Map,用来承装小蛇的坐标,如果还用原来的那么蛇头就没了,好了,现在基本功能全部实现,接下来我们要进行碰撞检测,也就是当蛇撞向墙壁和撞向自身的时候游戏结束,碰自己只需要在碰墙壁的方法中用蛇头坐标匹配一下墙壁坐标,而碰自己就需要遍历一下list集合,如果集合中的元素和蛇头元素匹配上,那么游戏结束,此时弹出一个Dialog,在Dialog中我需要显示总得分以及设置连个按钮,一个重新开始,一个结束游戏,重新开始就需要在写一个重新开始的方法,在方法里将一些标志位,一些参数的值赋成初始值,即让程序回到初始状态,结束游戏需要跳出页面,页面跳转就需要用到Intent,注意要在MainFest.XML中将第二个页面进行注册,还有就是要将最高分存储起来,在这里我用到的是SharedPreferences,注意这里存储的时候要有个判断,判断当前得分和写入XML中的最高分谁大谁小,将大的放到XML中。程序结束。
  • SnakeGame.rar (2.4 MB)
  • 下载次数: 3

你可能感兴趣的:(message,handler,dialog,intent)