def reset_player_field(): global field field = seacombat_logic.get_blank_field() field_coords = seacombat_draw.get_rectangle_coords('player_field') seacombat_draw.redraw_field(field_coords[0], field_coords[1], field, 'player_field', True) draw_list_of_ships(field) canvas.tag_unbind('player_field', '<Button-1>')
def redraw_player_field(): field_coords = seacombat_draw.get_rectangle_coords('player_field') seacombat_draw.delete_element('message') seacombat_draw.redraw_field(field_coords[0], field_coords[1], field, 'player_field', show_placement=True)
def reset_ai_field(): global field2 field2 = seacombat_logic.reset_field_state(field2) field_coords = seacombat_draw.get_rectangle_coords('ai_field') seacombat_draw.redraw_field(field_coords[0], field_coords[1], field2, 'ai_field', True) canvas.tag_bind('ai_field', '<Button-1>', shot_at_right_field) checkbox.invoke() checkbox.invoke()
def redraw_enemy_field(): field_coords = seacombat_draw.get_rectangle_coords('ai_field') seacombat_draw.delete_element('message') seacombat_draw.redraw_field( field_coords[0], field_coords[1], field2, 'ai_field', show_placement=seacombat_draw.get_checkbox_state())
def ai_shot_at_field(field, field_tag): reset_ai_field() shot_count = 0 list = [] while (seacombat_logic.are_all_ships_dead(field) != True): x, y = seacombat_logic.get_next_shot() if (x, y) in list: continue list.append((x, y)) shot_count += 1 seacombat_logic.result_of_shooting(x, y, field) field_coords = seacombat_draw.get_rectangle_coords(field_tag) seacombat_draw.redraw_field(field_coords[0], field_coords[1], field, field_tag, True) root.update_idletasks() # time.sleep(0.01) print(str(shot_count))
def place_ship(event): ship = get_ship_tuple_by_coords(event) if seacombat_logic.can_place_ship(row=ship[0], column=ship[1], direction=ship[2], size=ship[3], field=field): field[ship[3]].append( seacombat_logic.get_ship(ship[0], ship[1], ship[2], ship[3])) delete_ship(event) field_coords = seacombat_draw.get_rectangle_coords('player_field') seacombat_draw.redraw_field(field_coords[0], field_coords[1], field, 'player_field', True) draw_list_of_ships(field) if seacombat_logic.is_ships_placement_legal(field): canvas.tag_bind('player_field', '<Button-1>', shot_at_left_field) else: canvas.tag_unbind('player_field', '<Button-1>')
def shot_at_field(event, field, field_tag, show_placement): target_cell = find_array_indexes(event.x, event.y, field_tag) if target_cell[0] > 10 or target_cell[1] > 10 or target_cell[0] <= 0 or \ target_cell[1] <= 0: return if len(seacombat_draw.get_rectangle_coords('new_ship')) != 0: return result = seacombat_logic.result_of_shooting(target_cell[0], target_cell[1], field) field_coords = seacombat_draw.get_rectangle_coords(field_tag) seacombat_draw.redraw_field(field_coords[0], field_coords[1], field, field_tag, show_placement) if seacombat_logic.are_all_ships_dead(field): canvas.tag_unbind(field_tag, '<Button-1>') canvas.create_text(25 * cell_side, cell_side / 2, text="All ships are dead", fill='red', tags='message')