From 3db797a56d26c6dee6b92db66a2310753d3e833d Mon Sep 17 00:00:00 2001 From: ehermakov Date: Mon, 26 Feb 2024 07:28:17 +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=B0=D0=B9=D0=BB=20=D1=81=20=D1=82=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HNS/Excercises/ShipCraft/ShipField.py | 55 ++++++++---------- HNS/Excercises/ShipCraft/Test ShipCraft.py | 52 +++++++++++++++-- .../__pycache__/ShipField.cpython-311.pyc | Bin 0 -> 6492 bytes .../__pycache__/main.cpython-311.pyc | Bin 11604 -> 11538 bytes HNS/Excercises/ShipCraft/main.py | 2 +- 5 files changed, 72 insertions(+), 37 deletions(-) create mode 100644 HNS/Excercises/ShipCraft/__pycache__/ShipField.cpython-311.pyc diff --git a/HNS/Excercises/ShipCraft/ShipField.py b/HNS/Excercises/ShipCraft/ShipField.py index 56472b3..59210fd 100644 --- a/HNS/Excercises/ShipCraft/ShipField.py +++ b/HNS/Excercises/ShipCraft/ShipField.py @@ -2,24 +2,22 @@ from main import ShootResult class ShipField: - field = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', - ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '] - - field_size = 10 - field_mode = 0 - ship_size = 4 - ship_direction = 0 - def __init__(self): - pass + self.field = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', + ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '] + + self.field_size = 10 + self.field_mode = 0 + self.ship_size = 4 + self.ship_direction = 0 def set_ship(self, row, col): if row < 0 or row > self.field_size: @@ -56,13 +54,13 @@ class ShipField: return ShootResult.UNDEFINED def check_possible(self, row, col, ship_size, ship_direction): - # Функция должна возвращать True, если можно поставить сюда корабль, - # в противном случае - False + # Функция должна возвращать 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 @@ -78,8 +76,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: @@ -89,10 +87,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: @@ -113,6 +111,3 @@ class ShipField: ship_string += self.field[r * self.field_size + c] + ', ' print(blocked_string[:-2] + ' ' + ship_string[:-2]) print("********************************************************************") - - - \ No newline at end of file diff --git a/HNS/Excercises/ShipCraft/Test ShipCraft.py b/HNS/Excercises/ShipCraft/Test ShipCraft.py index 25b1d31..9e0e1b3 100644 --- a/HNS/Excercises/ShipCraft/Test ShipCraft.py +++ b/HNS/Excercises/ShipCraft/Test ShipCraft.py @@ -1,8 +1,48 @@ -from main import ShootResult from ShipField import ShipField -ship_field = ShipField() -ship_field.set_ship_size(3) -ship_field.set_ship_direction(0) -ship_field.set_ship(1, 1) -ship_field.print_field() \ No newline at end of file + +def verify_value(actual, expected): + if actual == expected: + print("OK") + else: + print("ERROR") + + +my_field = ShipField() + +print("set_ship_size()") +my_field.set_ship_size(1) +verify_value(my_field.set_ship_size, 1) + +my_field.set_ship_size(0) +my_field.set_ship_size(6) +verify_value(my_field.set_ship_size, 1) + +my_field.set_ship_size([]) +my_field.set_ship_size("") +my_field.set_ship_size(None) +my_field.set_ship_size(True) +my_field.set_ship_size(False) +verify_value(my_field.set_ship_size, 1) + +my_field.set_ship_size("2") +verify_value(my_field.set_ship_size, 2) +print() + +print('toggle_field_mode()') +verify_value(my_field.field_mode, 0) + +my_field.toggle_field_mode() +verify_value(my_field.field_mode, 1) + +my_field.toggle_field_mode() +verify_value(my_field.field_mode, 0) +print() + +print("ship_set()") +verify_value(my_field.field[0], " ") + +my_field.set_ship_size(1) +my_field.ship_direction(0) +my_field.set_ship(0, 0) + diff --git a/HNS/Excercises/ShipCraft/__pycache__/ShipField.cpython-311.pyc b/HNS/Excercises/ShipCraft/__pycache__/ShipField.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f5cab3ab5dd79239309bd65fbc2b0a9ea1d0317f GIT binary patch literal 6492 zcmeHLTWk|o8a{J#?2NCuk;EZ45)(rpWx2MrMJY}QtQw%eN=2!x)MLOT*f8U4S+BEX zyIskuBGs)b;YvvBR$b}}9->{Xl!xvrkA0l6M#7p^B&1azc=L*_wCcll|No3VwsD|T z>f7$|_?vS-|2gOX&i|kJ!sTiu5Z2!Ld-QfYA^*TcHSm?l<8g@GCK8dDMRJX~$S{N@ zCy2zpM>HE{6TcL9&TGrG_-wqK^ zsn<_mJ-zU9m-+`Xyl(fa^mz;&kch=CNMOH|sq3&7w@I3jm<6mv6fq5qy-MQ<3zUO0 ziwsP|p<&emCO@TCL;Dnrlx9=V(=xFAYK{BM0%g8@qQ0LrlY;Gr9P3mt$1}%IBJ(Q& zq{MNodN@Mk0U081^(^ygI8|zL)=PtD(N*h&Npmkl539Y9SCf(3QbzWz$#7hl4NXm-oSh0$q8Wmclw;QoVe0iW=ifA1LX)pgo|p;+ zdCEVz8=A;CE4ddy!DU3+nXD5ObmCH;njxSWL9F>TKoj2z^IG3Tv1>x@n%Hdb*W1Tb z=hzd(+pSHyrFhQKu!X6h{mF-aw3+CGBlsx_ohE4^&E5sc?pf-qa140l=g8`Ii34@z zC4Ni!n$5&k@;#4<=vxM5-kNYAACtB{OFonoTxV)1rq5GV20KAb1T_|DC**AahAVO< z8d(Uxy_kqBL?uvhv=?>yN^8=Fek|w%P|zZy`a&=@*ll)lJ)tPEw-=+S?wTq$mK?$6 z4*|flu@k4a&Hy~L3_yXu?=E@{sh&gM^z`SH{PDub{k_`A5v}J%z2`+Z_I;xivXdqM zzytrDqJK|8TAN%`H2+cEf3!@P&e77qNNy>&ROTT5aGO7yd?@zh&KAXfRqU^sn%YR4 zKVqcg>%M1>O~ah@T-HyiNn^6HAz0@`e!rE2^LC7^mO4?xUdu1}wbQxXJa9i3ta*W!(8=fLX z>PXR;nG3katesU~n1QEAalPZK0W)Ui0+#v)@0`ltC>*$dOxyX=`dMw~t9swD2ma}z ze_Hd;=>C~(sI<+WlRrvjQ+cTn`D`J-P$5Td>EC4sO4Lfc9hs!5vepK}OmSQA|M)!s z^jGrmZVruGDhHEvJI#7&<}N7UJxke_L3Pt?ox0his)~Bzc*N2hN5dC_ir-6pU(Qql z*#W%=Il~cC;&5@3V-bUk#go+i4RWT-EBtbPaVcuppu*d5*F%}C^U78AY3Yrze#;vQ z-h?&^e#Za{?CJR6*88_K&!FxZEECQ(zS+~4yYNZxo!+bs_tK`e?|`RB5u953HuFp@ zjqc8dKAz3OuiOIdX(tb9wdR$_U7#y}6C%&M@>P?mbU)ut!OGL!mL2GQ)_tL=toWC( z+LUeR2?bes0$$XHK%82MeUPDGjjA1JvzE`gey93sd}=Pm#Z@K&(8uw9aP0kKn%Jj{ zeR-xR4yoc${=ygG&%)a1A$|1F`cQH7s5*MIG`uqt(wze;eaajOybQVK8d`b=U0Q31 zULdUDR?dZkew%`FGtfI0u0=J2>Z5!Rl0imx!b|o5n4c0%)8|VjE?-`ZhRyF1_$?yk zug$orFoMlT0dT^e)nmE&qBx+619){0t)9-n?_n+4JSjZgsA9-4)!U@rDgd$SJf$WZ z^5HUA7oZ>8XiI*e)fu=rqZT5Yx-K39fKB%0kA?geO=ibxsf{)ns1lx z+f^nu$4U4mg_xNvZ6C^7?bhJE_7@LAsyNcD=H}XuBr$ zf!8+9YXc`W@5!u~6*rx}?B0BPemLK*w~ZE@THArOUvKQ+cx_|9e)xpec0zN`=*}6H zKAU!z>OQa8FX;9QYW1P?nhiSfYg~N(S~MIsTEk)B@DdO@Y&gT=8%y(xW{KPeOCfJZ z2q56?%-ody7(0Z3-mQEL;7dZgrfV(Z(o;YkSMmTW*00QZ1TZHS4EqFdBPs2%U_$1#bqSD zIhErW!*3gOdf(Y!HW%zwc?$B7xyoAr;CVAliS((BPuX^jVQ}Q9zy4{K{p%T3=8e literal 0 HcmV?d00001 diff --git a/HNS/Excercises/ShipCraft/__pycache__/main.cpython-311.pyc b/HNS/Excercises/ShipCraft/__pycache__/main.cpython-311.pyc index 0e342ecbb505739bf56eba04a8d2890f53c1009c..7330efbed4acfd664180ca641464142e1f88d67a 100644 GIT binary patch delta 280 zcmcZ-H7SaBIWI340}vc8znwaHBCjN4+eY3CafLIeGlERS6 zx{Qf|VKop#fD1#cMU+;m22fTTh^15cQ`J+oCTlSp^J}DPf_bb}tPBi5u^eVePR$-m zpen^wjmdq?;*6S;*RiNgKEo`@h_FisXqPTtyL6y-Ng?bK(n-}twyTPPVX{AqI0w`= w9k6Y>o7b@zC^PC!zOR0J@)3=E?slLT7=gI>Kl5fg%@ii44_uqKXfI#{00>M$Q2+n{ delta 326 zcmbOfbtQ^-IWI340}#x)eYnOIU~7pP56WE7sv&%@8g$iT#qsy=xi zv$&~7id2*)5Nm-%QW#QMmoYIgtOjBTaAAnGh|*5g1j_0Fv2-ebsz$2zWG)tCA