-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsave.py
More file actions
108 lines (84 loc) · 3.06 KB
/
Copy pathsave.py
File metadata and controls
108 lines (84 loc) · 3.06 KB
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import json
from stockfish import Stockfish
from conf import SAVE_FILE_PATH
from evalBar import EvalBar
class Save:
file: str
save: dict
def __init__(self, file, initialSave: dict):
self.file = file
self.save = initialSave
@staticmethod
def createBlank(file: str = SAVE_FILE_PATH):
return Save(file, {
"FEN": "",
"evalBarEvolution": [],
"hasWhiteLastPLayed": False,
"isRobotWhite": True,
"stockfishElo": 1000,
"stockfishDepth": 15,
})
@staticmethod
def createFromStockfish(stockfish: Stockfish, file: str = SAVE_FILE_PATH, hasWhiteLastPLayed: bool = False,
isRobotWhite: bool = True, stockfishElo: int = 1000, stockfishDepth: int = 15):
return Save(file, {
"FEN": stockfish.get_fen_position(),
"evalBarEvolution": [EvalBar(stockfish).score_normalized],
"hasWhiteLastPLayed": hasWhiteLastPLayed,
"isRobotWhite": isRobotWhite,
"stockfishElo": stockfishElo,
"stockfishDepth": stockfishDepth,
})
@staticmethod
def createFromSaveFile(file: str = SAVE_FILE_PATH):
with open(file, "r") as f:
data = json.load(f)
return Save(file, {
"FEN": data["FEN"],
"evalBarEvolution": data["evalBarEvolution"],
"hasWhiteLastPLayed": data["hasWhiteLastPLayed"],
"stockfishElo": data["stockfishElo"],
"stockfishDepth": data["stockfishDepth"],
"isRobotWhite": data["isRobotWhite"],
})
@property
def fen(self) -> str:
return self.save["FEN"]
@fen.setter
def fen(self, fen: str):
self.save["FEN"] = fen
@property
def evalBarEvolution(self) -> list[EvalBar]:
return self.save["evalBarEvolution"]
@evalBarEvolution.setter
def evalBarEvolution(self, evalBarEvolution: list[EvalBar]):
self.save["evalBarEvolution"] = evalBarEvolution
@property
def hasWhiteLastPLayed(self) -> bool:
return self.save["hasWhiteLastPLayed"]
@hasWhiteLastPLayed.setter
def hasWhiteLastPLayed(self, hasWhiteLastPLayer: bool):
self.save["hasWhiteLastPLayed"] = hasWhiteLastPLayer
@property
def isRobotWhite(self) -> bool:
return self.save["isRobotWhite"]
@isRobotWhite.setter
def isRobotWhite(self, isRobotWhite: bool):
self.save["isRobotWhite"] = isRobotWhite
@property
def stockfishElo(self) -> int:
return self.save["stockfishElo"]
@stockfishElo.setter
def stockfishElo(self, stockfishElo: int):
self.save["stockfishElo"] = stockfishElo
@property
def stockfishDepth(self) -> int:
return self.save["stockfishDepth"]
@stockfishDepth.setter
def stockfishDepth(self, stockfishDepth: int):
self.save["stockfishDepth"] = stockfishDepth
def saveToFile(self):
with open(self.file, 'w') as file:
json.dump(self.save, file, indent=4)
def __str__(self):
return str(self.save)