Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.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_Collision Detection_Graphics2d - Fatal编程技术网

java中的线与点冲突

java中的线与点冲突,java,collision-detection,graphics2d,Java,Collision Detection,Graphics2d,我正在做一个tron游戏,除了碰撞,我什么都有。目前正在通过MVC(这是AP Compsci项目所必需的),我遇到了赛道和自行车碰撞的问题。我的想法是在赛车上有一个与之碰撞的点(前点)。灯光轨迹用点列表绘制,第一个点是起点,之后的每个点在赛车手转弯时添加。最后一点是自行车的当前位置。它在paintComponent中的每个点之间绘制一条线,并使用line类(包含点的arraylist)中的方法检查碰撞。到目前为止,我已经尝试查看前点是否在任何轴上(即,如果x或y值等于直线上任何对应的x或y P值

我正在做一个tron游戏,除了碰撞,我什么都有。目前正在通过MVC(这是AP Compsci项目所必需的),我遇到了赛道和自行车碰撞的问题。我的想法是在赛车上有一个与之碰撞的点(前点)。灯光轨迹用点列表绘制,第一个点是起点,之后的每个点在赛车手转弯时添加。最后一点是自行车的当前位置。它在paintComponent中的每个点之间绘制一条线,并使用line类(包含点的arraylist)中的方法检查碰撞。到目前为止,我已经尝试查看前点是否在任何轴上(即,如果x或y值等于直线上任何对应的x或y P值),然后检查相反的坐标,检查x或y是否位于该轴上两个点的x或y之间,如果是,则返回true或false。我的意思是:

public boolean checkPoint(Point p)
{

    for(int k = points.size() - 1; k > 0;k -= 2)
    {
        //if the x's are the same ( vertical ), check if within y's
        if(p.getX() == points.get(k).getX() && p.getX() == points.get(k - 1).getX())
        {
            if(points.get(k).getY() > points.get(k - 1).getY()){
                if(p.getY() < points.get(k).getY() && p.getY() > points.get(k-1).getY())
                    return true;
            }
            if(points.get(k).getY() < points.get(k - 1).getY()){
                if(p.getY() > points.get(k).getY() && p.getY() < points.get(k-1).getY())
                    return true;
            }

        }
        // if the y's are the same (horizontal), check if within x's
        if(p.getY() == points.get(k).getY() && p.getY() == points.get(k - 1).getY())
        {
            if(points.get(k).getX() > points.get(k - 1).getX()){
                if(p.getX() < points.get(k).getX() && p.getX() > points.get(k-1).getX())
                    return true;
            }
            if(points.get(k).getX() < points.get(k - 1).getX()){
                if(p.getX() > points.get(k).getX() && p.getX() < points.get(k-1).getX())
                    return true;
            }

        }
    }
}
公共布尔检查点(点p)
{
对于(int k=points.size()-1;k>0;k-=2)
{
//如果x相同(垂直),检查是否在y内
if(p.getX()==points.get(k.getX()&&p.getX()==points.get(k-1.getX())
{
if(points.get(k.getY()>points.get(k-1.getY()){
if(p.getY()points.get(k-1.getY())
返回true;
}
if(points.get(k.getY()points.get(k.getY()&&p.getY()points.get(k-1).getX()){
if(p.getX()points.get(k-1.getX())
返回true;
}
if(points.get(k).getX()points.get(k.getX()&&p.getX()

游戏要么在几秒钟后运行得很慢,然后开始运行,要么根本不运行。我的方向正确吗?我该怎么做

我还没有检查你的代码是否正确,但是如果游戏运行缓慢,问题可能出在其他地方。这不是一个非常密集的操作。我没有检查你的代码是否正确,但听起来如果游戏运行缓慢,问题可能在其他地方。这不是一个非常密集的行动。