Difference between revisions of "CISC181 S2017 Lab4"

From class_wiki
Jump to: navigation, search
Line 12: Line 12:
 
  TTT.run_tournament();
 
  TTT.run_tournament();
 
    
 
    
Modify <tt>TicTacToeBoard.java</tt> by adding your name in a comment before the class bodyInside the class you will implement the <tt>chooseMonteCarloMove()</tt> method as explained below.
+
This will start a "tournament", in which the user can choose an opponent for each game, decide whether to go first or second, or quit.  Code is already written to handle the logic of each game, including
 +
checking for a winner and preventing invalid moves.  Currently there are two pre-written options for opponents: ''human'', in which you will alternate choosing moves manually; and ''random'', in which
 +
the computer chooses a random open space on its turn with no intelligence whatsoever.
 +
 
 +
Your job in this lab is to add a third opponent semi-intelligent option, which we will call ''Monte Carlo'' (explained below)Specifically, you will fill in the body of the <tt>chooseMonteCarloMove()</tt> method in
 +
<tt>TicTacToeBoard</tt> class.  You should also add your name in a comment before the class body.
  
 
===Simple tic-tac-toe AI===
 
===Simple tic-tac-toe AI===
 +
 +
The idea behind our Monte Carlo approach to tic-tac-toe move selection is simple.
 +
 +
For more background, see [https://en.wikipedia.org/wiki/Monte_Carlo_tree_search Monte Carlo tree search] (FYI, we are doing the "pure", non-tree version here).
  
  

Revision as of 13:39, 6 March 2017

Preliminaries

  • Make a new project with n = 4 (following these instructions)
  • Name your main class "Lab4" (when creating a new module in the instructions above, in the Java class name field)

Instructions

Add TicTacToe.java and TicTacToeBoard.java to your project folder. Make your main() function in Lab4.java look like this:

TicTacToe TTT = new TicTacToe();
TTT.run_tournament();
 

This will start a "tournament", in which the user can choose an opponent for each game, decide whether to go first or second, or quit. Code is already written to handle the logic of each game, including checking for a winner and preventing invalid moves. Currently there are two pre-written options for opponents: human, in which you will alternate choosing moves manually; and random, in which the computer chooses a random open space on its turn with no intelligence whatsoever.

Your job in this lab is to add a third opponent semi-intelligent option, which we will call Monte Carlo (explained below). Specifically, you will fill in the body of the chooseMonteCarloMove() method in TicTacToeBoard class. You should also add your name in a comment before the class body.

Simple tic-tac-toe AI

The idea behind our Monte Carlo approach to tic-tac-toe move selection is simple.

For more background, see Monte Carlo tree search (FYI, we are doing the "pure", non-tree version here).


Finishing up

Remember to use proper naming and formatting style throughout your code, and submit ONLY TicTacToeBoard.java on Sakai by Friday, March 10