Skip to content

Solitaire Design

Anna Nguyen edited this page Oct 8, 2020 · 9 revisions

Authors: Anna Nguyen, Katie Mendel, Andrew Heroux, Nathan Drees, Mia Li

Overview

The purpose of this project is to design a simulation of simple Klondike solitaire that is played using a procedural strategy in Java. It will follow the rules of Klondike solitaire, except only allowing three passes through the deck. The game strategies will be automatically executed from a predefined set of rules that we as developers will set. Strategy can be changed from run to run so that it is easy to compare the success of each strategy and figure out which is generally better.

Context

It is impossible to calculate the probability of winning a game of Klondike solitaire because there are too many different possibilities. To find optimal strategies, the simulation described above will generate success statistics for each run. Statistics will include winning percentage over many games, mean number of moves until game termination, and average time per game. To validate the simulation, it will be tested on decks with a known shuffled order. Some of the orderings will be winnable while others will be unwinnable. We will ensure that our program matches the expected outcome.

Goals and Non-goals

Goals

  • Have strategy easy to change and save after game.
  • The success of the optimal strategies will be measured by the percentage of winning games. (higher is better)
  • The measure of strategy success is based on the average number of moves per game. (lower is better)
  • Use parallel computing to increase the number of games played at one time.
  • The success of the optimal strategies will be determined by the average time per game. (lower is better)

Non-goals

  • Making a simulation that can play multiple strategies in one game.
  • Designing a GUI for the game.
  • Making an AI learn after games to improve strategies by themselves.
  • Making a game where a user can determine individual moves.

Milestone

  • Start date – October 6th, 2020
  • Milestone 1 – Finish all the entity classes
  • Milestone 2 – Finish the java implementation of all classes including a driver to play the game
  • Milestone 3 – Create a minimally functional simulation with a basic strategy
  • Milestone 4 – Add more elaborate strategies to improve the simulation
  • Milestone 5 – Multithreading capabilities
  • End date – October 22nd

Solution

Class diagramClass_diagram

Clone this wiki locally