Starting from:

$30

CS312- Artificial Intelligence: Lab 5 Solved

Task 5: Game Playing 

Problem Statement: Code​ a Bot to play the game of Othello in an optimal way, in order to win the game.

Description: In​ this assignment, you will code a bot to win the game of Othello. Given a board configuration and a turn, your bot will return a valid move. The game ends when neither of the players can make a valid move. The player with the maximum number of coins is the winner.

Programming Language: C++

System specifications: 64-bit Linux distribution

Instructions
Setting up the framework 

We will be providing you with a framework (Desdemona.zip) that lets two bots compete against each other.

Extract the contents of Desdemona.zip into a suitable directory.
Set up the framework by issuing a make command in the root of this directory.
Programming the bot
You will modify “MyBot.cpp” to return a valid move whenever the function “play is called. The file is located in “bots/MyBot”.        
The makefile is also provided at this location. Use it to generate a “.so” file.        
All other source files are to be left untouched.      
You can test your bot against another bot by issuing the command “./bin/Desdemona ./<path to bot1.so >./<path to bot2.so >”            
By convention, the first bot is BLACK and the second RED.          
A random bot (bots/Random Bot) has been provided for testing.           
At the end of the game, a “game.log” file is created that contains the sequence of moves made.           
There should be NO print statements in the code submitted.             
If a bot returns an invalid move, it will be disqualified.
Helper functions
The following functions have already been written to assist you:

bool OthelloBoard::validateMove( Turn turn, int x, int y )
True if the move (x,y) is valid for the turn, False otherwise

bool OthelloBoard::validateMove( Turn turn, Move move )
True if the move is valid for the turn, False otherwise

void OthelloBoard::makeMove( Turn turn, int x, int y )
Updates the board configuration by making the move (x,y); throws an exception if the move is not valid

void OthelloBoard::makeMove( Turn turn, Move move )
Updates the board configuration by making the specified move; throws an exception if the move is not valid

list<Move>OthelloBoard::getValidMoves( Turn turn )
Returns a list of valid moves that can be made given the turn

int OthelloBoard::getBlackCount()
Returns the number of black coins on the board

int OthelloBoard::getRedCount()
Returns the number of red coins on the board

void OthelloBoard::print( Turn turn )
Prints the turn, the board configuration, and the number of black and red coins. ’X’ is BLACK,

’O’ is RED, and unfilled locations are blank

Time Constraints
Each bot can take at most 2 seconds to return a move. If this time limit is exceeded, the bot causing the timeout will be disqualified.

Evaluation Criteria: 

Heuristic Functions: 5

Correctness: 20

Report: 20

Code Quality: 5

Report Format : 

Brief description of the algorithms         
Heuristic functions considered          
Trees to show my particular moves are chosen for any 6 moves given the board configuration. ( 3 for each algorithm ) .     
Compare the two algorithms and justify which is better in terms of   
Space and Time complexity
Winning criteria            

More products