-1

ポーカーのマルチプレイヤー ゲームを設計しています。Human オブジェクトと Computer オブジェクトがあり、どちらもポーカー プレーヤーに必要なメソッドを含む Player インターフェイスを実装しています。ゲーム内のプレイヤーの ArrayList があり、各プレイヤーに移動して、ハンドをフォールドするかスタンドするかを確認する必要があります。全員がフォールドした場合、自分のプレーを最後にチェックした人が自動的に勝ちます。手札ごとに、スターティング プレーヤーをローテーションする必要があります。まず、ArrayList のインデックス 0 の人が最初に実行されます。秒針、インデックス1の人が先です。アイデアを跳ね返し、これらの機能をどのように実装するかについて人々の意見を聞きたいだけです。

当初、私はこのようなことをするという考えを持っていました。

public void poker(ArrayList<Player> players){
   int foldCounter = 0;
   int starter = 0; 

   while (weWantToPlay){
      for (int j = starter; j < players.size(); j++){
         //get the players game plan
         players.get(j).getStand

         //the player is folding
         if (!player.stand()){
            foldCounter++;
            //doStuff
         else{
            //doStuff
         }
     }

     //do more stuff and play poker

     //increment starter so the next hand, the second person starts
     // this obviously will not work, cause we need go to the end of the list, then wrap around
     starter++;

     //check who's folded to see if we automatically have a winner
     if (foldCounter == players.size()-1){
        for (Player element:players){
           if (element.stand()){
              winner = element; 
              break;
           }
        }
     }
 }

}

4

2 に答える 2

1

質問が表示されないため、どの問題を解決しようとしているのかわかりません。

「スターターの問題」の場合:インクリメントするスターターを使用する代わりに、プレーヤーのリストを 0 からサイズ 1 まで繰り返し処理し、完了したら、インデックス 0 のプレーヤーを削除して追加することができます。リストの最後に戻って、もう一度繰り返します。

于 2013-04-10T04:40:53.893 に答える
0
    I am not much aware of the game poker but as  per my understanding i understood that after each hand the starting player will be changed (i.e if A,B,C are three players then at first time A will be playing first then second time C will and third time B will be the first to play.

    If this is the requirement then you can keep on rotating the players after each round and put your logic to find the winner.

    The following code can be used for rotation


    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.List;

    public class Main {
      public static void main(String[] args) {
        List numbers = new ArrayList();

        for (int i = 0; i < 5; i++) {
          numbers.add(i);
        }

        System.out.println("Original Array -" + Arrays.toString(numbers.toArray()));

        for(int i=0;i<numbers.size();i++){
            Collections.rotate(numbers, 1);

            System.out.println("After "+ i +" Rotation  -"+ Arrays.toString(numbers.toArray()));

            System.out.println("Element at first position - " +numbers.get(0));
        }
      }
    }


    Output :-

    Original Array -[0, 1, 2, 3, 4]
    After 0 Rotation  -[4, 0, 1, 2, 3]
    Element at first position - 4
    After 1 Rotation  -[3, 4, 0, 1, 2]
    Element at first position - 3
    After 2 Rotation  -[2, 3, 4, 0, 1]
    Element at first position - 2
    After 3 Rotation  -[1, 2, 3, 4, 0]
    Element at first position - 1
    After 4 Rotation  -[0, 1, 2, 3, 4]
    Element at first position - 0



NOTE:If you want to make rotation is some other fashion just change the digit in the following line
Collections.rotate(numbers, 1);
于 2013-04-10T06:26:16.940 に答える