From 2342bea1941f0d448808138dc1b6bbc2308e93a4 Mon Sep 17 00:00:00 2001 From: ehermakov Date: Mon, 26 Feb 2024 21:03:28 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B6=D0=B0?= =?UTF-8?q?=D1=8E=20=D1=84=D0=B8=D1=87=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HNS/Excercises/ShipCraft/ShipField.py | 39 +++++++++++++----- .../__pycache__/ShipField.cpython-311.pyc | Bin 6492 -> 7571 bytes .../__pycache__/main.cpython-311.pyc | Bin 11538 -> 11198 bytes HNS/Excercises/ShipCraft/main.py | 23 ++++------- 4 files changed, 36 insertions(+), 26 deletions(-) diff --git a/HNS/Excercises/ShipCraft/ShipField.py b/HNS/Excercises/ShipCraft/ShipField.py index 59210fd..adfbfa5 100644 --- a/HNS/Excercises/ShipCraft/ShipField.py +++ b/HNS/Excercises/ShipCraft/ShipField.py @@ -19,6 +19,23 @@ class ShipField: self.ship_size = 4 self.ship_direction = 0 + def action(self, row, col): + if self.field_mode == 0: + if self.check_possible(row, col): + self.set_ship(row, col) + + elif self.field_mode == 1: + self.shoot(row, col) + + def target(self, row, col): + if self.field_mode == 0: + self.clear_marker() + + def clear_marker(self): + for i in range(0, len(self.field)): + if self.field[i] == "p": + self.field[i] = "" + def set_ship(self, row, col): if row < 0 or row > self.field_size: return @@ -53,14 +70,14 @@ class ShipField: else: return ShootResult.UNDEFINED - def check_possible(self, row, col, ship_size, ship_direction): - # Функция должна возвращать True, если можно поставить сюда корабль, - # в противном случае - False + def check_possible(self, row, col, ship_direction): + # Функция должна возвращать True, если можно поставить сюда корабль, + # в противном случае - False if self.ship_direction == 0: - # Здесь мы знаем, что корабль помещается на поле. + # Здесь мы знаем, что корабль помещается на поле. if self.field_size - row >= self.ship_size: - # Теперь нужно проверить, не заблокировано ли какое-то из полей, + # Теперь нужно проверить, не заблокировано ли какое-то из полей, for r in range(row, row + self.ship_size): if not self.check_blocked(self, r, col): return False @@ -76,8 +93,8 @@ class ShipField: return False def check_blocked(self, row, col): - # Функция возвращает True, если все клетки вокруг клетки с координатами row, col - # либо находятся за пределами поля, либо в них нет корабля/они пустые + # Функция возвращает True, если все клетки вокруг клетки с координатами row, col + # либо находятся за пределами поля, либо в них нет корабля/они пустые for r in range(row - 1, row + 2): for c in range(col - 1, col + 2): if 0 <= r < self.field_size and 0 <= c < self.field_size: @@ -87,10 +104,10 @@ class ShipField: return True def set_ship_size(self, value): - if value.isnumeric(): - number = int(value) - if 1 <= number <= 4: - self.ship_size = number + if value.isnumeric(): + number = int(value) + if 1 <= number <= 4: + self.ship_size = number def set_ship_direction(self, value): if value.isnumeric() == 0 or value.isnumeric() == 1: diff --git a/HNS/Excercises/ShipCraft/__pycache__/ShipField.cpython-311.pyc b/HNS/Excercises/ShipCraft/__pycache__/ShipField.cpython-311.pyc index f5cab3ab5dd79239309bd65fbc2b0a9ea1d0317f..f0c1669612076e6ea29d7215bde9cf097b51435e 100644 GIT binary patch delta 1856 zcmaJ>O=ufO6yDigskU}kD_cKS96S1JvE_u?u0x>Bk1I+{V?r(tIhcZ~td>}|V%f6_ z1);=-{t$v8b|w%N67Z#NL!hPjR(i_C6cUhxXvC7xTyrVgriao~-`kZGJ0=Vu;bqE6~)6r`SG`>`sv_?w@5B*e0e(b6*ntqB|s%B1A4Q{443r&{OF;O z6d_uG`tl*b9j?sHL+g|*S>Ulp$I9F$VYRM6xJ=6Y78oDc4%-<9Cy&l!`<;Z#ax-?_ zGcVto7l#TsbmeVB?+fQBF86`}BtnWIBy(6s2?)W1h(uCL_dY@8xAJa zI+*y%E2fjYLsyb_n3A=;o}uZ>8M>fT+K=1YOGPn5FX_cL7085RIfS930IxG4`<}>y zb$PHRM;daZik}}FNFFvJMV#cxEpK4_8$0(Ro?NSBNfDQC6_7IRh7O zX@W+eUkZUB=0Fih!*1f@;54QIR=H6UkbmJPZFB& zFzFb;{$)EWnxdxX^ZV94%6?J@NP7E``Zp=e!xTmu0F~~$IeBBUCJi*C0gDs5ho1$* zmEgwg?b+*7P1UzPRaGPK)op~w!EPO!gU#3w9JY5Ie%3oM-k#*S9p+pN9&a^E^_Kf- z5Oe40htSwWwUkMZvp;%MWQoQ6-;p5O@lTWDc5h&ZkOVV>nc)rtreG8)J&MDT3)8hk zbBo2K%hAsW(?T(Fn0*~OMoR40&L?^K~iI76T*XKTG zXKp{8)P+_A5vuVRV72qJc-0lPxDLeKu9(Gjz{jKafQ<-Uf(!0U2Rv*%d`besM3)1s w6rSxri|gTYXfOX?*NMx8?3KKJik@SChTl7LjgSk(;@;f+<@o-2ONc%F|2lKBmH+?% delta 915 zcmaKqO=uHA6vub6o1`S&Y?{P;Y<8Q}66vB?wX}$W8f*)CXoaev2SdAEOlVBPY^0D& z0^YosGJ+L6)PojpmK?nI;>AN1m9VX~cq@2_s8{j5-F_+POZd&3H#2Yk@9nU&8>a%x zqUhtmUe2!@kHQOqDj8k4HzrJRntx?;m2W-oS|dZ-1a@d{>W6^_5F)^G)9KP}gW`G3 zLxULNX?fn_^>UFd`_z=xWg69-nJ-jop()^a!6?oi-;G6Eo4)TZuf!>a9(E0Hzm!O28a30VheNY?_6cqEUES}LX6tkK3#s40aLx|5rO1Q&{rX!e{a#9UI9@#VDWNQ0 zdn`YZo1S(!vglb0_rw34&80qPbYc$MnWN3ohZ9Zsb-ZxiPO@chr(w85cL8<{eV$#2 zHV(hwCn(Nn6rj22Ao}>cz{l4_Pckc-B{`0M$-&eSyh1}@1L+WA1c9H7o@c+3 yy<~~0N-xVR=loEV;C8@Pl$+!t>sI4rjAhi!r8|UNCmrtJ!#8K`$A7lijrt8Er{mKA diff --git a/HNS/Excercises/ShipCraft/__pycache__/main.cpython-311.pyc b/HNS/Excercises/ShipCraft/__pycache__/main.cpython-311.pyc index 7330efbed4acfd664180ca641464142e1f88d67a..00f378d3161355df0c0a73dc758ce6e4a7c17f56 100644 GIT binary patch delta 436 zcmbOfwJ)4+IWI340}w1fb0@V!btB&b8Kz&1lQ+n`602da;aJARz_1#KA%KygL~?S2 zoHBn_4QmQxHdwq!twehACOLIZ&J^Yvh8oTinaPjj)ET8GbIGf#a)HH|N@QRrFfdfH zGBDI|RRINTfVfAvM0|3Xyt*)pUlGW-A~6u*4J0)ACr_0R6LkdflR$(7h!6+Ka8G7c zaNv^%@fCnXF*lHy9H}7Bs57}zA+w%^rz3iX?nM@jD=ZopSTw$}F>r`YNSzV9KzTvt z2Dyvu4p-P6J}_{yD&F9hoDq15TkZn4++9(r8O95k7i2EvzbI;OMbzK}10$~yn3%wL zL(gym>x9I)S`+gY6kin6x+tK1K|uQf4&Cb5wI|Q@x+tc$LJ+Qh@_$8fPGO)kz;4+r jqtwsH_-6AO@576j6gX!5w+P~>oOAn*RFE+ delta 740 zcmdlNJ}HWCIWI340}vc8znwZ+Z6n_T8KzTAlQ+n`l1^bPkp#&=Kn?pcMh1q}Knw(v zKX8a>3fFShu-9-R)TA(HGl67_SW{R)GB!YVk4TC17r2~B~?2js$}BtU#W z5a9?Sl0XE=Z<;)lwdEZ|0ziCu5TO7hig|#9!sJSMdBz2kXUb>R^9oHcoSHmC`=XfI z6*0Aoyy{nY)ju#Wu_}Ox4#peYViO8`>}CXC;#Ro8t#CtDzQcP4W2fJbrz|`j(KB=} zvS?gk(YU~(@qk@$LSR#UL;YPrppLo9Gg4=2&C$9jsCq?E6=)Wx9GK{EyumLrA+V=n zhH+PYNBxa@Y1s*^6A~wK{CLVOIYV`U@PgzOnj7LSa=TpNcKN`-&S`doUv`1uC4Qv~ z{7QEv