Project #2 Nim
Code
/// Name: John Huh
/// Period: 6
/// Program Name: Nim
/// File Name: Nim.java
/// Date Finished: 3/1/2016
import java.util.Scanner;
public class Nim
{
public static void main( String[] args )
{
Scanner keyboard = new Scanner(System.in);
String player1, player2, letter;
int a, b, c, turn, remove;
a = 3;
b = 4;
c = 5;
turn = 1;
System.out.println();
System.out.print( "Player 1, enter you name: " );
player1 = keyboard.next();
System.out.print( "Player 2, enter you name: " );
player2 = keyboard.next();
System.out.println();
System.out.println( "A: " + a + " B: " + b + " C: " + c );
System.out.println();
while ( ( a != 0 ) || ( b != 0 ) || ( c != 0 ) )
{
if (turn % 2 != 0)
{
System.out.print( player1 + ", choose a pile: " );
letter = keyboard.next();
while ( letter.equals("A") && a == 0 )
{
System.out.println();
System.out.print( "Nice try, " + player1 + ". That pile is empty. Choose again: " );
letter = keyboard.next();
}
while ( letter.equals("B") && b == 0 )
{
System.out.println();
System.out.print( "Nice try, " + player1 + ". That pile is empty. Choose again: " );
letter = keyboard.next();
}
while ( letter.equals("C") && c == 0 )
{
System.out.println();
System.out.print( "Nice try, " + player1 + ". That pile is empty. Choose again: " );
letter = keyboard.next();
}
while ( !letter.equals("C") && !letter.equals("B") && !letter.equals("A") )
{
System.out.println();
System.out.print( "Nice try, " + player1 + ". Choose an actual pile: " );
letter = keyboard.next();
}
System.out.print( "How many to remove from pile " + letter + ": " );
remove = keyboard.nextInt();
System.out.println();
while ( letter.equals("A") && ( remove > a || remove < 1 || remove == 0 ) )
{
System.out.print( "You must choose a number greater than 0, and less than or equal to pile " + letter + ". Try again: " );
remove = keyboard.nextInt();
}
while ( letter.equals("B") && ( remove > b || remove < 1 || remove == 0 ) )
{
System.out.print( "You must choose a number greater than 0, and less than or equal to pile " + letter + ". Try again: " );
remove = keyboard.nextInt();
}
while ( letter.equals("C") && ( remove > c || remove < 1 || remove == 0 ) )
{
System.out.print( "You must choose a number greater than 0, and less than or equal to pile " + letter + ". Try again: " );
remove = keyboard.nextInt();
}
if ( letter.equals("A") && a > 0 )
{
a = a - remove;
}
if ( letter.equals("B") && b > 0 )
{
b = b - remove;
}
if ( letter.equals("C") && c > 0 )
{
c = c - remove;
}
}
if (turn % 2 == 0)
{
System.out.print( player2 + ", choose a pile: " );
letter = keyboard.next();
while ( letter.equals("A") && a == 0 )
{
System.out.println();
System.out.print( "Nice try, " + player2 + ". That pile is empty. Choose again: " );
letter = keyboard.next();
}
while ( letter.equals("B") && b == 0 )
{
System.out.println();
System.out.print( "Nice try, " + player2 + ". That pile is empty. Choose again: " );
letter = keyboard.next();
}
while ( letter.equals("C") && c == 0 )
{
System.out.println();
System.out.print( "Nice try, " + player2 + ". That pile is empty. Choose again: " );
letter = keyboard.next();
}
while ( !letter.equals("C") && !letter.equals("B") && !letter.equals("A") )
{
System.out.println();
System.out.print( "Nice try, " + player2 + ". Choose an actual pile: " );
letter = keyboard.next();
}
System.out.print( "How many to remove from pile " + letter + ": " );
remove = keyboard.nextInt();
System.out.println();
while ( letter.equals("A") && ( remove > a || remove < 1 || remove == 0 ) )
{
System.out.print( "You must choose a number greater than 0, and less than or equal to pile " + letter + ". Try again: " );
remove = keyboard.nextInt();
}
while ( letter.equals("B") && ( remove > b || remove < 1 || remove == 0 ) )
{
System.out.print( "You must choose a number greater than 0, and less than or equal to pile " + letter + ". Try again: " );
remove = keyboard.nextInt();
}
while ( letter.equals("C") && ( remove > c || remove < 1 || remove == 0 ) )
{
System.out.print( "You must choose a number greater than 0, and less than or equal to pile " + letter + ". Try again: " );
remove = keyboard.nextInt();
}
if ( letter.equals("A") && a > 0 )
{
a = a - remove;
}
if ( letter.equals("B") && b > 0 )
{
b = b - remove;
}
if ( letter.equals("C") && c > 0 )
{
c = c - remove;
}
}
System.out.println( "A: " + a + " B: " + b + " C: " + c );
System.out.println();
turn++;
}
if ( turn % 2 != 0 )
{
System.out.println( player1 + ", there are no counters left, so you win!" );
}
if ( turn % 2 == 0 )
{
System.out.println( player2 + ", there are no counters left, so you win!" );
}
System.out.println();
}
}
Picture of the output