2017-10-16 11 views
-3

私はGamblerのようなゲームでソケットプログラミングを練習していますが、少し問題がありました。 私は、プレイヤーが順番に乱数を得るゲームを持っています。数字が加算されて、プレイヤースコアが表示されます。私はあなたが例えば7を引っ張っても、それを再び得ることができないようにしています。 編集:Java - 制限前の値に基づくランダムな結果

private void pick() { 

    Number r = new Number(getNumber(), new Vector2(200, 10)); 
    myNumbers.add(r); 
    sendMessage(output, "Number" + r.value); 
} 

private int getNumber() { 
    int n = random.nextInt(10); 
    while(numberHasBeenPicked(n)) { 
     n = random.nextInt(10); 
    } 

    return n; 

} 

private boolean numberHasBeenPicked(int value) { 
    if(numbersUsed.contains(value)) 
      return true; 
     else 
      return false; 
} 

またsendMessage()機能は非常に両方のプログラムが

を取らされているものを知っているサーバーとクライアントのリストの両方に numbersUsedに番号を追加し、私がこれまでにしようとしてきた何

/編集

しかし、私が探している結果は得られません。私が受け取ったエラーは基本的にはnumbersUsedリストに入れられていると確信していても、まだ使用されている数字を取得していることから何を言いたいのか分かりません。

ご不便をおかけして申し訳ございませんが、ご迷惑をおかけして申し訳ございません。

+0

'numbersUsed'とは何ですか? –

+2

'false false;が' else'で何をしていると思いますか? 'numbersUsed'が' List'であると仮定して 'contains'を使わないのはなぜですか?あなたは 'HashSet'を使うことを考えましたか? –

+0

私はcontainsメソッドについて考えていなかった、ありがとう!しかし、まだ問題は残っている。私はHashSetで読み上げます! –

答えて

0

while(!numberHasBeenPicked(n))

条件が真であるので、番号が選ばれたとき、あなたは別のものを選ぶにしたいので、あなたは!を削除する必要があります。そして、!によってあなたが述べているように、番号が選択された(そうではない)という偽の場合、別の番号を選んでください。あなたが逆を達成したいように思えます。

+0

上記のとおり、これは修正されました。問題はまだ解決していますが、ご回答いただきありがとうございます。 –

0

@SotiriosDelimanolisが記載されているので、プログラムのデザインを変更する方が良いです。生成されたすべての値をArrayListに入れることができ、新しい乱数を生成する間にこのArrayListに新しい数値が含まれているかどうかを確認できます。あなたはそれを行うことができますcontainsAll()

+0

@DennisBjörkその後、あなたの質問を編集しようとすることができます – Russiancold

関連する問題