Sunday, 9 November 2014

Snake and Ladder Game in Java ( 2-D Array Concept)


Name of Game : Snake and Ladder

Concept : 2-D Matrix

Instruction to play: This program will simulate a regular snakes and ladders game,where you will befacing the computer. Both start at square 1, and the first one to square 100 wins, The Default presets of Snakes : [54->19] [90->48] [99->77] Ladders : [9->34] [40->64] [67->86]. In simple words, there are some blocks (numbers) which role as sanke and some block(numbers) which role as ladders. If while playing you get that number then the respective happens.

Snapshots:




Coding :


package Games;
import java.io.*; // used to allow user to input data
 
public class Snakes_and_Ladders
{// start class
 
    //Main Method
    public static void main (String [] args) throws IOException
    {   // start main method
     
        //Welcoming Screen
     
        BufferedReader myInput2 = new BufferedReader (new InputStreamReader (System.in));
        // Print the welcome screen and instructions
        System.out.println ("\t\t\t\t\t\t-----------------------------------");
        System.out.println ("\t\t\t\t\t\t|  Welcome To Snakes And Ladders   |");
        System.out.println ("\t\t\t\t\t\t-----------------------------------\n\n");
        System.out.println ("\t\t\t\t\t\t\tInstructions:");
        System.out.println ("\t\t\t\t This program will simulate a regular snakes and ladders game, ");
        System.out.println ("\t\t\t\t where you will befacing the computer. Both start at square 1,");
        System.out.println ("\t\t\t\t and the first one to square 100 wins, The Default presets of");
        System.out.println ("\t\t\t\t Snakes : [54->19] [90->48] [99->77] Ladders : [9->34] [40->64] [67->86] ");
        System.out.println ("\t\t\t\t\t\t\t Good Luck and Have FUN!!!");
        displayBoard();
        String sGame = "y"; // decare variable used to ask user if he wants to play
     
        System.out.print ("Do you want to play? (y/n) :  "); // ask user if we wants to play the game
        sGame = myInput2.readLine (); // reads the user's input into the variable sGame
        System.out.print ("\n\n\n\n\n\n");
        // While the user says yes, go to startGame method
        // startGame is fuction type method, which start the game
        while (sGame.equals ("Y") || sGame.equals ("y"))
        {
            sGame = startGame(sGame); // give startGame a variable to work with
        }
        System.out.println ("\n\n\n\n\t\t\t\t\t\tSEE YA!!");
     
     
    } //end main method
 
    //The method for displaying The game board
    public static void displayBoard()
    {
     
        int counter= 100,iteration=-1; // sets the counter and iteration vaiables to be used in making the board
        System.out.println ("-----------------------------------------------------Game Board--------------------------------------------------------------------");
     
        /*
        This while loop makes the board for the player to visualize what the
        game looks like, it uses a counter to increment or decrement by 1.
        It will also subtract by 9 or 10 when necessary to create a board
        exactly like the one given.
        */
        while (counter > 0){// start while
            if (counter%10 == 0 && counter != 100){// checks if the counter is at a 90, or 80...
                if(iteration==-1)
                {
                    // subtract 9 from the counter
                    // and sets it to start adding by one
                    counter-=9;
                    iteration=1;
                }
                else
                {
                    System.out.print(counter+"\t");
                    counter-=10;
                    iteration=-1; // set the counter to start subtract by ones
                }
                if(counter!=0)
                System.out.print("\n" + counter + "\t"); // just prints out the counter with a line breck
            }
            else
            System.out.print(counter + "\t"); // just prints out the counter
            counter+=iteration; // sets counter to add by iteration
        }// end while
        System.out.println();
        System.out.println ("__________________________________________________________________________________________________________________________________");
    }
 
 
 
    //-------------------------------------------------------------------startGame Method------------------------------------------------------------------------------
 
