好的,所以我正在为Java类做一个赋值,并且赋值的一部分是找出一个点是否在矩形的维度内.所以我创建了这段代码:
public boolean contains(Point p){
return (this.getLocation().getX() < p.getX() && this.getLocation().getY() < p.getY() &&
this.getLocation().getX() + this.getWidth() > p.getX() &&
this.getLocation().getY() + this.getHeight() > p.getY());
}
Run Code Online (Sandbox Code Playgroud)
我也创建了一个点类,这就是我要求"Point p"参数的原因.为了测试这个布尔值,我在Main类中创建了一个简单的'if'语句:
//check if one rectangle's point is inside another
if (rectangle.contains(rectangle2.getLocation()))
System.out.println("the point is in the rectangle");
Run Code Online (Sandbox Code Playgroud)
该点的位置是(6,7).矩形1的点,宽度和高度分别为(4,5),9和3.我知道这一点是在第一个矩形内部,但println语句没有显示,这意味着我创建的布尔值必定存在问题,但我没有看到错误,也许我的头是阴天但是可能有人指出我这里有什么问题?
PS这是所有控制台工作,我不处理一些GUI或图形编程.
我正在练习一些简单的2D游戏编程,并提出了一种理论,即在动画期间(图像位置的实际变化最好用浮点数计算).我有一种感觉,如果用图像移动图像,动画将不会那么平滑.
在Java中,似乎无法使用浮点数绘制图像以为图像提供位置.但显然当你最初声明你的x和y时,你可以将它们声明为Double或Float,当涉及到实际绘制图像时,你必须将它们转换为int.就像我在这里找到的:
/**
* Draw this entity to the graphics context provided
*
* @param g The graphics context on which to draw
*/
public void draw(Graphics g) {
sprite.draw(g,(int) x,(int) y);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是Java如何处理转换?如果代码在最后一刻投出这些双打,为什么首先将它们作为双打?Java会隐藏小数点后的数字吗?
我知道在C和C++中,小数点后的数字会被截断,你只看到它之前的数字.Java如何处理这个转换?
我正在创建一个Swing应用程序来制作游戏.它在屏幕外的随机位置创建图像,当它们离开屏幕时我想删除它们.请查看代码段:
public void checkTrolls(){ //CAUSES EXCEPTION ERROR WHEN SPRITE EXIT SCREEN
for(AutomatedSprite a : trolls){
if(a.getX() < 0 - a.getImage().getWidth())
trolls.remove(a);
if(a.getY() < 0 - a.getImage().getWidth())
trolls.remove(a);
if(a.getX() > 800)
trolls.remove(a);
if(a.getY() > 600)
trolls.remove(a);
}
}
@Override
public void run() {
long beforeTime, timeDiff, sleep;
beforeTime = System.currentTimeMillis();
while(true){
dodger.update(); //update sprite
if(trolls.size() != 6){
trolls.add(new AutomatedSprite("images/troll_face.png"));
}
for(Sprite troll : trolls){
troll.update(); //UPDATES MY SPRITES
}
checkTrolls(); //CHECKS TROLLS EXITING THE SCREEN
repaint();
for(Sprite troll : trolls){
System.out.println("X: …Run Code Online (Sandbox Code Playgroud)