-
Notifications
You must be signed in to change notification settings - Fork 0
/
testcode.py
81 lines (66 loc) · 2.33 KB
/
testcode.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import settings
import minimax_helpers
import minimax
from gamestate import *
print("\nCreating empty game board...")
g = GameState()
depth_limit = 5
settings.init()
"""
Testing minimax_helpers
"""
print("\nTesting minimax_helpers:")
print("- Calling min_value on an empty board...")
v = minimax_helpers.min_value(g, depth_limit)
if v == -1:
print("OK: min_value() returned the expected score!\n")
else:
print("ERR: Uh oh! min_value() did not return the expected score.\n")
print("\nTesting GameState:")
print("- Getting legal moves for player 1...")
p1_empty_moves = g.get_legal_moves()
print("- Found {} legal moves.".format(len(p1_empty_moves or [])))
print("- Applying move (0, 0) for player 1...")
g1 = g.forecast_move((0, 0))
print("- Getting legal moves for player 2...")
p2_empty_moves = g1.get_legal_moves()
if (0, 0) in set(p2_empty_moves):
print("ERR: Failed\n Uh oh! (0, 0) was not blocked properly when " +
"player 1 moved there.\n")
print("- Applying move (1, 0) for player 2...")
g2 = g1.forecast_move((1, 0))
print("- Getting legal moves for player 1...")
p1_empty_moves_g2 = g2.get_legal_moves()
if (2, 0) in set(p1_empty_moves_g2):
print("ERR: Failed\n Uh oh! (2, 0) was not blocked properly when " +
"player 2 moved to (1, 0).\n")
else:
print("OK: Everything looks good!\n")
"""
Testing Minimax Algorithm
"""
print("Testing Minimax Algorithm:")
best_moves = {(0, 0), (2, 0), (0, 1)}
rootNode = GameState()
minimax_move = minimax.minimax_decision(rootNode, depth_limit)
print("- Best move choices: {}".format(list(best_moves)))
print("- Your code chose: {}".format(minimax_move))
if minimax_move in best_moves:
print("OK: That's one of the best move choices. Looks like your minimax-decision function worked!\n")
else:
print("ERR: Uh oh...looks like there may be a problem.\n")
"""
Test Depth Limited Search
"""
print("Testing Depth Limited Search:")
depth_limit = 1
expected_node_count = 5
settings.init()
rootNode = GameState()
_ = minimax.minimax_decision(rootNode, depth_limit)
print("- Expected node count: {}".format(expected_node_count))
print("- Your node count: {}".format(settings.call_counter))
if settings.call_counter == expected_node_count:
print("OK: That's right! Looks like your depth limit is working!\n")
else:
print("ERR: Uh oh...looks like there may be a problem.\n")