-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_util.py
More file actions
131 lines (118 loc) · 4.85 KB
/
test_util.py
File metadata and controls
131 lines (118 loc) · 4.85 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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
from chessboard import ChessBoard,Piece
import PySimpleGUI as sg
import json
import test_categories
def create_grid_layout(rows, cols, grid):
layout = []
for i in range(rows):
row = []
for j in range(cols):
tile=grid[i][j]
init_val= "" if tile.piece==None else tile.piece.symbol
color="black"
if tile.piece!=None:
if tile.piece.color==ChessBoard.BLACK:
color="red"
input_elem = sg.Button(str(init_val), size=(3, 3), key=(i, j),button_color=("white",color))
row.append(input_elem)
layout.append(row)
return layout
board=ChessBoard(ChessBoard.WHITE)
grid = board.board
def get_symbol(row,col):
tile=grid[row][col]
init_val= "" if tile.piece==None else tile.piece.symbol
return init_val
def update_button(button:sg.Button,row,col):
tile=grid[row][col]
new_val= "" if tile.piece==None else tile.piece.symbol
color="black"
if tile.piece!=None:
if tile.piece.color==ChessBoard.BLACK:
color="red"
button.update(text=new_val,button_color=("white",color),disabled=False)
def swap(first,second):
global grid
tmp=grid[first[0]][first[1]]
grid[first[0]][first[1]]=grid[second[0]][second[1]]
grid[second[0]][second[1]]=tmp
def main():
global grid
rows, cols = 8,8 # Adjust the grid size as needed
layout = [
[sg.Frame('Grid', create_grid_layout(rows, cols, grid))],
[sg.Button('Save_Board'),sg.Combo(["Swap","Add","Delete"],"Swap",key="__mode__",change_submits=True),sg.Combo(["P","N","B","Q","K"],key="__symbol__",change_submits=True),sg.Combo(["B","W"],key="__color__") ,sg.Button('Exit')],
[sg.Combo(["black","white"],"white",key="__playing_as__",tooltip="Color to play"),sg.Combo(test_categories.TESTS,tooltip="Test Category",key="__test_category__"),sg.Combo([True,False,"CM","SM","None"],key="__expected_result__",default_value=True,tooltip="Desired test result."),sg.InputText(tooltip="Move to make",key="__move__")]
]
window = sg.Window('2D Array Editor', layout)
first=None
# piece={"symbol":"P","color":0}
piece_placement_vals={"__mode__":"Swap"}
while True:
event, values = window.read()
if event == sg.WIN_CLOSED or event == 'Exit':
break
elif event == 'Save_Board':
test_cat=values["__test_category__"]
playing_as=values["__playing_as__"]
expected_result=values["__expected_result__"]
move=values['__move__']
converted=[]
for i in range(8):
for j in range(8):
piece=grid[i][j].piece
if piece is not None:
converted.append([i,j,piece.symbol,piece.color])
#note: This file does not really follow json, formatting
with open('boards.json', 'a') as f:
f.write(test_cat)
f.write(",")
f.write(playing_as)
f.write(",")
f.write(str(expected_result))
f.write(",")
f.write(move)
f.write(",")
json.dump(converted, f)
f.write("\n")
elif event=="__mode__":
piece_placement_vals=values
first=None
pass
elif event=="__symbol__":
first=None
piece_placement_vals=values
elif event=="__color__":
first=None
piece_placement_vals=values
else:
if piece_placement_vals["__mode__"]=="Swap":
try:
if first==None:
first=(event)
else:
second=(int(event[0]),int(event[1]))
swap(first,second)
button1=window[first]
button2=window[event]
update_button(button1,first[0],first[1])
update_button(button2,second[0],second[1])
first=None
except:
pass
elif piece_placement_vals["__mode__"]=="Add":
color=ChessBoard.BLACK if values["__color__"]=="B" else ChessBoard.WHITE
tmp_piece=Piece(color)
tmp_piece.symbol=values["__symbol__"]
grid[event[0]][event[1]].piece=tmp_piece
button=window[event]
update_button(button,event[0],event[1])
elif piece_placement_vals["__mode__"]=="Delete":
tmp=grid[event[0]][event[1]]
tmp.piece=None
grid[event[0]][event[1]]=tmp
button=window[event]
update_button(button,event[0],event[1])
window.close()
if __name__ == '__main__':
main()