From a5697c9e7d7618fc2e0d9696909277ea77cf204c Mon Sep 17 00:00:00 2001 From: Francesco Camilletti Date: Fri, 20 Nov 2020 20:11:17 +0100 Subject: [PATCH] Add files via upload --- core/Characters/__init__.py | 30 +++++++++-- .../__pycache__/__init__.cpython-38.pyc | Bin 7111 -> 7677 bytes core/Errors/__init__.py | 13 ++++- .../__pycache__/__init__.cpython-38.pyc | Bin 2543 -> 3095 bytes main.py | 47 ++++++++++++++++-- 5 files changed, 79 insertions(+), 11 deletions(-) diff --git a/core/Characters/__init__.py b/core/Characters/__init__.py index 81a2070..649a931 100644 --- a/core/Characters/__init__.py +++ b/core/Characters/__init__.py @@ -12,10 +12,11 @@ class Player(): def __init__(self, col, rows, engine): self.id=random.randint(10,100) - self.pos=[random.randint(0,5),random.randint(0,4)] + self.pos=[random.randint(0,4),random.randint(0,3)] self.Engine=engine self.selected=None self.img='P' + self.action_range=1 # it means center+1, so 3*3 grid def move(self, pos): newx=int(pos.split(',')[0]); x=self.pos[0] @@ -41,22 +42,41 @@ def move(self, pos): if not bot.id==self.id: print(css.FAIL+'[ERR]'+css.ENDC+' ID:',bot.id,'already in',newx,',',newy,'!') return - self.pos=[newx, newy] + if newx<=self.pos[0]+self.action_range and newx>=self.pos[0]-self.action_range: + if newy<=self.pos[1]+self.action_range and newy>=self.pos[1]-self.action_range: + self.pos=[newx, newy] + else: + print(errs.ActionRangeError(pos=[newx,newy])); return + else: + print(errs.ActionRangeError(pos=[newx,newy])); return else: if skip=='y': for bot in self.Engine.robots: if bot.pos==[newx, y]: if not bot.id==self.id: print(css.FAIL+'[ERR]'+css.ENDC+' ID:',bot.id,'already in',newx,',',newy,'!') - return - self.pos=[newx, y] + return + # newpos=[newx, y] + if newx<=self.pos[0]+self.action_range and newx>=self.pos[0]-self.action_range: + if y<=self.pos[1]+self.action_range and y>=self.pos[1]-self.action_range: + self.pos=[newx, y] + else: + print(errs.ActionRangeError(pos=[newx, y])); return + else: + print(errs.ActionRangeError(pos=[newx, y])); return else: for bot in self.Engine.robots: if bot.pos==[x, newy]: if not bot.id==self.id: print(css.FAIL+'[ERR]'+css.ENDC+' ID:',bot.id,'already in',newx,',',newy,'!') return - self.pos=[x, newy] + if x<=self.pos[0]+self.action_range and x>=self.pos[0]-self.action_range: + if newy<=self.pos[1]+self.action_range and newy>=self.pos[1]-self.action_range: + self.pos=[x, newy] + else: + print(errs.ActionRangeError(pos=[x,newy])); return + else: + print(errs.ActionRangeError(pos=[x,newy])); return class Kernel(): def __init__(self): diff --git a/core/Characters/__pycache__/__init__.cpython-38.pyc b/core/Characters/__pycache__/__init__.cpython-38.pyc index 6fbef1e76afa02af55f99f07e525af7eae63312c..2ac3631add0ac28385be4e73615041fdfb2b0ce7 100644 GIT binary patch delta 3410 zcmaJ@YiwLc6~1#{d-vg8+p)b~J26fj+gZo2I8EKW+}QD^X>6RtX~+ZUvfjB#_u;$i zxi_s7UDs)C75_n6H2gv$tPw(LiBKsB@dJrgLV$#X#J}oR6bbPofhgifkq{CR=givc zT_@Dmo_pq;GvAqWX6Bsv-S~e`gs(I-1SI%tZTV&L`~5!+j}S7=C&whM z5ef6KbmjgRDDRhu^|`B4e@-sRY$vL}SEJG}Dp*=gToC`m{}-A3%*arRNs(!7WHOtr zmx{RE9Q9iu25Zc!cH3 z+17w(1`v-dZ^^`v`T5&w&njUNG;Z*ejOBQmUCd`3A!3aVH&n}fbD8ahv0(48eQ`0> z&Si?80*+V|Z3Sr;n#IB!W-D;E#Sd!z=XDZ-TNfgIL??srACg-n1AZYn0MbU#fkv*^ zRONLu_-*az^D*=`P<2`FoMGnhqT5&=3}P5U^6kHL@PBKoB*>TbUk#(4H2{gro;*D2 zk>u_W0w?ns+esG|ixXG*g6|aRIHdH!dD{L0IL? zJ2ra>*b27bFg*;{KhIZ;{$q!5IEZ9uTT!!+9q3`uUV@)312G62=6^PBlXa+&hxl9m z=Ch89H7aRP9jM<4l!H!)`qoIfVN=>9)WGtS45JnGM!m+etYl!)1GV&SaLE z7Y8%0RFZ~=RLrc2wwjt7ptKRTQmUJY!9NZhAs_I61=fQDu1o`>fSu**!4dK<|9S9I zP|Y@ONXb^GtsLb>Xq-Icr$han?VA!5^qVW{2Gr?n&{bm+jplSHejo97LYHE0Nwt0h zcpV^<*;~RY0$c}w96A+`!MG#aS>C$=DI^kN(=Oytu1eW`R34XPDY=i&H}nQ4ssVaLnIDW#|$LYvYd_I#<8sDr-0z+mOoLw6DD1RW=DCTL$e%^yG6T z#j;>!2O(00EqqhDNobrJ>xS^sGc9310Gsn*GXORkn{~EO?R&0LK0t$r=PHyy%t3+j z`Q1@Rfvpeocf+l#y^aA|sEli1v8E8|s$`9-lGB$9fX64;ZHOfN4p#m4mPJO<_jSpV zuSq3+>A{wdA@HHH-)E#1%~c@lvn#r*m-}h^CMl_QS4mw8-0gO?@Z$OKNYBW% zEfmnX8XbyBPP{xIBJ726Feb$y^W{UElED6u=OaC2ke4Du{vmoeD$%j*ApdP-X#9&} z(b(CVSdP@j!Uq~VgC)q|QIWwP@QaP{o?*Bi@$!i4t9Zt%g4wYigWZe5?g`lS@LxCT zGZou`r)^X(sI?liN@vS5wo(okgG@@*lTk&b?izdt$&zG?gsN+n0a|Vk=TvKQi!`#XRB-a zm}lCC5;sA6R~vH7W#?|BJ7J{@)TG@wJl@T2p)%4vZPrQ6%9KU0WG4~)6#ulXV|9#m z!@$$>g*Q#+skD%`YePMkn4C_`S3(sO+n?>?vBy&i_Jy1p8 z@s!1s1v{5=QfvWryYO-#`;6c3=vqwx7x%Ge_2+vy5j`_BuYuTU*VCZD71{WJGe{t0 z+%^=3(s)y)r!E06ax9kY1=9s)4vPa}dwPPw`;FPGk56`v4Ty`R+NMdxLq;@Jf%TMY M{=LqAB@s6M2NsM8_5c6? delta 2850 zcmaJ@U2I%O6~1%-_U?~&?QI-q{Z~77yuOYdJ4q8aPO?oLFL9k{kHMFh2ihl&RT66egu z8^=M|x@XVKcg{Cw&di*d{~Z6#bo5eNTS$Vxpa1y7?7s(p7M&y{#Zx3TEWIF^fy@I0 zA5ajCpr)ZvLHK0R4DffzLH;+=Pda%}elaMBNR)K*qC6%4p76W!>!Z#Wo>Wwd>YQ|C z;a0#46lG8L)N67{W_O{b0jiZ`=Tp9@jn7`c+XOu+E8BncbQ&zlb;4+iVzEV`Aq8Oi zBa%9CGDtI1C)af#0uw>>q`T6L0Nl%uxxbI@bKqX~gbBJ+%tSQvFEZXt0p`J!h0YAn zSx}^7b*m4X4-~$r4-JNVrC__h=G4jsmqpPyhQ>Opu2fxzwecV7J@cl);s_zWtlHL% zRo1qxABf$R=_z_9)?-{>15Jo2iP1%=0mQ_&{iJ_^_}lSvMVa0@NnA z&~VBO<4*C{L&;;K*fdd$Z2{W?c|^S*(39{vG6;jP{rrp2H;D)Pd_VtwIG&<9EVSVU z8zDDL0~@3f*_1X3H4+l^x4CLjqrol-e)TTwiMp{3{B8FL$PWH_xJz&D1Rjdam~qz1 z4{O7?#KP}IZ3x9MiVhImjSMc$fdV_k&AArCIDNfjG21GOonk7@Ea9#ZF59Np%Egxe zblO2kc=kw~KZqPAZ}Gmi+u^;QOhe+Br1($UCds$>pW7}fosHf6+2}O+l-Huko~}&^ z&gRuy>K&;VDuz8ZA2IW58232{PLTO(J`Cu&&rPL^cXDRM_%&q^pFQ)VOVkQTEPB z8(NBIZso$JG{0jQh+CioO0 zU6$-ARdV;0LNMZeBH_Oncf2+3a6@Di$9_q&<*!I}{rbI!V@$vpD*Lz~-O@Y-vVQ)S z?&*yYx@VKrRcCiyy)Lf}cv>Ur=}>?azR)o=x%iL;Fi)cs3CSI8m|}**&<-c01Z2K3 zwkZkjpYXdKL$Iws?wAOU(}P_SJyhJ!|JgAy{r~2ovDCJ?9Ns<`z8vof-+>Gs5gGge z|90FQnt;v2A6o>@WUw_ZuRS$+9CES6ydgsby}+7626oR?=ySLVRP4p#WOhoF z@>7{+?M`t2sg-?$aBQG*i^8PjD|F`p!>aT$&+WQR#`*nSU)B@QW|{X+br#4W^kwHk z_(nEM3wbx2-J&9;ZKX?`R3!Q?|I_Zm{4!{!&V)Bs1z*2#?#xT4GtI()d<-k#+gnjV zA^cxtZ}8W;emDE_PO`v-b7z;*>78us3i3WGr>&UY;cxDlNUs38rcJoks=F2&NZa`; zwdepgX9idv!Pvl@^;mDN=~4kpb_~g9csS9$evmy44PPr)Z&=J%X*KU`pXz-2^jvzW zIaN{m6vt)0R@cjLzEZYqU!Q&98&xIw@|g&ivY4`P#lq@b;%E|9DRn0T(KG9ceTnY zId?g5`Seoe`OMj6Snt{Mm(uL0Kq2~@Fk39(TQ32;{@H~lnq#?&!;V8^Ia0w0Xsy|m zMVvT0ZpWyv1MXPtBEZfs`TN~T{+I60`^5`G@b0+h9kBZ~|7*|Y`X$gzjh%%bHjmhkP^Sq ecW6wUHPx{!DjqlDwiRwqjKcrWmsAc$jsF64m5b2; diff --git a/core/Errors/__init__.py b/core/Errors/__init__.py index deb079f..61066e1 100644 --- a/core/Errors/__init__.py +++ b/core/Errors/__init__.py @@ -30,4 +30,15 @@ def __str__(self): class HackError(Exception): def __init__(self, txt='', *args, **kwargs): - print('\033[91m[ERR]\033[0m Unable to hack.'+txt) \ No newline at end of file + print('\033[91m[ERR]\033[0m Unable to hack.'+txt) + +class ActionRangeError(Exception): + def __init__(self, b=None, pos=[], *a, **k): + super().__init__(*a, **k) + self.b=b + self.pos=pos + def __str__(self): + if self.b: + return "[ERR] Object w/ id: "+repr(self.b.id)+" is too far." + else: + return "[ERR] "+repr(self.pos)+" is too far." \ No newline at end of file diff --git a/core/Errors/__pycache__/__init__.cpython-38.pyc b/core/Errors/__pycache__/__init__.cpython-38.pyc index 279b73d029a4687143e51b9b95887f7ccd6d0ea3..04b1b1311ec8af9837a4b65a8d7878741bff6548 100644 GIT binary patch delta 400 zcmaDaJY9k>l$V!_0SF@acf_->P2`hdOqr-1Ebh*b!j;0^!jQt9%FxUl#g@Vo%%I7e zJW)_&;Y?0O5G@YURjdUhQW>HcQy8L{QW(=2(wHW$kriRPCE%D`l9`_ul$e*E>RMEk zU*tFOhRtMUc0q|Ed7zeC%mw+ynyf_}KsH#QNO`g+yP~2B$V@gM!NADJ$i`SDiEhl~ zbIi*120-~5hAf66sT9T%Mi48DshLrnA%#htA($bB87#((BmxxGWbvyKiFOSNidFDW z%1TWxQ7G3}$V{0})abx9?l0+6O+79hdFD8y0(67kbypFD?Cl~HN(UQRVW PP{<2#2(SYohX4xz{0CID delta 70 zcmbO(@m`oOl$V!_0SG?vZ;xNVGLcV)F=V24FnbDDFoPy{@> '.format(self.player.selected.state))) else: self.show_map() - self.parser(input(css.OKGREEN+'[MAP]'+css.ENDC+css.OKCYAN+'[SCORE:{}]'.format(self.gamepoints)+css.ENDC)) # map parser + self.parser(input(css.OKGREEN+'[MAP]'+css.ENDC+css.OKCYAN+'[SCORE:{}]'.format(self.gamepoints)+css.ENDC+' >> ')) # map parser except errs.ParamError as e: print(str(e)) except errs.SameObjError as e: @@ -113,19 +115,33 @@ def parser(self, x): if bot==self.player: raise errs.SameObjError(bot, self.player) return - self.player.selected=bot + if int(bot.pos[0])>=(int(self.player.pos[0])-self.player.action_range) and int(bot.pos[0])<=(int(self.player.pos[0])+self.player.action_range): + if int(bot.pos[1])>=(int(self.player.pos[1])-self.player.action_range) and int(bot.pos[1])<=(int(self.player.pos[1])+self.player.action_range): + self.player.selected=bot + else: + raise errs.ActionRangeError(bot) + else: + raise errs.ActionRangeError(bot) elif '-pos' in params: v=params[params.index('-pos')+1] for bot in self.robots: if bot.pos==[int(i) for i in v.split(',')]: - self.player.selected=bot + if int(bot.pos[0])>=(int(self.player.pos[0])-self.player.action_range) and int(bot.pos[0])<=(int(self.player.pos[0])+self.player.action_range): + if int(bot.pos[1])>=(int(self.player.pos[1])-self.player.action_range) and int(bot.pos[1])<=(int(self.player.pos[1])+self.player.action_range): + self.player.selected=bot + else: + raise errs.ActionRangeError(bot) + else: + raise errs.ActionRangeError(bot) else: raise errs.ParamError(params) # MOVE elif cmd=='move': self.player.move(params[0]) - elif cmd=='bye': + + # EXIT && BYE + elif cmd in ['bye', 'exit']: print('[?] Are you sure?') c=getch() if c in ['y','s']: @@ -139,6 +155,27 @@ def parser(self, x): else: raise errs.CommandNotFoundError(cmd) + def win(self): + self.gamepoints+=10 + cls_() + titles=[ + '__ _____ _ _ __ _____ _ _ \n\\ \\ / / _ \\| | | | \\ \\ / /_ _| \\ | |\n \\ V / | | | | | | \\ \\ /\\ / / | || \\| |\n | || |_| | |_| | \\ V V / | || |\\ |\n |_| \\___/ \\___/ \\_/\\_/ |___|_| \\_|\n \n', + ' \n# # # # # # # ### ### \n# # # # # # # # # # # \n # # # # # ### # # # \n # # # # # ### # # # \n # # ### # # ### # # \n' + ] + # TODO dump data + print(css.OKGREEN+random.choice(titles)+css.ENDC) + while True: + print('Do you want to start a new game? (y\\n)') + r=getch() + if r.lower()=='y': + main() + elif r.lower()=='n': + print('Exiting...') + time.sleep(1); exit(code=0) + else: + print('[ERR] Invalid Key',r,'.') + continue + def update_map(self): for y in range(len(self.map)): for x in range(len(self.map[y])):