Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “确定”的问题;重叠“;_Java_If Statement_Nested_Contains - Fatal编程技术网

Java “确定”的问题;重叠“;

Java “确定”的问题;重叠“;,java,if-statement,nested,contains,Java,If Statement,Nested,Contains,因此,我一直在试图找到一种方法来确定我正在编写的java游戏图像中的“重叠”。现在我知道我可以创建一个框来跟随包含它的培训师,然后使用包含点来查看培训师的框是否包含汽车/口袋妖怪的点,但我正在尝试找到一种替代方法。我尝试使用嵌套的If语句,但这些语句似乎不起作用。如果我的编码有问题,或者我的思维方式有错误,请告诉我。下面是嵌套ifs的一个示例 if (trainer.getPy() == squirtle.getPy() & trainer.getPx() == squirtle.get

因此,我一直在试图找到一种方法来确定我正在编写的java游戏图像中的“重叠”。现在我知道我可以创建一个框来跟随包含它的培训师,然后使用包含点来查看培训师的框是否包含汽车/口袋妖怪的点,但我正在尝试找到一种替代方法。我尝试使用嵌套的If语句,但这些语句似乎不起作用。如果我的编码有问题,或者我的思维方式有错误,请告诉我。下面是嵌套ifs的一个示例

if (trainer.getPy() == squirtle.getPy() & trainer.getPx() == squirtle.getPx()){
    if  (trainer.getPy() >= squirtle.getPy() - 50)
        if  (trainer.getPy() <= squirtle.getPy() + 50)
            if  (trainer.getPx() >= squirtle.getPx() -50)
                if  (trainer.getPx() <= squirtle.getPx() + 50)
                    trainer.dead();
    Skully skull = new Skully (trainer.getPx(), trainer.getPy());
}
if (trainer.getPy() == pikachu.getPy() & trainer.getPx() == pikachu.getPx()){
    if  (trainer.getPy() >= pikachu.getPy() - 50)
        if  (trainer.getPy() <= pikachu.getPy() + 50)
            if  (trainer.getPx() >= pikachu.getPx() -50)
                if  (trainer.getPx() <= pikachu.getPx() + 50)
                    trainer.dead();
    Skully skull = new Skully (trainer.getPx(), trainer.getPy());
}
if(trainer.getPy()==squirtle.getPy()&trainer.getPx()==squirtle.getPx()){
如果(trainer.getPy()>=squirtle.getPy()-50)
如果(trainer.getPy()=squirtle.getPx()-50)
if(trainer.getPx()=pikachu.getPy()-50)
if(trainer.getPy()=pikachu.getPx()-50)

if(trainer.getPx()问题在于,第一个条件检查两个对象是否处于完全相同的位置,因此之后所有更宽松的if语句都是毫无意义的。相反,您可能只想检查两个对象中心之间的差值是否小于50px。您可以使用绝对值轻松检查这一点差别

if (Math.abs(trainer.getPy() - squirtle.getPy()) < 50 &&
        Math.abs(trainer.getPx() - squirtle.getPx()) < 50) {
    trainer.dead();
    Skully skull = new Skully (trainer.getPx(), trainer.getPy());
}
if(Math.abs(trainer.getPy()-squirtle.getPy())<50&&
Math.abs(trainer.getPx()-squirtle.getPx())<50){
trainer.dead();
Skully skull=新Skully(trainer.getPx(),trainer.getPy());
}

这很有道理。我不是那样想的。非常感谢!