死亡不是梦 2014-12-31 06:14
浏览 1556

android飞机大战散弹设计

package com.example.beatplane;

import java.util.Random;
import com.example.beatplane.R;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
/*单子弹的类*/
public class Bullet extends GameObject{
private Bitmap bullet; // 子弹的图片
Bullet(Resources resources) {
super(resources);
initBitmap();
}

// 初始化数据
@Override
public void initial(int arg0,float arg1,float arg2,int arg3) {
    isAlive = true;
    harm = 1;
    Random ran = new Random();
    speed = (ran.nextInt(20) + 100);    
    object_x = arg1 ;
    object_y = arg2 ;
}
//初始化图片
@Override
public void initBitmap() {
    // TODO Auto-generated method stub
    bullet = BitmapFactory.decodeResource(resources, R.drawable.bullet);
    object_width = bullet.getWidth();
    object_height = bullet.getHeight();
}
// 绘图函数
@Override
public void drawSelf(Canvas canvas) {
    // TODO Auto-generated method stub
    if (isAlive) {
        canvas.save();
        canvas.clipRect(object_x, object_y, object_x + object_width,
                object_y + object_height);
        canvas.drawBitmap(bullet, object_x, object_y, paint);
        canvas.restore();
        logic();
    }
}
@Override
public void release(){
    if(!bullet.isRecycled()){
        bullet.recycle();
    }
}
// 对象的逻辑函数
@Override
public void logic() {
    if (object_y >= 0) {
        object_y -= speed;
    } else {
        isAlive = false;
    }
}
// 检测碰撞
@Override
public boolean isCollide(GameObject obj) {
    if(obj instanceof SmallPlane){
        if (object_x <= obj.getObject_x() && object_x + object_width <= obj.getObject_x()) {
            return false;
        }
        // 矩形1位于矩形2的右侧
        else if (obj.getObject_x() <= object_x && obj.getObject_x() + obj.getObject_width() <= object_x) {
            return false;
        }
        // 矩形1位于矩形2的上方
        else if (object_y <= obj.getObject_y()
                && object_y + object_height + 30 <= obj.getObject_y()) {
            return false;
        }
        // 矩形1位于矩形2的下方
        else if (obj.getObject_y() <= object_y
                && obj.getObject_y() + obj.getObject_height() + 30 <= object_y) {
            return false;
        }
    }
    else if(obj instanceof MiddlePlane){
        if (object_x <= obj.getObject_x() && object_x + object_width <= obj.getObject_x()) {
            return false;
        }
        // 矩形1位于矩形2的右侧
        else if (obj.getObject_x() <= object_x && obj.getObject_x() + obj.getObject_width() <= object_x) {
            return false;
        }
        // 矩形1位于矩形2的上方
        else if (object_y <= obj.getObject_y()
                && object_y + object_height + 20 <= obj.getObject_y()) {
            return false;
        }
        // 矩形1位于矩形2的下方
        else if (obj.getObject_y() <= object_y
                && obj.getObject_y() + obj.getObject_height() + 20 <= object_y) {
            return false;
        }
    }
    else{
        if (object_x <= obj.getObject_x() && object_x + object_width <= obj.getObject_x()) {
            return false;
        }
        // 矩形1位于矩形2的右侧
        else if (obj.getObject_x() <= object_x && obj.getObject_x() + obj.getObject_width() <= object_x) {
            return false;
        }
        // 矩形1位于矩形2的上方
        else if (object_y <= obj.getObject_y()
                && object_y + object_height + 10 <= obj.getObject_y()) {
            return false;
        }
        // 矩形1位于矩形2的下方
        else if (obj.getObject_y() <= object_y
                && obj.getObject_y() + obj.getObject_height() + 10 <= object_y) {
            return false;
        }
    }
    isAlive = false;
    return true;
}

}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥50 如何用脚本实现输入法的热键设置
    • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
    • ¥30 深度学习,前后端连接
    • ¥15 孟德尔随机化结果不一致
    • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
    • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
    • ¥15 谁有desed数据集呀
    • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
    • ¥15 关于#hadoop#的问题
    • ¥15 (标签-Python|关键词-socket)