2012-05-24 2 views
0

나는 화면 상단에서 볼이 무작위로 떨어지는 자바 게임을 만들려고하고 있으며 화면 하단에있는 포수를 사용하여 볼을 잡아야합니다.간단한 2D Java 게임

실제로 JFrame에이 그림을 그리는 데 어려움을 겪고 있습니다.

나는 '포수', '공', '게임 공간'에 대한 수업을 진행 했으므로 모두 정리하고 싶습니다.

'캐쳐'를 내 화면에 어떻게 그려야합니까?

현재 '게임'클래스는 다음과 같습니다. 내 포수 수업 시간에 이런 식으로 뭔가를 시도했습니다

public class Game extends JFrame implements KeyListener { 

GameScreen gameScreen; 
Catcher playerOneCatcher; 

public static void main (String[] args) { 
    new Game(); 
} 

public Game() { 

    super("CATCH"); 
    setSize(640,480); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setVisible(true); 
    setLocationRelativeTo(null); 
    setResizable(false); 
    addKeyListener(this); 


    this.gameScreen = new GameScreen(); 
    this.playerOneCatcher = new Catcher(40, 10); 


} 

...

public void paintComponent(Graphics g) { 
    g.setColor(Color.BLUE); 
    g.fillRect(positionX, positionY, this.width, this.height); 
} 

그러나, 그 내 화면에 표시되지 않습니다.

도움을 주시면 감사하겠습니다.

+0

. Catcher의 하위 클래스는 어떤 클래스입니까? Catcher 인스턴스를 JFrame에 추가 했습니까? 더 많은 코드를 보여주세요. – maksimov

+0

좀 더 코드를 추가했습니다. 그러면 상황이 좀 더 명확 해집니다. – user432584920684

+1

더 나은 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

답변

3

여기에서 전략을 재고해야합니다. 스윙은 구성 요소 프레임 워크이며 대부분의 구성 요소는 사용자 인터페이스를 작성하기위한 것입니다. 이러한 구성 요소는 일반적으로 게임에서 요구되는 것에 최적화되어 있지 않습니다. 더블 버퍼링, 스프라이트 등을 들여다보고 싶다. Graphics2D 클래스를 읽거나 (또는 ​​스윙을 완전히 버려야한다)

그러나 Catcher가 Swing 구성 요소 인 경우 그것을 "부모"구성 요소에 추가하려면 같은 :

this.add(playerOneCatcher); 

동일은 gameScreen로 이동하지만 조각에서이 구성 요소가 무엇인지 명확하지 않다. 이게 도움이 되길 바란다.

또한

, 몇 가지 아이디어이 체크 아웃 : 2D Java Game. Moving sprite above tiled images 나는 "스윙"이 아니므로 "게임 개발"그러나 당신이 겪고있는 일반적인 스윙의 문제로 다시 태그 한

2
  1. super.paintComponent (g)으로 전화하셨습니까? 그 때문에 몇 가지 버그가 발생할 수 있습니다.
  2. invalidate() 또는 repaint()으로 전화를 걸어 그림을 그렸습니까? 특별한 JComponent가 있으면 좋겠다. JFrame을 그리지 않을 것이다. 그건 좋지 않다.