blob: 3af80f64ab8ecfb386e31392fc838ed21c9676d7 (
plain) (
blame)
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
|
import json
import toggle_game as tg
def recieve_game(game_fp) -> dict:
"""
Load game in from json string, returning game dict
Raises exception on invalid game
"""
game = json.load(game_fp)
if game['size'] < 0 or game['size'] > 100:
raise Exception("Invalid Board size")
if game['size'] != len(game['board']):
raise Exception("Game size and Board size do not match")
if game['finished']:
raise Exception("The game is finished")
if game['human_turn']:
raise Exception("Not the computer's turn")
if game['version'] != "0.0.0":
raise Exception("Invalid version")
return game
def send_game(game: dict) -> str:
game_json = json.dumps(game)
return game_json.encode('utf-8')
def play_game(game: dict) -> None:
if game['turn'] == 0:
game['human_turn'] = not tg.P(game['size']) > 0
game['turn'] += 1
if game['human_turn']:
return
game['turn'] += 1
i = tg.find_move(game)
game['board'] = tg.make_move(game, i)
game['human_turn'] = True
game['finished'] = tg.i_have_won(game)
if game['finished']:
game['winner'] = 'Computer'
def application(env, start_response):
headers = [('Content-Type', 'application/json')]
start_response('200 OK', headers)
if env['REQUEST_METHOD'] == 'POST':
try:
game = recieve_game(env['wsgi.input'])
except json.JSONDecodeError:
return [json.dumps({'failure': True}).encode('utf-8')]
play_game(game)
return [send_game(game)]
return [json.dumps({'not_post': True}).encode('utf-8')]
def main():
pass
|