    /*
    startGame method:
 
    This method is responsible for organizing the game, asking the user to continue playing,
    and setting the important varibales. It will also return a vaule to the main method, which
    will reset the game so the user can play again.
    */
    public static String startGame (String start) throws IOException // Recieves data from the main method
    {// start startGame method
     
        BufferedReader myInput = new BufferedReader (new InputStreamReader (System.in));
     
        // sets important variables for the game
        // NOTE: These variables will change as the game progresses
     
        int userPosition = 1; // sets the default loaction for user's piece to 1
        int compPosition = 1; // sets the default loaction for computer's piece to 1
        int diceRoll = 0; // creates the first die
        int diceRoll2 = 0; // creates the second die
        int userRoll = 1; // declares what the user rolled
        int compRoll = 1; // declares what the computer rolled
        String playAgain = "y"; // sets the play again variable
     
        // declare all the snakes and ladders in a array
        int snakesLaddersArray [] = new int [6]; // create a 6 element array
        // store the snakes and ladders location in the array
        snakesLaddersArray [0] = 54;
        snakesLaddersArray [1] = 90;
        snakesLaddersArray [2] = 99;
        snakesLaddersArray [3] = 9;
        snakesLaddersArray [4] = 40;
        snakesLaddersArray [5] = 67;
     
     
        while (playAgain.equals ("y") || playAgain.equals ("Y")) // loops while the playAgaim vaiable equals "y" or "Y".
        {// start playAgain While
         
         
            // gets the dice roll for user and computer
            userRoll =  getDice(diceRoll, diceRoll2); // sends data to a function type method called getDice
            compRoll =  getDice(diceRoll, diceRoll2); // does the same for the computer
            System.out.println("__________________________________________________________________________________________________________________________________");
            System.out.println ("\t\t\t\t\t------------------------------------------");
            System.out.println ("\t\t\t\t\t|\tYou Rolled a " + userRoll + "\t\t|"); // print the roll the user got
            System.out.println ("\t\t\t\t\t|\tThe Computer Rolled a " + compRoll + "\t|"); // print the roll the computer got
            System.out.println ("\t\t\t\t\t------------------------------------------");
         
            // hold the user's last position for switching back if current position was greater than 100
            userPosition = userPosition + userRoll;
         
            // hold the computer's last position for switching back if current position was greater than 100
            compPosition = compPosition + compRoll;
         
         
         
            // check to see if user landed on top of a snake or at the bottom of a ladder
            // give getP parameters to work with, and recieve a final value which can be printed out
            userPosition = getP(userPosition, userRoll, snakesLaddersArray);
            // The same goes for compPosition, however compgetP gets an additional
            // parameter (userPosition) to check if user has already won
            compPosition = compgetP(compPosition, compRoll, snakesLaddersArray, userPosition);
         
            System.out.println("\t\t\t*************************************************************************");
            System.out.println ("\t\t\t*\t\tYou are currently on square " + userPosition + "\t\t\t*"); // print out the user's current location
            System.out.println ("\t\t\t*\t\tThe Computer is currently on square " + compPosition + "\t\t*"); // print out the computer's current location
            System.out.println("\t\t\t*************************************************************************");
         
            // resets the position values, if the user or the computer won
            // so that the user could play the entire game again if he/she wanted to
            if (userPosition == 100 || compPosition == 100)
            {
                userPosition = 1;
                compPosition = 1;
                // asks the user if we wants to play again
                System.out.print ("Do you want to play? Y or N     >  ");
                playAgain = myInput.readLine ();
                System.out.print ("\n\n\n\n\n\n\n\n\n\n\n\n");
            }
            else
            {
                // asks the user if we wants to continue playing
                System.out.print ("Do you want to play? Y or N     >  ");
                playAgain = myInput.readLine ();
             
            }
         
         
        }// end playAgain While
     
        return playAgain; // returns prameter "playAgain" to main: if the user wants to play the game again
    }// end startGame method
 
 
 
 
 
 
    //-------------------------------------------------------------------geDice Method------------------------------------------------------------------------------
 
