Chat LIVE With Programming Experts! There Are 23 Online Right Now...

Welcome to Dream.In.Code
Become a Java Expert!

Join 244,289 Java Programmers for FREE! Get instant access to thousands of Java experts, tutorials, code snippets, and more! There are 989 people online right now. Registration is fast and FREE... Join Now!




Tic Tac Toe Game

 
Reply to this topicStart new topic

Tic Tac Toe Game, Do not know how to write to file and call it

isuckatjava
3 Dec, 2008 - 04:20 PM
Post #1

New D.I.C Head
*

Joined: 3 Dec, 2008
Posts: 1

i am having problems with getting my project for Tic Tac Toe i do not know how to write to a file and call that file and get the math to work. I have attached the file that shows the problem. the directions and my code is below

Project – Phase II Description
For Phase II, you will save the results of the TicTacToe game to text file. Then you will retrieve these results and perform a statistical analysis on the results. The following are the detailed requirements:
Only the BoardManager will need to be modified;
Use the File, FileWriter, and PrintWriter classes to generate the output file and use the Scanner class to read the file (10 points);

Play 10000 games and write to a text file for each game, the winner of the game or write to the file, that there was a tie; example of the file content (10 points):
O Has Won
X Has Won
Board is Full -- No Winner
O Has Won
O Has Won

Add code to randomly select the player that makes the first selection. Your code should look like this (5 points):
SecureRandom first = new SecureRandom();
double O_or_X = first.nextDouble();
if (O_or_X < 0.5)
{
O selects first
Else
X selects first
}
Read the contents of your saved file and calculate the percent that O won, X won or there was a tie. Your only output should like this (10 points):
Percent O Wins: 46.87
Percent X Wins: 47.11
Percent tie: 6.02




CODE



import java.security.SecureRandom;
import javax.swing.JOptionPane;
public class BoardManager {
    // instance variables and object references
    // declared below:
    private Board gameBoard = null;
    private Player xPlayer = null;
    private Player oPlayer = null;

    private boolean isBoardFull = false;
    private boolean hasXWon = false;
    private boolean hasOWon = false;

    public static final char BLANK = 'b';
    public static final char O = 'O';
    public static final char X = 'X';
    public static final int ROWS = 3;
    public static final int COLUMNS = 3;

    public final int number_of_sims = 10000;

    // no argument constructor
    public BoardManager()
    {
        // create the the Board object --
        // see Board constructor for required args
        gameBoard = new Board(ROWS, COLUMNS, BLANK);
        // create a X and an O player
        xPlayer = new Player();
        oPlayer = new Player();
    }

    public static void main(String[] args)
    {
        BoardManager boardmanager = new BoardManager();
        boardmanager.play();
    }

    // need to complete this method
    public void initTheGame()
    {
        // initTheBoard
        // Hint: you need to use a gameBoard
        // method to do this
        gameBoard.initTheBoard();

    }

    // need to complete this method
    public void play()
    {
        // you need to initialize the game;
        // you have a method to do this
        initTheGame();

        // create an array to hold the players board selection
        SecureRandom first = new SecureRandom();
        double O_or_X = first.nextDouble();
        if (O_or_X < 0.5)
        {
            O selects first}
            else;
        {
            X selects first;
        }

        // loop until 1 of 3 things happens:
        // 1. O wins
        // 2. X wins
        // 3. The board is full -- a tie
        while (!hasOWon && !hasXWon && !isBoardFull)
        {
            boolean b = false;
            while (!b)
            {
                // ask o to select a position
                // check if position is open
                // break if position is open
                b = gameBoard.set_APosition(oPlayer.request_Board_Position(), O);
            }

            // check to see if the game is finished
            // if so, break out of the loop
            hasXWon();hasOWon();isBoardFull();
            if(hasXWon || hasOWon || isBoardFull) break;

            b = false;
            while (!b)
            {
                // ask x to select a position

                // check if position is open
                // break if position is open
                b = gameBoard.set_APosition(xPlayer.request_Board_Position(), X);
            }
            // check to see if the game is finished
            // if so, break out of the loop
            hasXWon();hasOWon();isBoardFull();
            if(hasXWon || hasOWon || isBoardFull) break;
        }

        // show results of the game;
        // you have a method to do this
        showResults();
    }

    // determine if the board is full
    public boolean isBoardFull()
    {
        // you need access to the board array;
        // the gameBoard reference has a method
        // that can return the board array
        // Hint: you will probably want to create
        // a local copy of the the game board array
        // to examine the contents.
        // !!!!Remember to setBoardIsFull to true if it is!!

        // call setBoardIsFull
        // set board_is_full
        char[][] boardCopy = gameBoard.getTheBoard();
        boolean r = true;
        for(int a = 0; a < boardCopy.length; a++)
            for(int b = 0; b < boardCopy.length; b++)
                if(boardCopy[a][b] == BLANK)
                    r = false;
        isBoardFull = r;
        return r;
    }

