2013-07-09 2 views
-4

2d 공이 마우스를 가까이 다가 가면 움직이기는하지만 작동하지 않는 코드를 작성하려고합니다. 가 여기에 현재 코드입니다 (나는 매우 긴 .. 프로그래밍되지 않은) :움직이는 공 자바 코드가 작동하지 않습니다

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

Welcome to Stackoverflow. 여기에 코드를 덤핑하고 "작동하지 않는다"고 말하면 SO가 무엇인지 의미있는 결과를 내지 않을 것입니다. 우리는 당신을 위해 당신의 코드를 디버깅하지 않습니다. [StackOverflow 질문 체크리스트] (http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist)를 읽어보십시오. –

+1

특히 작동하지 않는 것은 무엇입니까? 무엇을 이미 시도 했습니까? 달성하려는 목표는 무엇입니까? – RGG

+0

한 마디 .... 디버거. 사용법을 배우고, 문제를 찾은 다음, 알려진 문제에 관한 질문을 올리고 올리십시오. 그러면 도움을받을 수 있습니다. – Tdorno

답변

1

주 방법으로 프로그램을 실행해야합니다. 지금은 전혀 사용하지 않는 몇 가지 방법이있는 것처럼 보입니다 (실행)

2

많은 일들이 진행되고 있습니다 만, 그게 옳지는 않지만, 올바른 길로 인도하려고 노력할 것입니다.

  • 우선 MVC에 대해 약간의 내용을 읽어야합니다. GUI를 로직과 분리하여 코드를 유지 보수하기 쉽게 만드는 것은 디자인 원칙입니다. MouseListener를 처리하려면 다른 클래스를 만들어야합니다. 당신이 당신의 주요 방법은 다음과 같은 형식

    public static void main(String[] args) 
    
  • 당신의 방법 중 일부 호출은 아무 의미도하지 않습니다이 할 필요가 있으므로

  • 분명히, 메인 클래스가 될 예정이다. 예를 들어, 라인 :

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

의 getSize() (그것이 있어야하지만 "getter 및 setter"변수에 this를 참조하십시오.) 프로그램에서 정의하지 않으며, 결코 그것을하더라도, 무엇을 ".width"이고 ".height"는해야한다고 생각하십니까? 이러한 변수를 어떻게 설정하는지 다시 생각해야합니다.

addMouseMotionListener()도 정의되어 있지 않으므로 주 메서드에서 호출하려고하면 아무 것도하지 않습니다.

run() 메서드는 main에서 호출되지 않으므로 거기에있는 코드도 존재하지 않을 수 있습니다.

나는 또한 당신의 코드에서 결코 호출되지 않는 mouseMoved()로 무엇을하려하는지 확신 할 수 없다. 그래서 나는 그곳의 논리를 당신에게 정말로 도울 수 없다.

조금 도움이 되었기를 바랍니다. 행운을 빕니다. :)

관련 문제