    /*
    getDice method:
 
    This method generates two random numbers bewteen 1 and 6, then
    adds them to get a final roll. Next it returns the value to be
    diplayed on the screen.
    */
    public static int getDice (int diceRoll, int diceRoll2)
    {// start getDies class
        diceRoll = (int)(Math.random()*6 )+1 ; //creates dice roll number 1
        diceRoll2 = (int)(Math.random()*6 )+1 ; //creates dice roll number 2
        int move = diceRoll + diceRoll2; // adds the two dice rolls to get a final move
        return move; // return parameter move: this will give the final dice roll back to startGame
    }// end getDice class
 
 
 
 
    //-------------------------------------------------------------------getP Method------------------------------------------------------------------------------
    /*
    getP method:
 
    This method is responsible for checking if the USER is on
    top of a snake, or at the bottom of a ladder, and then
    adjusting the user's position to mathch the snake or
    ladders value.
    */
    public static int getP (int userPosition, int userRoll, int snakesLaddersArray []) throws IOException // recieves two parameter from startGame
    {// start getP
     
     
        if(userPosition == snakesLaddersArray[0]) //if position equals snake 1
        {
            userPosition = 19; // set new position
            System.out.println ("\t\t\t\t~~~~~~~~~~~~~You Got Bit By A Snake, GO DOWN!!!~~~~~~~~~~~~~");
        }
        else if (userPosition == snakesLaddersArray[1]) //if position equals snake 2
        {
            userPosition = 48; // set new position
            System.out.println ("\t\t\t\t~~~~~~~~~~~~~You Got Bit By A Snake, GO DOWN!!!~~~~~~~~~~~~~");
         
        }
        else if (userPosition == snakesLaddersArray[2]) //if position equals snake 3
        {
            userPosition = 77; // set new position
            System.out.println ("\t\t\t\t~~~~~~~~~~~~~You Got Bit By A Snake, GO DOWN!!!~~~~~~~~~~~~~");
        }
        else if (userPosition == snakesLaddersArray[3]) //if position equals ladder 1
        {
            userPosition = 34; // set new position
            System.out.println ("\t\t\t\t~~~~~~~~~~~~~You Got A Ladder!! GO UP!!!~~~~~~~~~~~~~");
         
        }
        else if (userPosition == snakesLaddersArray[4]) //if position equals ladder 2
        {
            userPosition = 64; // set new position
            System.out.println ("\t\t\t\t~~~~~~~~~~~~~You Got A Ladder!! GO UP!!!~~~~~~~~~~~~~");
         
        }
        else if (userPosition == snakesLaddersArray[5]) //if position equals ladder 3
        {
         
         
            userPosition = 86; // set new position
            System.out.println ("\t\t\t\t~~~~~~~~~~~~~You Got A Ladder!! GO UP!!!~~~~~~~~~~~~~");
        }
     
        if (userPosition < 0 || userPosition > 112) // This is ab ERROR TRAP to catch any unwanted system errors that may occur by chance
        {
            System.out.println ("An error has occured please reset the game!!!!!!");
        }
     
        else if (userPosition > 100) // checks if user's location if greater then a 100
        {
            userPosition = userPosition - userRoll; // subtract userRoll from the userposition to get back old position
            System.out.println ("OHHH You cant jump, you must land on a 100"); // print out the users current location
         
        }
        else if (userPosition == 100)
        {
            System.out.println ("YOU WON, GOOD JOB!!!"); // print out that the user won
         
        }
     
     
     
        return userPosition; // return the final position to starGame: this position had gone through all checks and test and can be displayed on screen
    }// end getP
 
 
 
 
 
 
    //-------------------------------------------------------------------compgetP Method------------------------------------------------------------------------------
 
    /*
    compgetP method:
 
    This method is responsible for checking if the COMPUTER is on
    top of a snake, or at the bottom of a ladder, and then
    adjusting the compuer's position to mathch the snakes or
    ladders value.
    */
 
    public static int compgetP (int compPosition, int compRoll, int snakesLaddersArray [], int userPosition) throws IOException
    {// start compgetP
     
        // NOTE: this method is similar to getP, so the comments are the same for both!!
        // Look at getP's commments if you need help
     
        if(compPosition == snakesLaddersArray[0])
        {
            compPosition = 19;
            System.out.println ("\t\t\t\t~~~~~~~~~~~~~Computer Got Bit By A Snake, HE WENT GO DOWN!!!~~~~~~~~~~~~~");
         
         
        }
        else if (compPosition == snakesLaddersArray[1])
        {
            compPosition = 48;
            System.out.println ("\t\t\t\t~~~~~~~~~~~~~Computer Got Bit By A Snake, HE WENT GO DOWN!!!~~~~~~~~~~~~~");
         
        }
        else if (compPosition == snakesLaddersArray[2])
        {
            compPosition = 77;
            System.out.println ("\t\t\t\t~~~~~~~~~~~~~Computer Got Bit By A Snake, HE WENT GO DOWN!!!~~~~~~~~~~~~~");
        }
        else if (compPosition == snakesLaddersArray[3])
        {
            compPosition = 34;
            System.out.println ("Computer Got TO A Ladder, HE WENT UP!!!");
        }
        else if (compPosition == snakesLaddersArray[4])
        {
            compPosition = 64;
            System.out.println ("Computer Got TO A Ladder, HE WENT UP!!!");
         
        }
        else if (compPosition == snakesLaddersArray[5])
        {
            compPosition = 86;
            System.out.println ("Computer Got TO A Ladder, HE WENT UP!!!");
        }
     
     
        if (compPosition < 0 || compPosition > 112) //  ERROR TRAP to catch any unwanted system errors that may occur by chance
        {
            System.out.println ("An error has occured for the computer, please reset the game!!!!!!");
        }
     
        else if (compPosition > 100) // checks if computers's location if greater then a 100
        {
            compPosition = compPosition - compRoll; // get old position
            System.out.println ("THE COMPUTER CAN'T JUMP!!! He must land on a 100"); // give message that the computer cant jump
         
        }
        else if (compPosition == 100 && userPosition != 100)
        {
            System.out.println ("THE COMPUTER WON, YOU FAILED!!!"); // print out that the computer won
         
        }
     
        return compPosition; // return the final position to starGame: this position had gone through all checks and test and can be displayed on screen
    } // end compgetPy
}//end clas

0 comments :

Post a Comment