0

我正在制作一个玩家必须用鼠标导航的迷宫,但是当撞到墙壁时他们会输掉。我想确保玩家将鼠标放在正确的位置开始,所以一旦鼠标与屏幕上的方形指示器相交,我就会尝试切换到游戏状态。

在我学习的教程中,他们这样做了:

public static class Point extends AbstractEntity {

    public Point(double x, double y, double width, double height) {
        super(x, y, width, height);
    }

    @Override
    public void draw() {
        glBegin(GL_POINTS);
            glVertex2d(x, y);

    }

    @Override
    public void update(int delta) {
        // Blank

    }
}

Point.setLocation(Mouse.getX(), 480 - Mouse.getY() - 1);

if(Maze1.intersects(Point)){
System.out.println("You would have lost");
}

我试图这样做:

case MAZE:
   if(Maze1.intersects (Point) ){
   state = State.GAMEOVER;
   }
   break;

我收到错误消息“无法将点解析为变量”。请帮忙。

4

1 回答 1

0

看起来当您调用 Maze1.intersects 时,您传递的是实际的 Point 类,而不是该类的实例。这就是为什么您会收到“点无法解析为变量”错误的原因。您需要创建一个 Point 实例,在该实例上调用 setLocation,然后将其传递给 Maze1.intersects。

为了使您的示例正常工作,我将删除 Maze1.intersects 上的参数并让它直接访问 Point 类,或者将 Point 更改为不再是静态的,声明 Point 的实例并将该实例传递给 Maze1.intersect。

将 Point 类声明为静态并不意味着您可以将类传递给方法等,就像常规变量一样,因为它只是一种共享数据和行为的方式。另外,请记住,通过将 Point 声明为静态,您是在说永远只有一个 Point。

我可能会考虑删除 static 关键字并创建一个名为“startingPoint”的 Point 实例。然后,您可以将其传递给 Maze1.intersects。然后,如果您需要确定玩家是否与迷宫中的其他“点”相交,那么您可以创建其他实例来表示这些点。

于 2013-06-16T07:35:31.380 回答