Difference between revisions of "Connect Four"

From CSE231 Wiki
Jump to navigation Jump to search
Line 15: Line 15:
 
=Code To Implement=
 
=Code To Implement=
 
{{CodeToImplement|SequentialConnectFour|negamax|connectfour.challenge}}
 
{{CodeToImplement|SequentialConnectFour|negamax|connectfour.challenge}}
 +
 +
{{Sequential|public static ColumnEvaluationPair negamax(Board board, Player playerWhoseTurnItIs, Config config, int currentDepth)}}
 +
 +
{{CodeToImplement|WinOrLoseHeuristic|evaluate|connectfour.challenge}}
 +
 +
{{Sequential|public double evaluate(Board board, Player color, Config config, int currentDepth)}}
  
 
=Testing Your Solution=
 
=Testing Your Solution=

Revision as of 03:00, 29 March 2018

Motivation

Minimax is an important concept in game theory and search.

Negamax is a variant which relies on

While this technique is applicable to Chess (as Deep Blue employed to defeat Kasparov, we choose Connect Four as our context since it has a simpler game mechanic.

While the core part of searches like Minimax may be easy to parallelize, critical aspects such as alpha-beta pruning are more challenging.

Background

Solving Connect Four

Code To Implement

class: SequentialConnectFour.java Java.png
methods: negamax
package: connectfour.challenge
source folder: student/src/main/java

method: public static ColumnEvaluationPair negamax(Board board, Player playerWhoseTurnItIs, Config config, int currentDepth) Sequential.svg (sequential implementation only)

class: WinOrLoseHeuristic.java Java.png
methods: evaluate
package: connectfour.challenge
source folder: student/src/main/java

method: public double evaluate(Board board, Player color, Config config, int currentDepth) Sequential.svg (sequential implementation only)

Testing Your Solution

Visualization

class: ConnectFourVizApp.java VIZ
package: connnectfour.challenge
source folder: student/src//java

Correctness

class: ConnectFourTestSuite.java Junit.png
package: connnectfour.challenge
source folder: testing/src/test/java