Assignment 9:   One Smart Player

Assignment 9: One Smart Player

Due Wednesday 5/26 5:00pm for the testing deliverables and Friday 5/28 11:59pm for the code deliverables

During the final exam period for the class, we will run a synchronous tournament. Bring your best player to compete for riches, glory, and fame .... or, at least, bragging rights.

To put your best foot forward in the tournament, improve your player from assignment 5. The basic technique of evaluating all of your player’s possible moves and ranking them is the starting point for thinking about strategies. Here are a few pointers:
  • Avoiding blots is good, but candlesticks are a lot worse than blots.

  • When you are behind in the race, try to leave checkers in the back, in case your opponent leaves a blot, perhaps even going for the backgame.

  • When bearing off, try to leave an even number of checkers on your top point so you don’t leave a blot on a subsequent turn.

  • Play the openings correctly.

  • Make a point (or two or three) to try to trap your opponent’s runners.

  • Some blots are worse than others; count your opponents chances to hit on their next turn to compare different blots.

Note that looking more than one move ahead quickly gets infeasible as the number of possible moves when the dice are unknown is quite large.

Testing Deliverables: In your team’s GitHub repository, create a directory named "Deliverables/9/9.1/" and deposit five test cases there for your smart player. The format for these test cases is identical to the format for assignment 5 and assignment 6, but the test cases must be different from both to count.

You will receive up to ten points for your tests, two points for each valid pair of input and output files.

Code Deliverables: In your team’s GitHub repository, create a directory "Deliverables/9/9.1/" and deposit there a Makefile for your smart player, following the same format as assignment 5.

You will receive up to fifty points for your player, depending on how many tests its test driver passes.