0

これはおそらくばかげた質問ですが、プログラムがこれを行うのを止める方法を思い出せないか、私はそれを学んだことがありません。

paintComponentを使用してランダムなカードを描画するブラックジャックゲームを作成しています。ヒットボタンがクリックされたら、次のカードを引いて新しい合計を生成したいと思います。ただし、ヒットボタンをクリックすると、新しいカードが完全に描画されますが、描画済みのカードの上にすべての新しいカードが作成されます。

再ペイント方法で新しいランダムカードが選択されないようにして、プログラム全体で同じカードを維持するにはどうすればよいですか?すべてのカードは配列に格納されており、乱数ジェネレーターで呼び出されます。また、これはJavaウィンドウのサイズを変更したときに発生します。

求められたら、コードを投稿しますが、これには簡単な解決策があるように感じます。

4

1 に答える 1

1

'ランダムカードの選択'ロジックをペイントメソッドの外に移動する必要があります。

ペイント時にランダムに選択するのではなく、最初にアレイを構築するときに、アレイ内のすべてのカードを計算する方がよい場合があります。つまり、「デッキ」配列を作成するときは、ユーザーがデッキからカードを配られる前に、すべてのカードがカードが何であるかを認識できるように、デッキ全体を構築します。このように、ゲームプレイ中にそれらが変更されるリスクはありません。52枚のカード、または52枚のカードの小さな倍数について話している場合でも、配列はかなり小さいので、配列全体をすばやくランダム化できます。

または、「ランダムカードを選択」方法に次のようなチェックを入れることもできます...

int cardValue = -1;

paintComponent(){
    if (cardValue == -1){
        cardValue = drawRandomCard();
    }
    // now paint it.
}

つまりdrawRandomCard()、カードにまだ値がない場合にのみ実行するように制限します。

ただし、最終的には、ペイントコードをロジックから完全に分離することが最善の解決策になります。これは、ペイントなどのGUIアクティビティをプログラミングロジックと混合するための不適切なコーディング方法です。

于 2012-05-09T02:53:08.183 に答える