From b8968208bd119fe1fb8eb4e2a91c4e0bb56fb007 Mon Sep 17 00:00:00 2001 From: ehermakov Date: Fri, 5 Jul 2024 00:13:56 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BA=D0=BE=D0=B4,=D0=BD=D0=BE=20=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D1=8C=20=D0=B1=D0=B0=D0=B3=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ShipCraft/Переделка/.idea/workspace.xml | 3 +-- .../ShipCraft/Переделка/ShipField.py | 3 +++ .../__pycache__/ShipField.cpython-311.pyc | Bin 14654 -> 14815 bytes HNS/Excercises/ShipCraft/Переделка/main.py | 24 ++++++++++++------ 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/HNS/Excercises/ShipCraft/Переделка/.idea/workspace.xml b/HNS/Excercises/ShipCraft/Переделка/.idea/workspace.xml index 084bbb2..112d8aa 100644 --- a/HNS/Excercises/ShipCraft/Переделка/.idea/workspace.xml +++ b/HNS/Excercises/ShipCraft/Переделка/.idea/workspace.xml @@ -5,7 +5,6 @@ - @@ -187,7 +186,7 @@ file://$PROJECT_DIR$/main.py - 147 + 155 diff --git a/HNS/Excercises/ShipCraft/Переделка/ShipField.py b/HNS/Excercises/ShipCraft/Переделка/ShipField.py index 9ef9241..e356a59 100644 --- a/HNS/Excercises/ShipCraft/Переделка/ShipField.py +++ b/HNS/Excercises/ShipCraft/Переделка/ShipField.py @@ -186,6 +186,9 @@ class ShipField: # в противном случае фолс return self.field[row * ShipField.field_size + col].strip() == "1" + def check_end(self): + return "1" not in self.field + def check_possible(self, row, col): # Функция должна возвращать True, если можно поставить сюда корабль, # в противном случае - False diff --git a/HNS/Excercises/ShipCraft/Переделка/__pycache__/ShipField.cpython-311.pyc b/HNS/Excercises/ShipCraft/Переделка/__pycache__/ShipField.cpython-311.pyc index a7bfd384ab7ff4c24f2ac4bc9523ba25ec431a76..03935f7ccbb6ada049b51edab4906a9c3c93f234 100644 GIT binary patch delta 563 zcmdm2bibH)IWI340}!b4wx`{g$h(siwfh)$um`_OipDK%@G00PG?AAtYOH4s$^g&V+>{}3I%dC8H@OVRFN2v zC}so_3Pln?@)l=uMrv|)d}>}wm2hxIW`SE~YEFtCTyQT)IY?sz!wr6+87gzMF7T^d z;82;oPegjNlNvh{GCi##!X(VXT7FDJq=IZ7#>?KUvFs3qK>P>IVim!8ZAx z`5fb1kUnM*!2%+{?qdhB%0Pq^hyaD~FAkgB{FKt1RJ)?`$!jfw?0s1nr9LoVCqIJ4 Kzu=Gs8wvo))s7(m delta 381 zcmca#yswCNIWI340}!zEwWdv*$h(=bZ{opnnN-mf;TDEvK=IWeNic{KOA!fX&=lPq z#pt5Ks5yDQ>XgZ0yrP@WtFbdN?%jM{<0KPf*yM%UGK`lt@6&c;V!I2}R$MuGwV~u@ zWj!87#^}ig`bKQeL85LT(aDYaCm7=iXXKf@%q*Evd@`4LjFApl4T$go z5#Aso0YoH$2v;C+i>J6Gu_QA&H?<@qKcy&d@?3K{Mu*9J%(qOgx0u72HCe_|LaG>~ sS_(u+0Eu55Ho5sJr8%i~MJ1E{EQ9R5SQw=~FkmM?g2lh!kOdnG07$ZA$p8QV diff --git a/HNS/Excercises/ShipCraft/Переделка/main.py b/HNS/Excercises/ShipCraft/Переделка/main.py index 75a19e6..bb835ab 100644 --- a/HNS/Excercises/ShipCraft/Переделка/main.py +++ b/HNS/Excercises/ShipCraft/Переделка/main.py @@ -10,7 +10,6 @@ from ShipField import ShipField from GameMode import GameMode from ShootResult import ShootResult -active_view = {} def create_view(window, enemy): @@ -65,22 +64,31 @@ def colorize(view): def keypress_handler(e): if e.keysym.isnumeric(): if my_view.active: - my_view.ship_field.set_ship_size(e.keysym) + my_view.ship_field.set_ship_size(int(e.keysym)) elif enemy_view.active: - enemy_view.ship_field.set_ship_size(e.keysym) + enemy_view.ship_field.set_ship_size(int(e.keysym)) def left_button_click(view, row, col): - if view.ship_field.action(row, col) and view_enemy and game_mode == GameMode.Battle: - enemy_shoot_result = ShootResult.UNDEFINED - while enemy_shoot_result != ShootResult.EMPTY: + action_result = view.ship_field.action(row, col) + + if action_result and view_enemy and game_mode == GameMode.Battle: + enemy_shoot_result = ShootResult.UNDEFINED + # Ход соперника + while enemy_shoot_result != ShootResult.EMPTY: my_row = random.randint(0, ShipField.field_size) my_col = random.randint(0, ShipField.field_size - 1) - enemy_shoot_result= my_view.ship_field.shoot(my_row, my_col) - + enemy_shoot_result = my_view.ship_field.shoot(my_row, my_col) + if game_mode == GameMode.BATTLE and my_view.ship_field.check_end(): + next_game_mode() + return + colorize(my_view) + if game_mode == GameMode.BATTLE and view.ship_field.check_end(): + next_game_mode() + return colorize(view)