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

Assignment 1