问答 关于java 两个图片相遇的动画坐标问题
我想要一个动画,就是美女图片 遇到 男生图片会显示 game over但是 我在运行时其他就正常 就是当美女图片运行到男生图片上方 但是没有碰到男生图片也会显示game over,我觉得是自己的坐标的临界值算错了,但是算了好几次也都没成功!
import java.awt.image.BufferedImage;
import
import java.util.Random;
import javax.imageio.ImageIO;
//男生类
public class Boy {
BufferedImage image;
//创建图片对象
int x,y;
//定义男生的坐标
int width,height;
//定义男生的高度和宽度
int distance;
//男生之间的距离
int gap;
//男生之间的间隙
public Boy(int n) throws IOException{
//构造方法,初始化各个参数
image=ImageIO.read(getClass().getResource("boy1.png"));
//读取男生图片
distance=240;
//两根男生之间的距离设置为240
gap=144;
x=500+(n-1)*distance;
//男生的x坐标,这里以图片中心的坐标为准
Random r=new Random();
//随机生成男生的y坐标
y=40+gap/2+r.nextInt(460-gap/2-(40+gap/2));
//保证男生在40+gap/2~460-gap/2
width=image.getWidth();
//获得男生的宽度
height=image.getHeight();
//获得男生的高度
}
public void step(){
//男生运动
x--;
if(x<=-width/2){//当男生移除界面
x=2*distance-width/2;//初始化下一个男生的坐标
Random r=new Random();
y=40+gap/2+r.nextInt(460-gap/2-(40+gap/2));
}
}
public boolean hitBoy(Beauty beauty){
int x1=x-width/2-beauty.width/2;//得x最小界限
int x2=x+width/2+beauty.width/2;//得到x最大范围
int y1=y-gap/2+beauty.height/2;//得到y的最小值
int y2=y+gap/2-beauty.height/2;//得到y的最大值
//上述是临界值
if(beauty.x>x1 && beauty.x<x2){
//如果x在这个范围内
if(beauty.y>y1 && beauty.y<y2){
//且y也在这个范围内说明没有碰到男生
return false;
}else{
//撞到
return true;
}
}else{
//男生没有碰到
return false;
}
}
}