Difference between revisions of "Connect Four"
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
Contents
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
Code To Implement
class: | SequentialConnectFour.java | |
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 implementation only)
class: | WinOrLoseHeuristic.java | |
methods: | evaluate | |
package: | connectfour.challenge | |
source folder: | student/src/main/java |
method: public double evaluate(Board board, Player color, Config config, int currentDepth)
(sequential implementation only)
Testing Your Solution
Visualization
class: | ConnectFourVizApp.java | VIZ |
package: | connnectfour.challenge | |
source folder: | student/src//java |
Correctness
class: | ConnectFourTestSuite.java | |
package: | connnectfour.challenge | |
source folder: | testing/src/test/java |