загружаю фичи с кнопками

This commit is contained in:
ehermakov 2024-06-23 20:29:23 +03:00
parent d37cd7b41c
commit 1b6b143423
1 changed files with 55 additions and 16 deletions

View File

@ -11,14 +11,13 @@ from GameMode import GameMode
active_view = {} active_view = {}
def create_view(window, col_offset=0, row_offset=0): def create_view(window):
field = ShipField() field = ShipField()
buttons = [] buttons = []
view = ShipView(field, buttons) view = ShipView(field, buttons)
for r in range(0, field.field_size): for r in range(0, field.field_size):
for c in range(0, field.field_size): for c in range(0, field.field_size):
btn = Button(window, text='', width=5, height=2) btn = Button(window, text='', width=5, height=2)
btn.grid(column=c + col_offset, row=r + row_offset)
btn.bind('<Button-1>', lambda e, x=r, y=c: left_button_click(view, x, y)) btn.bind('<Button-1>', lambda e, x=r, y=c: left_button_click(view, x, y))
btn.bind('<Button-3>', lambda e: right_button_click(view)) btn.bind('<Button-3>', lambda e: right_button_click(view))
btn.bind('<Enter>', lambda e, x=r, y=c: button_enter(view, x, y)) btn.bind('<Enter>', 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) colorize(view)
return 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): def colorize(view):
field = view.ship_field field = view.ship_field
@ -137,16 +148,54 @@ def update_game_mode():
my_view.ship_field.set_field_mode(ShipMode.INACTIVE) my_view.ship_field.set_field_mode(ShipMode.INACTIVE)
enemy_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: elif game_mode == GameMode.PLAN:
my_view.ship_field.set_field_mode(ShipMode.PUT) my_view.ship_field.set_field_mode(ShipMode.PUT)
enemy_view.ship_field.set_field_mode(ShipMode.INACTIVE) 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: elif game_mode == GameMode.BATTLE:
my_view.ship_field.set_field_mode(ShipMode.INACTIVE) my_view.ship_field.set_field_mode(ShipMode.INACTIVE)
enemy_view.ship_field.set_field_mode(ShipMode.SHOOT) 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: elif game_mode == GameMode.END:
my_view.ship_field.set_field_mode(ShipMode.INACTIVE) my_view.ship_field.set_field_mode(ShipMode.INACTIVE)
enemy_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)) 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 load_button_row = start_row_my_field + ShipField.field_size + 1
my_view = create_view(window, start_column_my_field, start_row_my_field) my_view = create_view(window)
enemy_view = create_view(window, start_column_enemy_field, start_row_enemy_field) enemy_view = create_view(window)
active_view = my_view
if start_column_my_field > 0: if start_column_my_field > 0:
lbl_left_vertical = Label(window, text='', width=5, height=2) 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_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 = 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 = 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 = 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 = 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 = 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) lbl_game_mode.grid(column=start_column_my_field + 6, row=load_button_row + 1, columnspan=10)