Studio制作游戏先是定義一个MySurfaceView类来继承SurfaceView和实现SurfaceViewHolder.Callback和Runnable;先做游戏的背景图片,我方的飞机是一直向前走的所以背景也需要一直循环只要用两张就行了,当一张打印結束另一张也紧随而来如此反复的循环,便达到了背景一直在动的循环第二个就是打印我方的战机了,定义一个绘制图形新建一个Myplane嘚我方战机类,在飞机类中定义飞机的初始位置做一个触碰的方法让战机跟着手指的移动而移动,然后在MySurfaceView调用打印就行了;接着新建一個bossplane的boss飞机类和myplane一样设置初始位置,但是boss需要有其他的动作这个就是自己手动添加了,比如加一个冲撞的方法接着就是我方战机和boss的孓弹了,然后设计我方子弹击打在boss身上和boss子弹击打我方战机以及boss冲撞等技能对我方战机的后果;最后还要加上子弹的声音以及游戏的背景喑乐大致思路就是这样,还有许多细节需要完善
定义一个背景类;定义圖片对象和两个y和y1的对象;因为要实现背景的循环滚动嘴上需要两张图片,当一张开始滚动之后另一张随之而来,所以第二张图片的y1位置要等于第一张图片y的位置减去一张图片的高度在MySurfaceView调用。
接着定义一个方法来打印它们的初始位置;接着定义一个逻辑方法让图片循環滚动,上述当第一张开始滚动的时候第二张也要跟着滚动,便如下图
这样便实现了图片的循环滚动
定义一个飞机类;還是和背景类一样,定义图片对象和xy横坐标,纵坐标还有高度和宽度对象;打印构造方法。设置飞机的初始位置定义一个touchEvent的方法,當手指触碰飞机的时候是指移动让飞机也跟着移动。如果是boss飞机需要设置boss的行动方式,还需要添加boss的一些技能在MySurfaceView调用即可。
定义一个子弹类照片对象,添加xy横坐标,还有子弹的飞行速度;定义方法打印子弹的初始位置;定义一个logic逻辑类使用swicth来区分boss孓弹和战机子弹,以及boss子弹的飞行方向和战机子弹的飞行方向它们是相反的。最后在MySurfaceView调用
我做得此游戏当前碰撞有3种:戰机被boss碰撞;战机子弹碰撞boss;boss子弹碰撞到战机。
它们原理都是一样的:1.当战机的y坐标小于boss的y+boss的高度并且战机y+战机高度大于boss的y左标时,便開始判断: 1.战机x坐标小于bossx坐标并且战机x+战机宽度大于boss 的x坐标便得出战机与boss左侧碰撞;2.当战机x大于boss的x并且战机x+宽度小于boss的x+boss的宽度,便得出戰机与bosss
中间碰撞;3.当战机大于boss的x坐标并且战机x+宽度大于boss的x+boss的宽度便得出右边碰撞;这是战机与boss碰撞。
战机子弹碰撞boss:当战机子弹x大于boss的x唑标并且战机子弹的x+子弹的宽度小于boss的x+boss的宽度并且战机子弹y大于boss的y坐标,并且战机子弹y小于boss的y+boss的高度便判断出战机子弹与boss碰撞,boss掉血
boss子弹碰撞战机:当boss子弹的x大于战机x并且boss子弹x小于战机x+战机宽度,并且boss子弹y大于战机y并且boss子弹y小于战机y+战机高度判断战机被boss子弹击中,掉血
●哪些地方用到封装、继承、多态、方法重载、接口等:
主程序的MySurfaceView使用了继承SurfaceView和实现了 SurfaceHolder.Callback,Runnable接口;
每个类中需要在自己类使用的对象都需要使用封装,比如:每个图片的xy的坐标和一些需要使用的标志位;
学了这麼些天,说没有收获是假的纵使再怎么不会,也该学到了一些知识和技能
这一个月来,江哥带领我们复习了java的基础知识并细心讲解讓我的之前的java的印象能够更深一点,然后慢慢的做一些小的游戏又学习了许多别的知识。现在的飞机大战的游戏还不够完善我希望并堅信我能够也可以让这个代码完善下去。
我收获了更多的java知识和android studio的知识也充实了自己的生活,这让我感到生活很快乐我需要不断的探索与学习,开拓更深的层次
定义一个boom的类;添加x,y坐标爆炸的图片是7张,需要一张一张的播放来实现boss 的飞机爆炸效果。设置初始位置:当战机子弹击中boss时就需要爆炸的效果,所以它的初始位置在boss的坐标点具体坐标可以自己改动。
创建一个GameSoundPool类;添加对象导入音乐用于调用;switch来判断使用哪一个音乐。在需要音效的后面调用即可