2014-06-11 4 views
-2

나는 내 학기말 과제로 내 CS (고등학교) 수업을위한 게임을 만들도록 요청 받았다. 우리는 게임을 만드는 데 필요한 모든 코딩을 제대로 배우지 못했기 때문에이 분야에 대한 지식이 부족합니다. 어쨌든, 내가하려고하는 게임은 "Flappy Fall"(애플 앱 스토어 게임)과 같은 것으로, 물체는 화면 상단에서 떨어지고 화면 하단으로 내려갑니다. 목표는 바닥에 닿기 전에이 물체를 잡는 것입니다. 나는 하나의 물체를 떨어 뜨릴 수 있고 "포수"도 만들었지 만, 여러 개의 떨어지는 물체를 만드는 방법을 모르거나 포수가 물체를 잡았을 때 물체를 제거하는 방법을 알지 못합니다. 지금까지 "JavaGame", "Catcher"및 "Ball"클래스가 있습니다. 어떤 도움이라도 대단히 감사하겠습니다.개체의 여러 인스턴스 만들기. (게임)

int x, y; 
int t = 1; 
private Image dbImage; 
private Graphics dbGraphics; 
Image player; 
Image bkg; 
static Catcher p = new Catcher(150, 450); 

public JavaGame() { 
    //Game Images 
    ImageIcon b = new ImageIcon("bkg.png"); 
    bkg = b.getImage(); 

    //Game properties 
    setTitle("Game"); 
    setSize(350, 600); 
    setResizable(false); 
    setVisible(true); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setLocationRelativeTo(null); 
    addKeyListener(new Keys()); 
    addMouseMotionListener(new Mouse()); 


} 

public void paint(Graphics g) { 
    // 
    dbImage = createImage(getWidth(), getHeight()); 
    dbGraphics = dbImage.getGraphics(); 
    draw(dbGraphics); 
    g.drawImage(dbImage, 0, 0, this); 
} 





public void draw(Graphics g) { 
    g.drawImage(bkg, 0, 0, this); //Creates background 
    p.draw(g); 
    //while (t < 100) { 
     p.b.draw(g); 
     //t++; 
    //} 
    g.setColor(Color.WHITE); 
    g.drawString(""+p.score, 175, 50); 
    repaint(); 
} 


public static void main(String[] args) { 
    JavaGame jg = new JavaGame(); 

    //Threads 
    Thread p1 = new Thread(p); 
    p1.start(); 
    Thread ball = new Thread(p.b); 
    ball.start(); 
} 

public class Keys extends KeyAdapter { 
    public void keyPressed(KeyEvent e) { 
     p.keyPressed(e); 
    } 

    public void keyReleased(KeyEvent e) { 
     p.keyReleased(e); 
    } 
} 

public class Mouse implements MouseMotionListener { 
    public void mouseDragged(MouseEvent e) { 
     p.mouseDragged(e); 
    } 
    public void mouseMoved(MouseEvent e) { 
     p.mouseMoved(e); 
    } 
} 

}

int x, y, ranX, xDirection; 
int score; 
Rectangle catch1; 
Ball b = new Ball(170, 1); 

public Catcher (int x, int y) { 
    score = 0; 
    this.x = x; 
    this.y = y; 
    catch1 = new Rectangle(this.x, this.y, 50, 15); 
} 

public void run() { 
    try { 
     while(true) { 
      move(); 
      Thread.sleep(5); 
     } 
    } 

    catch(Exception e) { 
     System.out.println("Error"); 
    } 
} 


public void collision() { 
    if (b.ball.intersects(catch1)) { 
     b.ball(Color.blue); 
     score++; 
     System.out.println(score); 
    } 
} 

public void move() { 
    collision(); 
    catch1.x += xDirection; 
    if (catch1.x <= 0) 
     catch1.x = 0; 
    if (catch1.x >= 300) 
     catch1.x = 300; 
} 

public void setXDirection(int xDir) { 
    xDirection = xDir; 
} 

    public void keyPressed(KeyEvent m) { 
     int keyCode = m.getKeyCode(); 
     if (keyCode == m.VK_LEFT) { 
      setXDirection(-1); 
     }  

     if (keyCode == m.VK_RIGHT) { 
      setXDirection(+1); 
     } 
     m.consume(); 
    }    

    public void keyReleased(KeyEvent m) { 
     int keyCode = m.getKeyCode(); 
     if (keyCode == m.VK_LEFT) { 
      setXDirection(0); 
     }     

     if (keyCode == m.VK_RIGHT) { 
      setXDirection(0); 
     } 
     m.consume(); 
    } 

    public void mouseDragged(MouseEvent e) { 
     catch1.x = e.getX()-25; 
     e.consume(); 
    } 
    public void mouseMoved(MouseEvent e) { 
     catch1.x = e.getX()-25; 
     e.consume(); 
    } 

public void draw(Graphics g) { 
    g.fillRect(catch1.x, catch1.y, catch1.width, catch1.height); 

} 

}

int x, y, yDirection; 
Rectangle ball; 

public Ball (int x, int y) { 
    this.x = x; 
    this.y = y; 
    ball = new Rectangle(this.x, this.y, 10, 10); 
} 

public void run() { 
    try{ 
     while(true) { 
      move(); 
      Thread.sleep(5); 
     } 
    } 

    catch(Exception e) { 
     System.out.println("Error"); 
    } 
} 

public void move() { 
    if (ball.y >= 600) { 
     ball.y = 600; 
    } 

    if (ball.y > 0) { 
     ball.y++; 
    } 
} 

public void setYDirection(int yDir) { 
    yDirection = yDir; 
} 

public void draw(Graphics g) { 
    g.setColor(Color.WHITE); 
    g.fillRect(ball.x, ball.y, ball.width, ball.height); 
    System.out.println(ball.x+ " "+ ball.y+ " " + ball.width + " " + ball.height); 
} 

}

답변

2

나는 당신의 할당, 난 그냥 짧은 대답 포기하고 싶지 않기 때문에 :

을로 전화 걸기여러 번. 물론 컬렉션에 추가 할 수도 있습니다 (예 : ). List list = new ArrayList(); list.add (ball);

그리고 끝나면 컬렉션에서 제거하십시오.

3

코드를 약간 재구성했습니다. 메인 게임에서 '공'유형의 컬렉션을 가질 수 있습니다. 나는 당신에게 수집 선택권을 맡길 것이다. 하지만 컬렉션에 '새로운'공을 추가하고 잡히면 제거 할 수 있습니다.

관련 문제