diff --git a/HNS/Excercises/ShipCraft/Переделка/main.py b/HNS/Excercises/ShipCraft/Переделка/main.py index 0c7bb9d..b57894a 100644 --- a/HNS/Excercises/ShipCraft/Переделка/main.py +++ b/HNS/Excercises/ShipCraft/Переделка/main.py @@ -11,14 +11,13 @@ from GameMode import GameMode active_view = {} -def create_view(window, col_offset=0, row_offset=0): +def create_view(window): field = ShipField() buttons = [] view = ShipView(field, buttons) for r in range(0, field.field_size): for c in range(0, field.field_size): btn = Button(window, text='', width=5, height=2) - btn.grid(column=c + col_offset, row=r + row_offset) btn.bind('', lambda e, x=r, y=c: left_button_click(view, x, y)) btn.bind('', lambda e: right_button_click(view)) btn.bind('', lambda e, x=r, y=c: button_enter(view, x, y)) @@ -27,6 +26,18 @@ def create_view(window, col_offset=0, row_offset=0): colorize(view) return view +def show_view(view, col_offset=0, row_offset=0): + field_size = view.ship_field.field_size + + for r in range(0, field_size): + for c in range(0, field_size): + btn = view.buttons[r * field_size +c] + btn.grid(column=c + col_offset, row=r + row_offset) + +def hide_view(view): + for button in view.buttons: + button.grid_forget() + def colorize(view): field = view.ship_field @@ -137,16 +148,54 @@ def update_game_mode(): my_view.ship_field.set_field_mode(ShipMode.INACTIVE) enemy_view.ship_field.set_field_mode(ShipMode.INACTIVE) + lbl_lower_enemy_horizontal.grid_forget() + lbl_lower_horizontal.grid_forget() + + savebutton.grid_forget() + loadbutton.grid_forget() + + hide_view(my_view) + hide_view(enemy_view) + elif game_mode == GameMode.PLAN: my_view.ship_field.set_field_mode(ShipMode.PUT) enemy_view.ship_field.set_field_mode(ShipMode.INACTIVE) + + lbl_lower_enemy_horizontal.grid(column=start_column_enemy_field, row=row_horizontal_separator, columnspan=10) + lbl_lower_horizontal.grid(column=start_column_my_field, row=row_horizontal_separator, columnspan=10) + + savebutton.grid(column=start_column_my_field, row=load_button_row, columnspan=4) + loadbutton.grid(column=start_column_my_field + 6, row=load_button_row, columnspan=4) + + show_view(my_view, start_column_my_field, start_row_my_field) + show_view(enemy_view, start_column_enemy_field, start_row_enemy_field) + elif game_mode == GameMode.BATTLE: my_view.ship_field.set_field_mode(ShipMode.INACTIVE) enemy_view.ship_field.set_field_mode(ShipMode.SHOOT) + + lbl_lower_enemy_horizontal.grid_forget() + lbl_lower_horizontal.grid_forget() + + savebutton.grid_forget() + loadbutton.grid_forget() + + show_view(my_view, start_column_my_field, start_row_my_field) + show_view(enemy_view, start_column_enemy_field, start_row_enemy_field) + elif game_mode == GameMode.END: my_view.ship_field.set_field_mode(ShipMode.INACTIVE) enemy_view.ship_field.set_field_mode(ShipMode.INACTIVE) + lbl_lower_enemy_horizontal.grid_forget() + lbl_lower_horizontal.grid_forget() + + savebutton.grid_forget() + loadbutton.grid_forget() + + hide_view(my_view) + hide_view(enemy_view) + game_mode_stringvar.set(str(game_mode)) @@ -171,8 +220,9 @@ row_horizontal_separator = start_row_my_field + ShipField.field_size load_button_row = start_row_my_field + ShipField.field_size + 1 -my_view = create_view(window, start_column_my_field, start_row_my_field) -enemy_view = create_view(window, start_column_enemy_field, start_row_enemy_field) +my_view = create_view(window) +enemy_view = create_view(window) +active_view = my_view if start_column_my_field > 0: lbl_left_vertical = Label(window, text='', width=5, height=2) @@ -186,22 +236,11 @@ if start_row_my_field > 0: lbl_upper_horizontal.grid(column=start_column_my_field, row=start_row_my_field - 1) lbl_lower_horizontal = Label(window, text='', width=50, height=2, textvariable=my_view.remaining_ship_text) -lbl_lower_horizontal.grid(column=start_column_my_field, row=row_horizontal_separator, columnspan=10) - lbl_lower_enemy_horizontal = Label(window, text='', width=50, height=2, textvariable=enemy_view.remaining_ship_text) -lbl_lower_enemy_horizontal.grid(column=start_column_enemy_field, row=row_horizontal_separator, columnspan=10) + savebutton = Button(window, text='Save', width=20, height=2, command=lambda: savebutton_click(my_view)) -savebutton.grid(column=start_column_my_field, row=load_button_row, columnspan=4) - loadbutton = Button(window, text='Load', width=20, height=2, command=lambda: loadbutton_click(my_view)) -loadbutton.grid(column=start_column_my_field + 6, row=load_button_row, columnspan=4) - -savebutton_enemy = Button(window, text='Save', width=20, height=2, command=lambda: savebutton_click(enemy_view)) -savebutton_enemy.grid(column=start_column_enemy_field, row=load_button_row, columnspan=4) - -loadbutton_enemy = Button(window, text='Load', width=20, height=2, command=lambda: loadbutton_click(enemy_view)) -loadbutton_enemy.grid(column=start_column_enemy_field + 6, row=load_button_row, columnspan=4) lbl_game_mode = Label(window, text='', width=50, height=2, textvariable=game_mode_stringvar) lbl_game_mode.grid(column=start_column_my_field + 6, row=load_button_row + 1, columnspan=10)