2016-06-07 3 views
-2

나는 탁구 게임을 만들려고 노력하지만 내 공이 움직이지 않아 공을 움직이는 방법을 이동합니까?코드가 공을 이동시키는 방법?

이것은 첫째로 내 코드

package test; 

import java.awt.*; 
import java.awt.event.*; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.swing.*; 

public class pingpong1 extends JFrame implements Runnable { 

public static void main(String[] args) { 
     pingpong1 ping = new pingpong1("PingPong Hard Game"); 

     new Thread(ping).start(); 

     ping.setSize(600, 300); 

     ping.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     ping.setVisible(true); 

    } private int width, height; 

    private User user;   
    private Computer computer;   
    private Ball ball; 
    static int UserScore = 0; 
    int ComputerScore=0; 

    public pingpong1(String title){ 

    } 
    @Override 
    public void paint(Graphics g){ 
     super.paint(g); 
     Image img2; 
     ImageIcon img = new ImageIcon("pingpong.png"); 
     img2 = img.getImage(); 
     g.drawImage(img2,0,0, this); 
     ball.paint(g); 
    } 
    @Override 
    public void run(){ 
     while(true){ 
      ball.moveBall(); 
      repaint(); 

       try { 
        Thread.sleep(20); 
       } catch (InterruptedException e) { 
        Logger.getLogger(getName()).log(Level.SEVERE,null,e); 
       } 
    } 
    } 

    public void paintComponent(Graphics g) { 
      if (user == null) { 
       width = getWidth(); 
       height = getHeight(); 
       user = new User(); 
       computer = new Computer(); 
       ball = new Ball(); 
      } 
      ball.draw(g); 

     } 
    public class User{ 

    } 
    public class Computer{ 

    } 
    public class Ball{ 
     private int x,y; 
     private int centerX , centerY; 
     private Color color; 
     boolean go; 
     Ball(){ 
      go=false; 
     } 
     public void paint(Graphics g) { 
      // TODO Auto-generated method stub 

     } 
     public Ball(int x,int y,Color color){ 
      this.x=x; 
      this.y=y; 
      this.color=color; 
      this.centerX=5; 
      this.centerY=5; 
     } 
     public int getX(){ 
      return x; 
     } 
     public int getY(){ 
      return y; 
     } 
     public void moveBall(){ 
      centerX=5; 
      x+=centerX; 
      y+=centerY; 

     } void draw(Graphics g){ 
      Image img2; 
      ImageIcon img = new ImageIcon("pingpong.png"); 
      img2 = img.getImage(); 
      g.drawImage(img2, centerX - -35, centerY -10 , null); 
     } 
    } 
    } 
+0

이유 _android_ 태그? –

+0

언제 다른 장소에서 공을 그릴 것으로 예상 했습니까? Ball 클래스의 드로잉을 추측 할 수 있습니다. 그러나 내가 전화를 기대할 때 paint 메소드 (구현되지 않음)를 호출하고 있습니다. – Gildraths

답변

1

를 이동하는 코드이며, 실제로 공을 이동 입력의 일종이 필요합니다. 지금은 아무 것도하지 않지만 x, y를 추가하고 다시 칠하지 않으므로 기본적으로 아무 것도하지 말라고 지시합니다. 사용자가 제어하는 ​​것을 찾고 있다면이 기능이 작동합니까?

public void moveIt(KeyEvent evt) { 
switch (evt.getKeyCode()) { 
     case KeyEvent.VK_DOWN: 
      myY += 5; 
      break; 
     case KeyEvent.VK_UP: 
      myY -= 5; 
      break; 
     case KeyEvent.VK_LEFT: 
      myX -= 5; 
      break; 
     case KeyEvent.VK_RIGHT: 
      myX += 5; 
      break; 
    } 
} 

자동으로 공을 이동하는 방법을 찾고 있다면 코드에서 몇 가지를 살펴볼 필요가 있습니다. 당신이 고려에 속도/방향 등 ...

을에서하지 않기 때문에이 움직이는 볼의 기본적인 예는 내가 코멘트를 만들어진 것입니다하지만 내 담당자가 50

아래

http://introcs.cs.princeton.edu/java/34nbody/Ball.java.html 코드에서

+0

자동으로 이동해야합니다. –

+0

그럴 경우 이동하는 데 필요한 것 이상으로 기본 링크를 확인하십시오. –

+0

도와 줘서 고마워. –

0

당신은 제대로 게임 루프에서 공의 위치를 ​​업데이트 :

클래스 pingpong1

while(true){ 
     ball.moveBall(); // You update movement here 
     repaint(); 
     try { 
      Thread.sleep(20); 
     } catch (InterruptedException e) { 
      System.err.println("Interrupted."); 
     } 
    } 

그러나 실제로 업데이트 된 위치에서 공을 다시 그리기 결코 다음 ball 방법 paint가 비어

public void paint(Graphics g){ 
    super.paint(g); 
    Image img2; 
    ImageIcon img = new ImageIcon("pingpong.png"); 
    img2 = img.getImage(); 
    g.drawImage(img2,0,0, this); 
    ball.paint(g); // this method is empty 
} 

때문에 :

public void paint(Graphics g) { 
    // TODO Auto-generated method stub 
} 

수준의 볼이 그 문제를 해결하려면 :

public void paint(Graphics g) { 
    ImageIcon icon = new ImageIcon("ball.png"); 
    Image image = icon.getImage(); 
    g.drawImage(image, x, y, null); 
} 

하거나 대신 ball.draw()를 호출하지만 현재 일정 변경 때문에 여전히 xy를 해결하는 데 :

g.drawImage(img2, centerX + 35, centerY - 10, null); 

사람 :

g.drawImage(img2, x, y, null); 
관련 문제