Skip to content

Commit 7891793

Browse files
committed
Update python_easy_chess_gui.py
* Don't crash the program when there are no engine file in Engines folder. Inform the user to install the engine first when user goes for play mode. This would also solve issue in Linux if there are no linux engine in Engine folder.
1 parent cc47056 commit 7891793

1 file changed

Lines changed: 26 additions & 9 deletions

File tree

python_easy_chess_gui.py

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@
6060

6161

6262
APP_NAME = 'Python Easy Chess GUI'
63-
APP_VERSION = 'v1.5'
63+
APP_VERSION = 'v1.6'
6464
BOX_TITLE = '{} {}'.format(APP_NAME, APP_VERSION)
6565

6666

@@ -2496,6 +2496,7 @@ def main_loop(self):
24962496
24972497
:return:
24982498
"""
2499+
engine_id_name = None
24992500
layout = self.build_main_layout(True)
25002501

25012502
# Use white layout as default window
@@ -2511,16 +2512,26 @@ def main_loop(self):
25112512
self.engine_id_name_list = self.get_engine_id_name_list()
25122513

25132514
# Define default opponent engine, user can change this later.
2514-
engine_id_name = self.opp_id_name = self.engine_id_name_list[0]
2515-
self.opp_file, self.opp_path_and_file = self.get_engine_file(
2516-
engine_id_name)
2515+
try:
2516+
engine_id_name = self.opp_id_name = self.engine_id_name_list[0]
2517+
self.opp_file, self.opp_path_and_file = self.get_engine_file(
2518+
engine_id_name)
2519+
except IndexError as e:
2520+
logging.warning(e)
2521+
except Exception:
2522+
logging.exception('Error in getting opponent engine!')
25172523

25182524
# Define default adviser engine, user can change this later.
2519-
self.adviser_id_name = self.engine_id_name_list[1] \
2520-
if len(self.engine_id_name_list) >= 2 \
2521-
else self.engine_id_name_list[0]
2522-
self.adviser_file, self.adviser_path_and_file = self.get_engine_file(
2523-
self.adviser_id_name)
2525+
try:
2526+
self.adviser_id_name = self.engine_id_name_list[1] \
2527+
if len(self.engine_id_name_list) >= 2 \
2528+
else self.engine_id_name_list[0]
2529+
self.adviser_file, self.adviser_path_and_file = self.get_engine_file(
2530+
self.adviser_id_name)
2531+
except IndexError as e:
2532+
logging.warning(e)
2533+
except Exception:
2534+
logging.exception('Error in getting adviser engine!')
25242535

25252536
self.init_game()
25262537

@@ -3434,6 +3445,12 @@ def main_loop(self):
34343445

34353446
# Mode: Neutral
34363447
if button == 'Play':
3448+
if engine_id_name is None:
3449+
logging.warning('Install engine first!')
3450+
sg.Popup('Install engine first! in Engine/Manage/Install',
3451+
icon='Icon/pecg.ico', title='Mode')
3452+
continue
3453+
34373454
# Change menu from Neutral to Play
34383455
self.menu_elem.Update(menu_def_play)
34393456
self.psg_board = copy.deepcopy(initial_board)

0 commit comments

Comments
 (0)