yjkup 2016-08-06 06:04 采纳率: 0%
浏览 1907

java矩形为什么碰撞检测出不来?

package plane;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.awt.Rectangle;
import util.Constant;
import util.GameUtil;
import util.MyFrame;

public class PlaneFrame extends MyFrame {
Image bg=GameUtil.getImage("images/bg.jpg");
Image boom=GameUtil.getImage("images/boom.jpg");
Plane p=new Plane("images/2.png",50,50);
ArrayList bulletList= new ArrayList();
public void paint(Graphics g){
g.drawImage(bg, 0, 0, null);
p.draw(g);
for(int i=0;i<bulletList.size();i++){
Bullet b=(Bullet)bulletList.get(i);
b.draw(g);
//检测和飞机的碰撞
boolean peng=b.getRect().intersects(p.getRect());
if(peng){
System.out.println("============================");
}
}

}package plane;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;

import util.GameUtil;

public class Plane extends GameObject {
private boolean left,right,up,down;
private boolean live=true;

public boolean isLive() {
return live;
}
public void setLive(boolean live) {
this.live = live;
}
public Rectangle getRect(){

    return new Rectangle((int)x,(int)y,width,height);
}
public Plane() {
    super();
}

public void draw(Graphics g){
    if(live){
        g.drawImage(img, (int)x, (int)y, null);
    move();
    }
}
public void move(){
if(left){
    x-=speed;
}
if(right){
    x+=speed;
}
if(up){
    y-=speed;
}
if(down){
    y+=speed;
}
    }

public void addDirection(KeyEvent e){
    switch(e.getKeyCode()){
    case KeyEvent.VK_LEFT:
        left=true;
    break;
    case KeyEvent.VK_RIGHT:
        right=true;
    break;
    case KeyEvent.VK_UP:
        up=true;
    break;
    case KeyEvent.VK_DOWN:
        down=true;
    break;
        default:
        break;
    }
}
public void reDirection(KeyEvent e){
    switch(e.getKeyCode()){
    case KeyEvent.VK_LEFT:
    left=false;
    break;
    case KeyEvent.VK_RIGHT:
        right=false;
        break;
    case KeyEvent.VK_UP:
        up=false;
        break;
    case KeyEvent.VK_DOWN:
        down=false;
        break;
        default:
            break;
    }
}

public Plane(String imgpath, double x, double y) {
    super();

    this.img = GameUtil.getImage(imgpath);
    this.width=img.getWidth(null);
    this.height=img.getHeight(null);
    this.x = x;
    this.y = y;
}

}
public class Bullet extends GameObject{
double degree;
int width=7;
int height=7;
public Rectangle getRect(){

    return new Rectangle((int)x,(int)y,7,7);
}
  • 写回答

2条回答 默认 最新

  • devmiao 2016-08-06 09:27
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法