小编mas*_*amr的帖子

检查一个点是否在指定的Rectangle内

好的,所以我正在为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或图形编程.

java geometry

8
推荐指数
2
解决办法
5万
查看次数

将双(或浮点数)转换为整数时会发生什么?

我正在练习一些简单的2D游戏编程,并提出了一种理论,即在动画期间(图像位置的实际变化最好用浮点数计算).我有一种感觉,如果用图像移动图像,动画将不会那么平滑.

在Java中,似乎无法使用浮点数绘制图像以为图像提供位置.但显然当你最初声明你的xy时,你可以将它们声明为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如何处理这个转换?

java casting 2d

6
推荐指数
1
解决办法
4959
查看次数

暂停一个线程以防止ConcurrentModificationException?

我正在创建一个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)

java multithreading

2
推荐指数
1
解决办法
193
查看次数

标签 统计

java ×3

2d ×1

casting ×1

geometry ×1

multithreading ×1