Java实训--飞机大战详解0531

本文详述了使用Java开发《飞机大战》的全过程,包括绘制循环滚动背景、玩家与敌机的绘制、子弹碰撞检测、爆炸效果及音效添加。通过封装、继承等技术实现游戏逻辑,并分享了开发中的感悟与收获。
摘要由CSDN通过智能技术生成

整体思路

1.在Andriod Studio中新建Java项目用来做我们的《飞机大战》项目;
2.通过MySurfaceView这个类作为主页面来完成整体布局结构的设计和制作;
3.新建一个类,用来设计战斗时的页面背景,通过draw方法和logic方法形成两张背景图循环播放的效果;
4.新建MyPlane类绘制玩家飞机;
5.新建EnemyPlane来绘制敌方BOSS飞机;
6.新建Bullet类来绘制子弹(敌我双方子弹);
7.新建Boom类绘制飞机爆炸效果;
8.新建GameSoundPool类来添加背景、子弹发射、击中目标等音效;
9.整体结构完成后,具体对各个方面做出完善和修改,如:子弹与飞机碰撞,飞机与敌机碰撞等
下面我们来详细分析一下《飞机大战》这个项目:

如何绘制循环滚动的背景图片

首先我们在BackGround中对背景图的坐标,位图进行定义;然后完成它们的构造方法,draw方法和logic方法,方便调用;关于背景图,我采用了两张同样的图片进行循环,对它们的位置进行判断,规定它们的移动速度使它们可以无缝衔合;最后在MySurfaceView中进行实例化调用。
附代码:(关于draw方法和logic方法的片段)


    public void draw(Canvas canvas,Paint paint) {
        logic();

        canvas.drawBitmap(bitmap, 0, y, paint);
        canvas.drawBitmap(bitmap, 0, y1, paint);
    }

    private void logic() {
        y += 10;
        y1 += 10;
        if (y >= MySurfaceView.height) {
            y = y1 - bitmap.getHeight();
        }
        if (y1 >= MySurfaceView.height) {
            y1 = y - bitmap.getHeight();
        }
    }


这是背景图的绘制思路,当然后期会完成对背景图的完善,通过切换背景图实现更换关卡的效果。

绘制玩家飞机

刚开始制作时,我为飞机定义了它的坐标,位图,宽度和高度等,并创建了它的构造方法,draw方法;在MySurfaceView中进行附参和实例化,并调用MyPlane的draw方法使飞机在背景图中显示出来。
完善:在几天的学习过程中,我们对玩家飞机进行了完善和修改。完善有如下几点:
1.我们给飞机添加了血量hp
2.我们设计onTouchEvent方法移动飞机,监听屏幕 ,实现手指移动飞机
3.为飞机做出被子弹击中后闪烁无敌效果
附代码:(关于touchEvent和isCollision方法的代码片段)

 public void touchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_MOVE) {
            float ex = event.getX();
            float ey = event.getY();
            if (ex > x && ex < width + x && ey > y && ey < height + y) {
                x = (int) ex - width / 2
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值