    // determine if O has won
    public boolean hasOWon()
    {
        // you need access to the board array
        // the gameBoard reference has a method
        // that can return the board array
        // Hint: you will probably want to create
        // a local copy of the the game board array
        // to examine the contents.
        // !!!!Remember to setOHasWon to true if O won !!

        // call setOHasWon
        // set O_has_won
        char[][] boardCopy = gameBoard.getTheBoard();
        //horizontal
        boolean b1 = true;
        for(int a = 0; a < boardCopy.length; a++){
            b1 = true;
            for(int c = 0; c < boardCopy[a].length; c++){
                if(boardCopy[a][c] != O)
                    b1 = false;
            }
            if(b1)break;
        }
        //vertical
        boolean b2 = true;
        for(int c = 0; c < boardCopy.length; c++){
            b2 = true;
            for(int a = 0; a < boardCopy[c].length; a++){
                if(boardCopy[a][c] != O)
                    b2 = false;
            }
            if(b2)break;
        }
        //diagonal
        int a = 0;
        boolean b3 = true;
        while(a < boardCopy.length){
            if(boardCopy[a][a] != X)
                b3 = false;
            a++;
        }
        boolean b4 = true;
        a = boardCopy.length - 1;
        while(a >= 0){
            if(boardCopy[a][a] != X)
                b4 = false;
            a--;
        }
        hasOWon = b1 || b2 || b3 || b4;
        return hasOWon;
    }

    // determine if X won
    public boolean hasXWon()
    {
//        you need access to the board array
        // the gameBoard reference has a method
        // that can return the board array
        // Hint: you will probably want to create
        // a local copy of the the game board array
        // to examine the contents.
        // !!!!Remember to setOHasWon to true if O won !!

        // call setOHasWon
        // set O_has_won
        char[][] boardCopy = gameBoard.getTheBoard();
        //horizontal
        boolean b1 = true;
        for(int a = 0; a < boardCopy.length; a++){
            b1 = true;
            for(int c = 0; c < boardCopy[a].length; c++){
                if(boardCopy[a][c] != X)
                    b1 = false;
            }
            if(b1)break;
        }
        //vertical
        boolean b2 = true;
        for(int c = 0; c < boardCopy.length; c++){
            b2 = true;
            for(int a = 0; a < boardCopy[c].length; a++){
                if(boardCopy[a][c] != X)
                    b2 = false;
            }
            if(b2)break;
        }
        //diagonal
        int a = 0;
        boolean b3 = true;
        while(a < boardCopy.length){
            if(boardCopy[a][a] != X)
                b3 = false;
            a++;
        }
        boolean b4 = true;
        a = boardCopy.length - 1;
        while(a >= 0){
            if(boardCopy[a][a] != X)
                b4 = false;
            a--;
        }
        hasXWon = b1 || b2 || b3 || b4;
        return hasXWon;
    }

    // show the results of the game
    public void showResults()
    {
        String results;
        if(hasOWon)
            results = "O has won the game!";
        else if(hasXWon)
            results = "X has won the game!";
        else
            results = "It's a tie!";


        // set the result String to identify the
        // the results of the game

        // you need access to the board array
        // the gameBoard reference has a method
        // that can return the board array
        // Hint: you will probably want to create
        // a local copy of the the game board array
        // to examine the contents.
        char[][] theBoard = gameBoard.getTheBoard();


        //display the contents of the board
        // Hint: you can use 2 for-loops (nested) to
        // do this
        int i, j;

        for (i = 0; i < theBoard.length; i++)
        {
            for (j=0; j < theBoard[i].length; j++)
                System.out.print(theBoard[i][j] + " ");
            System.out.println();
        }
        JOptionPane.showMessageDialog(null, results, "Results of the Game",
                JOptionPane.INFORMATION_MESSAGE);

    }
}


This post has been edited by isuckatjava: 3 Dec, 2008 - 04:22 PM

User is offlineProfile CardPM
+Quote Post


n8wxs
RE: Tic Tac Toe Game
3 Dec, 2008 - 08:18 PM
Post #2

--... ...-- -.. . -. ---.. .-- -..- ...
Group Icon

Joined: 6 Jan, 2008
Posts: 1,609



Thanked: 223 times
My Contributions
Before you need to worry about file handling you should get the program to actually play a game.
java

...
BoardManager boardmanager = new BoardManager();
boardmanager.play();
...


Where is the boardmanager.play() method coded?

This post has been edited by n8wxs: 3 Dec, 2008 - 08:18 PM
User is offlineProfile CardPM
+Quote Post

Fast ReplyReply to this topicStart new topic

Time is now: 7/4/09 03:40PM

Live Java Help!

Be Social

Dream.In.Code RSS Feed Dream.In.Code LinkedIn Group Follow Us On Twitter Fan Us On Facebook

Java Tutorials

Reference Sheets

Java Snippets

DIC Chatroom

Bye Bye Ads

Monthly Drawing

Thumb Drive

Top Contributors

Top 10 Kudos This Month