Esempio n. 1
0
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>')
Esempio n. 2
0
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)
Esempio n. 3
0
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()
Esempio n. 4
0
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())
Esempio n. 5
0
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))
Esempio n. 6
0
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>')
Esempio n. 7
0
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')