欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

android小游戏:贪吃蛇 messagehandlerdialogintentsharedpreference 

程序员文章站 2022-05-16 12:24:09
...
贪吃蛇游戏总结:首先大体思路,贪吃蛇游戏需要自定义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中。程序结束。