2013-07-09 4 views
-4

Я пытаюсь написать код, который заставляет мяч 2d перемещаться, когда мышь приближается к нему, но он не работает. (Я не программирую очень долго ..) Вот текущий код:Код java-кода Moving Ball не работает

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!"); 
    } 
} 
} 

Некоторые из этого (или большинство) может быть супер начинающий материал, который действительно очевидно, но я не знаю, как это сделать.

+1

Добро пожаловать в Stackoverflow. Сбрасывая здесь свой код и говоря «Это не работает», не то, для чего SO и вряд ли приведет к значимым результатам; мы не здесь, чтобы отлаживать ваш код для вас. Пожалуйста, рассмотрите вопрос о контрольном списке вопросов по StackOverflow (http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist) –

+1

Что конкретно не работает? Что вы уже пробовали? Что вы пытаетесь достичь? – RGG

+0

Одно слово .... Отладчик. Научитесь использовать его, найдите проблему, затем придите и опубликуйте вопрос, относящийся к известной проблеме, только тогда вы получите помощь. – Tdorno

ответ

1

Вам необходимо запустить свою программу с помощью основного метода. Сейчас кажется, что у вас есть какие-то методы, которые вы вообще не используете (запустите)

2

У вас много чего происходит, но это не совсем так, но я постараюсь направить вас по правильному пути.

  • Прежде всего, вам нужно сделать немного читать о MVC. Это принцип проектирования, который отделяет графический интерфейс от логики, что сделает ваш код более удобным. Вам понадобится сделать другой класс для обработки MouseListener.

  • Это, по-видимому должен быть вашим основным классом, так что вы должны сделать свой основной метод имеет следующий формат

  • Некоторые из ваших методов звонки не имеют никакого смысла. Например, линии:

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

GETSIZE() никогда не определяется в программе (хотя она должна быть См this на «добытчиками и сеттеров» для переменных.), И даже если бы это было то, что это «.width» и «.hight»? Вам нужно подумать о том, как вы устанавливаете эти переменные.

addMouseMotionListener() также никогда не определяется, поэтому попытка вызвать его в основном методе не собирается ничего делать.

Ваш метод run() никогда не вызывается в основном, поэтому любой код там тоже не может существовать.

Я также не уверен, что вы пытаетесь сделать с помощью mouseMoved(), который также никогда не вызывается в вашем коде, поэтому я не могу помочь вам с логикой там.

Надеюсь, это поможет немного! Удачи. :)

Смежные вопросы