キーボードの矢印キーによるユーザー入力で、1 人のプレイヤーがボード上を移動できるゲームを作成しています。目的は、ボード上の宝石を収集し、ランダムに動き回るモンスターを避けることです。GUI でボードを描画するだけで問題が発生します。各「タイル」、「アイテム」、「キャラクター」は、drawRect や drawOval などの単純で汎用的な描画メソッドで描画されます。ただし、これらをパネルの配列に描画する方法がわかりません。
私の問題はコンストラクターまたはペイントメソッドにありますか? ヘルプ!
public class LevelPanel extends JPanel {
private static Player player;
private Level level;
private JLabel gemLabel, scoreLabel, healthLabel;
private JPanel[][] squares;
private JPanel boardPanel;
private JOptionPane optionPane = new JOptionPane();
public LevelPanel() {
this.player = player;
setPreferredSize(new Dimension(300,300));
setBackground(Color.white);
setLayout(new GridLayout(10,10));
gemLabel = new JLabel("Gems Left: 0");
scoreLabel = new JLabel("Score: 0");
healthLabel = new JLabel("Health: 100");
for(int i = 0; i < 10; i++) {
for(int j = 0; j < 10; j++) {
squares[i][j] = new JPanel();
squares[i][j].setBackground(Color.white);
boardPanel.add(squares[i][j]);
}
}
add(gemLabel);
add(scoreLabel);
add(healthLabel);
add(boardPanel);
}
public void paint(Graphics g) {
super.paint(g);
level.draw(g);
}
private class KeyHandler extends KeyAdapter {
public void keyPressed (KeyEvent e) {
int keyCode = e.getKeyCode();
switch(keyCode) {
case KeyEvent.VK_UP:
player.move(-1,0);
break;
case KeyEvent.VK_DOWN:
player.move(1,0);
break;
case KeyEvent.VK_LEFT:
player.move(0,-1);
break;
case KeyEvent.VK_RIGHT:
player.move(0,1);
break;
}
gemLabel.setText("Gems Left: " + level.getNumGems());
scoreLabel.setText("Score: " + player.getScore());
healthLabel.setText("Health: " + player.getHealth());
repaint();
}
}