Note that there are some explanatory texts on larger screens.

plurals
  1. POJava permutations
    primarykey
    data
    text
    <p>I am trying to write a program which can keep track of the number of chips each player has in poker. This is not a poker game, only a program which can keep the number of chips each player has. However, I want to be able to "bet" "call" "fold" etc and be able to automatically keep track. </p> <p>My question is, is there a way for adjusting the number of players without writing each permutations? Currently, it can only keep track of 2 people. How would I make it so it can theoretically keep track of an infinite amount of people? I've written every permutation possible and I know it's not very efficient so is there a more efficient way of coding this? </p> <p>I am a java noob so any help would be appreciated. </p> <pre><code>import java.util.Scanner; import static java.lang.System.out; class Chips { static String move; //first move static int betVal1, betVal2; static int pot; static int P1, P2; static int roundcount; static String player; static Scanner myScanner = new Scanner(System.in); static int turncount; static String outcome; public static void firstP1() { //first move when P1 start out.print("P1 - will you 'Bet', 'Check' or 'Fold'? "); move = myScanner.next(); while (!move.equals("Bet") &amp;&amp; !move.equals("Check") &amp;&amp; !move.equals("Fold")){ out.print("Please type 'Bet', 'Check' or 'Fold'"); move = myScanner.next(); } switch(move) { case "Bet": out.print("How much will you bet? If you've changed your mind: Type '0' to check and '-1' to fold. "); betVal1 = myScanner.nextInt(); while (betVal1 &gt; P1) { out.print("You cannot bet more than your chip count. How much will you bet? "); betVal1 = myScanner.nextInt(); } if (betVal1 == 0) { //check P2aftercheck(); } if (betVal1 == -1) { //fold P2 += pot; pot = 0; roundcount = 0; turncount++; out.print("P1: "); out.println(P1); out.print("P2: "); out.println(P2); out.println("Next turn"); if (turncount % 2 == 0) { //check to see who begins next turn player = "One"; } else { player = "Two"; } if( player.equals("One")) { firstP1(); } else { firstP2(); } } pot += betVal1; P1 -= betVal1; //out.println(betVal); //out.print(pot); P2afterbet(); break; case "Check": P2aftercheck(); break; case "Fold": P2 += pot; pot = 0; roundcount = 0; turncount++; if (turncount % 2 == 0) { player = "One"; } else { player = "Two"; } if( player.equals("One")) { firstP1(); } else { firstP2(); } break; } } public static void firstP2() { //first move when P2 start out.print("P2 - will you 'Bet', 'Check' or 'Fold'? "); move = myScanner.next(); while (!move.equals("Bet") &amp;&amp; !move.equals("Check") &amp;&amp; !move.equals("Fold")){ out.print("Please type 'Bet', 'Check' or 'Fold' "); move = myScanner.next(); } switch(move) { case "Bet": out.print("How much will you bet? "); betVal2 = myScanner.nextInt(); while (betVal2 &gt; P2) { out.print("You can not bet more than your chip count. How much will you bet? "); betVal2 = myScanner.nextInt(); } pot += betVal2; P2 -= betVal2; //out.println(betVal); //out.print(pot); P1afterbet(); break; case "Check": P1aftercheck(); break; case "Fold": P1 += pot; pot = 0; roundcount = 0; turncount++; out.print("P1: "); out.println(P1); out.print("P2: "); out.println(P2); out.println("Next turn"); if (turncount % 2 == 0) { player = "One"; } else { player = "Two"; } if( player.equals("One")) { firstP1(); } else { firstP2(); } break; } } public static void P1afterbet() { //P1 move after P2 bet out.print("P1 - will you 'Bet', 'Call' or 'Fold'? "); move = myScanner.next(); while (!move.equals("Bet") &amp;&amp; !move.equals("Call") &amp;&amp; !move.equals("Fold")){ out.print("Please type 'Bet', 'Check' or 'Fold' "); move = myScanner.next(); } switch(move) { case "Bet": out.print("How much will you bet? "); betVal1 = myScanner.nextInt(); while (betVal1 &lt; betVal2){ out.print("Please bet at least "); out.print(betVal2); out.println(" chips."); out.print("How much will you bet? "); betVal1 = myScanner.nextInt(); } pot += betVal1; P1 -= betVal1; P2afterbet(); break; case "Call": pot += betVal1; P1 -= betVal1; roundcount++; if (roundcount == 4){ roundend(); } if( player.equals("P1")) { firstP1(); } else { firstP2(); } break; case "Fold": P2 += pot; pot = 0; roundcount = 0; turncount++; out.print("P1: "); out.println(P1); out.print("P2: "); out.println(P2); out.println("Next turn"); if (turncount % 2 == 0) { player = "One"; } else { player = "Two"; } if( player.equals("One")) { firstP1(); } else { firstP2(); } break; } } public static void P1aftercheck() { //P1 move after P2 check out.print("P1 - will you 'Bet', 'Check' or 'Fold'? "); move = myScanner.next(); while (!move.equals("Bet") &amp;&amp; !move.equals("Check") &amp;&amp; !move.equals("Fold")){ out.print("Please type 'Bet', 'Check' or 'Fold'"); move = myScanner.next(); } switch(move) { case "Bet": out.print("How much will you bet? "); betVal1 = myScanner.nextInt(); while (betVal1 &gt; P1) { out.print("You can not bet more than your chip count. How much will you bet? "); betVal1 = myScanner.nextInt(); } pot += betVal1; P1 -= betVal1; //out.println(betVal); //out.print(pot); P2afterbet(); break; case "Check": roundcount++; if (roundcount == 4) { roundend(); } if( player.equals("One")) { firstP1(); } else { firstP2(); } break; case "Fold": P2 += pot; pot = 0; roundcount=0; turncount++; out.print("P1: "); out.println(P1); out.print("P2: "); out.println(P2); out.println("Next turn"); if (turncount % 2 == 0) { player = "One"; } else { player = "Two"; } if( player.equals("One")) { firstP1(); } else { firstP2(); } break; } } public static void P2afterbet() { //P2 move after P1 bet out.print("P2 - will you 'Bet', 'Call' or 'Fold'? "); move = myScanner.next(); while (!move.equals("Bet") &amp;&amp; !move.equals("Call") &amp;&amp; !move.equals("Fold")){ out.print("Please type 'Bet', 'Check' or 'Fold'"); move = myScanner.next(); } switch(move) { case "Bet": out.print("How much will you bet? "); betVal2 = myScanner.nextInt(); while (betVal2 &gt; P2) { out.print("You can not bet more than your chip count. How much will you bet? "); betVal2 = myScanner.nextInt(); } while (betVal2 &lt; betVal1) { out.print("You must bet at least "); out.print(betVal1); betVal2 = myScanner.nextInt(); } pot += betVal2; P2 -= betVal2; //out.println(betVal); //out.print(pot); P1afterbet(); break; case "Call": P2 -= betVal1; pot += betVal1; roundcount++; if (roundcount == 4){ roundend(); } if( player.equals("P1")) { firstP1(); } else { firstP2(); } break; case "Fold": P1 += pot; pot = 0; roundcount = 0; turncount++; out.print("P1: "); out.println(P1); out.print("P2: "); out.println(P2); out.println("Next turn"); if (turncount % 2 == 0) { player = "One"; } else { player = "Two"; } if( player.equals("One")) { firstP1(); } else { firstP2(); } break; } } public static void P2aftercheck() { //P2 move after P1 check out.print("P2 - will you 'Bet', 'Check' or 'Fold'? "); move = myScanner.next(); while (!move.equals("Bet") &amp;&amp; !move.equals("Check") &amp;&amp; !move.equals("Fold")){ out.print("Please type 'Bet', 'Check' or 'Fold'"); move = myScanner.next(); } switch(move) { case "Bet": out.print("How much will you bet? "); betVal2 = myScanner.nextInt(); while (betVal2 &gt; P1) { out.print("You can not bet more than your chip count. How much will you bet? "); betVal2 = myScanner.nextInt(); } pot += betVal2; P2 -= betVal2; //out.println(betVal); //out.print(pot); P1afterbet(); break; case "Check": roundcount++; if (roundcount == 4){ roundend(); } if( player.equals("One")) { firstP1(); } else { firstP2(); } break; case "Fold": P1 += pot; pot = 0; roundcount=0; turncount++; out.print("P1: "); out.println(P1); out.print("P2: "); out.println(P2); out.println("Next turn"); if (turncount % 2 == 0) { player = "One"; } else { player = "Two"; } if( player.equals("One")) { firstP1(); } else { firstP2(); } break; } } public static void roundend() { out.print("Who won the round? 'P1' or 'P2'? "); outcome = myScanner.next(); turncount++; if (turncount % 2 == 0) { player = "One"; } else { player = "Two"; } while (!outcome.equals("P1") &amp;&amp; !outcome.equals("P2")){ out.print("Please type 'P1' or 'P2'"); outcome = myScanner.next(); } if (outcome.equals("P1")){ P1 += pot; pot = 0; roundcount = 0; out.print("P1: "); out.println(P1); out.print("P2: "); out.println(P2); out.println("Next turn"); if (P1 != 0 &amp;&amp; P2 != 0){ if( player.equals("One")) { firstP1(); } else { firstP2(); } } else if (P1 == 0) { out.print("P1 is out of chips. P2 Wins!"); } else { out.print("P2 is out of chips. P2 Wins!"); } } else { P2 += pot; pot = 0; roundcount = 0; out.print("P1: "); out.println(P1); out.print("P2: "); out.println(P2); out.println("Next turn"); if (P1 != 0 &amp;&amp; P2 != 0) { if( player.equals("P1")) { firstP1(); } else { firstP2(); } } else if (P1 == 0) { out.print("P1 is out of chips. P2 Wins!"); } else { out.print("P2 is out of chips. P2 Wins!"); } } System.exit(0); } public static void main(String args[]){ pot = 0; roundcount = 0; //status within turn i.e. Flop, Turn, River turncount = 2; //use for who starts out.print("Please enter starting chip count "); P1 = myScanner.nextInt(); P2 = P1; firstP1(); } </code></pre> <p>}</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload