私は基本的な Hangman ゲームを作成していますが、Java で JFrames と DrawWindows を使用するのはこれが初めてです。ここに私の混乱があります:
//これにより、ウィンドウとパネルがグローバル変数として初期化されます。
JFrame window = new JFrame("Let's play hangman!");
DrawWindow panel = new DrawWindow();
//これにより、ウィンドウがセットアップされ、パネルが追加されます。
public HangmanTwo() {
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setBackground(Color.white);
window.setSize(500, 500);
window.add(panel);
window.setVisible(true);
}
//この次の部分は、頭をウィンドウに描画します。
public class DrawWindow extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.black);
g.drawRect(50, 50, 75, 400);
g.setColor(Color.lightGray);
g.fillRect(50, 50, 75, 400);
g.drawRect(100, 50, 150, 50);
g.fillRect(100, 50, 250, 50);
//Draws noose and head
g.setColor(Color.black);
g.fillRect(250, 100, 1, 75);
g.drawOval(220, 175, 60, 60);
g.fillOval(220, 175, 60, 60);
}
}
さて、人が 2 回目の間違った推測をしたときに、体を頭に追加できるようにしたかったのです。ただし、両方を追加しようとすると:
...
} else if (score == 2) {
printOutScore(2, 4);
DrawHead head = new DrawHead();
DrawBody body = new DrawBody();
window.add(head);
window.add(body);
window.setVisible(true);
} else if (score == 3) {
...
体だけが現れ、頭全体が消えます。このため、残念ながら、体を描くときは頭を再描画する必要がありますが、簡単なレベル (頭、体、左腕、右腕、左を含む) でこれを 10 回書かなければならない場合は、ご想像のとおりです。脚、右脚、シルクハット、パイプ、ネクタイ、そしてブランデーのショット) 私のコードはとてつもなく長くなってしまいました。したがって、ボディを描画する関数クラスは次のようになります: (DrawHead といくつかのボディ コード):
public class DrawBody extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
/*Draws wood structure to start
g.setColor(Color.black);
g.drawRect(50, 50, 75, 400);
g.setColor(Color.lightGray);
g.fillRect(50, 50, 75, 400);
g.drawRect(100, 50, 150, 50);
g.fillRect(100, 50, 250, 50);
//Draws noose and head
g.setColor(Color.black);
g.fillRect(250, 100, 1, 75);
g.drawOval(220, 175, 60, 60);
g.fillOval(220, 175, 60, 60);
//Draws body
g.drawRect(245, 235, 10, 120);
g.fillRect(245, 235, 10, 120);
}
}
どうすればもっと賢くできるか、誰か助けてくれませんか?DrawBody などで DrawHead を呼び出す方法がわかりません。どんな助けでも大歓迎です!!
サルドス!