From d42048e178622aa7640f5724cc8156684afaab67 Mon Sep 17 00:00:00 2001 From: danii Date: Mon, 20 Nov 2023 19:05:48 +0100 Subject: [PATCH] New Version --- HNC/Exercises/Ship_Battle/main.py | 42 ++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/HNC/Exercises/Ship_Battle/main.py b/HNC/Exercises/Ship_Battle/main.py index fb339d6..f01f2cb 100644 --- a/HNC/Exercises/Ship_Battle/main.py +++ b/HNC/Exercises/Ship_Battle/main.py @@ -32,13 +32,13 @@ def set_ship(row, col, size, direction): return if col < 0 or col > field_size - 1: return - index = row * field_size *col + index = row * field_size + col if direction == 0: if field_size - row < size: return for r in range(row, row + size): index = r * field_size + col - my_field[index] = '1' + my_field[index] = "1" if direction == 1: if field_size - col < size: return @@ -49,41 +49,52 @@ def set_ship(row, col, size, direction): def shoot(field, row, col): if row < 0 or row > field_size - 1: - return + return ShootResult.Undefined + if col < 0 or col > field_size - 1: - return - index = row * field_size *col - if field[index] == "": - field[index] = 0 + return ShootResult.Undefined + + index = row * field_size + col + if (field[index]).strip() == "": + field[index] = "0" return ShootResult.Empty elif field[index] == "1": field[index] = "\\" return ShootResult.Damaged elif field[index] == "1" or field[index] == "\\" or field[index] == "X": - return ShootResult.Damaged + return ShootResult.Undefined + else: + return ShootResult.Undefined + def draw_field(window, field): for r in range(0, field_size): for c in range(0, field_size): + index = r * field_size + c bg = 'white' - index = r * field_size +c if field[index] == '1': bg = 'pink' - btn = Button(window, text="", bg=bg, width=5, height=2) + btn = Button(window, text='', bg=bg, width=5, height=2) btn.grid(column=c, row=r) + btn.bind('', lambda e, x=r, y=c: button_click(field, x, y)) buttons.append(btn) def colorize(field, buttons): - bg = "grey" for i in range(len(field)): - if i == '1': + bg = "white" + if field[i] == '1': bg = 'pink' - elif i == '\\': + if field[i] == '\\': bg = 'red' - elif i == '0': + if field[i] == '0': bg = 'black' - buttons.configure(bg=bg) + buttons[i].configure(bg=bg) + + +def button_click(field, row, col): + shoot(field, row, col) + colorize(field, buttons) window = Tk() @@ -95,5 +106,6 @@ set_ship(0, 6, 3, 0) set_ship(7, 3, 1, 0) draw_field(window, my_field) +colorize(my_field, buttons) window.mainloop() \ No newline at end of file