-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathenvironment.py
29 lines (27 loc) · 1.05 KB
/
environment.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
from coord import Coord
from baseAgent import BaseAgent
from field import Field
from typing import Callable
import sys
import copy
class Environment:
def __init__(self, engine: Callable[[Field], BaseAgent], field: Field, limit: int = 10000):
self.field = field
self.engine = engine(field)
self.history = []
self.LIMIT = limit
def play(self):
for t in range(self.LIMIT):
if __debug__: sys.stderr.write("time: {}\n".format(t))
cur_field = Field(self.field.storage)
cur_field.place_fruits()
# eval_field = copy.deepcopy(cur_field)
record = self.engine.play_one_game(cur_field)
# self.engine.play_one_game(cur_field)
# record = self.engine.play_eval_game(eval_field)
self.history.append(record)
def dump_record(self, name = None):
filename = name or self.engine.__class__.__name__
with open(filename+'.csv', 'w') as f:
for i, r in enumerate(self.history):
f.write("{},{}\n".format(i, r))