-4

I'm trying to write some code that causes a 2d ball to move around when the mouse gets near it, but it's not working. (I haven't been programming for very long..) Here is the current code:

import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

import acm.graphics.*;
import acm.program.*;



@SuppressWarnings("serial")
public class MoveAway extends GraphicsProgram implements MouseMotionListener {

static int width;
static int height;
int x = 100;
int y = 100;
GOval runaway;


public void main(){
    System.out.println("Movement Detected");
    System.out.println("Stop Moving!");
    width = getSize().width;
    height = getSize().height;
    addMouseMotionListener(this);

}

public void run() {
    System.out.println(width);
    System.out.println(height);
    GOval runaway = new GOval(50, 50);
    runaway.setColor(Color.blue);
    runaway.setFilled(true);
    add(runaway);
    runaway.setLocation(x, y);

}
public void mouseMoved(MouseEvent e) {
    System.out.println("test");
    if(x - e.getX() > -50  && y - e.getY() > -50) {
        runaway.setLocation(x - 1, y - 1);
        y = y - 1;
        x = x - 1;
        System.out.println("Close!");
    }

    if(x - e.getX() < 50 && y - e.getY() < 50){
        runaway.setLocation(x + 1, y + 1);
        y = y +1;
        x = x - 1;
        System.out.println("Close!");
    } 
}
}

Some of this (or most) may be super-beginner stuff that's really obvious, but I don't know how to do it.

4

2 回答 2

2

你有很多事情不完全正确,但我会努力引导你走上正确的道路。

  • 首先,您需要阅读一些关于MVC的内容。这是一种将 GUI 与逻辑分开的设计原则,这将使您的代码更易于维护。您将需要创建一个不同的类来处理 MouseListener。

  • 这显然应该是您的主类,因此您需要使您的主要方法具有以下格式

    public static void main(String[] args)
    
  • 您的某些方法调用没有意义。例如,这些行:

    width = getSize().width;
    height = getSize().height;
    

getSize() 从未在您的程序中定义(尽管它应该是。请参阅 getters and setters”中的变量),即使是,“.width”和“.height”应该做什么?您需要重新考虑如何设置这些变量。

addMouseMotionListener() 也从未定义,因此尝试在 main 方法中调用它不会做任何事情。

您的 run() 方法永远不会在 main 中调用,因此其中的任何代码都可能不存在。

我也不确定你想用 mouseMoved() 做什么,它也从未在你的代码中调用过,所以我无法真正帮助你解决那里的逻辑。

希望这会有帮助!祝你好运。:)

于 2013-07-09T21:18:06.843 回答
1

您需要通过 main 方法运行程序。现在,您似乎有一些根本没有使用的方法(运行)

于 2013-07-09T19:56:54.723 回答