0

私は基本的な 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 を呼び出す方法がわかりません。どんな助けでも大歓迎です!!

サルドス!

4

1 に答える 1