| 网站首页 | 业界新闻 | 群组 | 人才 | 技术文章 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 171 人关注过本帖
标题:问答 关于java 两个图片相遇的动画坐标问题
只看楼主 收藏
天才男子汉21
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-12-19
结帖率:0
  已结贴   问题点数:20  回复次数:1   
问答 关于java 两个图片相遇的动画坐标问题
我想要一个动画,就是美女图片 遇到 男生图片会显示 game over
但是 我在运行时其他就正常 就是当美女图片运行到男生图片上方 但是没有碰到男生图片也会显示game over,我觉得是自己的坐标的临界值算错了,但是算了好几次也都没成功!

import java.awt.image.BufferedImage;
import java.io.IOException;
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;
}
}
}
2017-12-19 15:19
林月儿
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:湖南
等 级:版主
威 望:78
帖 子:1431
专家分:6232
注 册:2015-3-19
  得分:20 
hitBoy方法碰撞检测判断有问题吧
至于你所谓的临界值不是很懂,我觉得你还是写个草稿,模拟四个方向碰撞的场景来写判断语句。
现在的代码还是有点绕的

like wind.
2017-12-20 00:04







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.067191 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved