From 11fdd51efb332b9e0340eba3eb5d59781d9678b6 Mon Sep 17 00:00:00 2001 From: luisgulo Date: Sun, 4 Oct 2026 15:17:20 +0200 Subject: [PATCH] bloque empujando revision de sprites --- highway_vector.py | 25 +++++++++++++++++++++---- img-versiones/version_1.2.png | Bin 0 -> 18632 bytes 2 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 img-versiones/version_1.2.png diff --git a/highway_vector.py b/highway_vector.py index ce2de08..4b7a36d 100644 --- a/highway_vector.py +++ b/highway_vector.py @@ -218,15 +218,32 @@ class Enemy(Entity): self.health = 1 def update(self, entities): - # Movimiento de patrulla horizontal + # Calcular la posición objetiva horizontal target_gx = self.gx + (self.speed * self.direction) - # Rebotar en los bordes de la carretera + # 1. Rebotar si llega a los límites físicos de la carretera if target_gx <= 0.5 or target_gx >= GRID_SIZE_X - 0.5: self.direction *= -1 - target_gx = self.gx + (self.speed * self.direction) + return - self.gx = target_gx + # 2. Comprobar colisión con bloques u otras entidades sólidas + blocked = False + for entity in entities: + if entity != self and entity.is_solid: + # Comprobar la distancia con el bloque en la rejilla + if ( + abs(entity.gx - target_gx) < 0.6 + and abs(entity.gy - self.gy) < 0.6 + ): + blocked = True + break + + if blocked: + # Si se topa con un bloque empujable u otro obstáculo, invierte su rumbo + self.direction *= -1 + else: + # Si el camino está despejado, avanza + self.gx = target_gx class Player(Entity): diff --git a/img-versiones/version_1.2.png b/img-versiones/version_1.2.png new file mode 100644 index 0000000000000000000000000000000000000000..513e9ee1d56f07fb64b0560d978dee20e55e83e3 GIT binary patch literal 18632 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≪`DWWxmI5ereC0xOa<8-zACmakm&!=SNYPhx*4`O6pyy zJ7EdqF)!fP(gd3qx;QR>X~N@yp34Im-}u%;CKBDO&|(`-QaV9QdjD%D8>Cd?1~O5Z zWZGGJL7yjuCE6GOc=&@ht$NDzsZ&#h&N4vShWj5&tCDO%1egrsd@K9V*wwFOT&_LK zOW$PQDQLOO=I|YcZ7A{;+o>Q3%hyIC=L#!n6R{3SoVKOHk2 zBrEXb5T^#LInkpuk+FdNlxQDkMZ`Sz9f*#TIquJb9|O227nt(P`HMOv;Nv`nXwiiWaDVxdz_qJ&r7e>6h*W;Vf{NlbYu4Meo%m=P!It6d3j#`b!%B zyhdRMa)rsj&5$9n4OiGy>*~?mnJD?8f0xMl9r%5L8Bbs*51Je)(gD6}!2WxDVcq}A zhO>eE%BivuzA&0&Nl7L(b)%L@CV(!!xK!7^F{Dud-h0wyNkNKv^VU{_qRB~qVxsrX z%FE5FqVT5nJU8!mM_L2C!SAyig#RzV(e3GcsRnJ}7v;!&F*GP2gO0&w+HUTx9~^M? zx=!>q{sibqA7f*1h9E@U;WH5)50Vsu1G`#5hHpIGn47RHVP8)C=gT$}8zr7XJ)A1+ zq9m4WngTlVhlFRUd(ua7>%0T&YD7Jvl$o&Wz^7TErS*o6`7lJ`? z8T3M{L3pTdwZ2YH+pds(p2BhB$3can6;PI#$9p9Tt> zj*RxR*Pe|v)v~(sR44eHNP<`fy*qKSmBGm4==LwiK>nrTPPviz_NNS0~!4mUd23y|! zrPaa%gg12%^r#{R+g~Jmmz)*`0d*~APdGDG>K^v)y`cl z(06{hy}C=aL}YOw=oO!fooxE*?EBQj|7oqm((%U)zLN>6v8iCiV)3V7m^6-}8tZCy zQTHr&9d~Mjo_}bOOU>BkTEV&;nXq$Lzk@;Pr-c zle=)H@1VnT@c4I12=CkhoooyDrXMZq&zJ@)g?+8Y??vusZ6=O}fkTM7Yv4e;`Ic$} zYpzDhl3HiG1#aVFvP44PmwoFtD=y$0!&VTC!RK3KAx7K=j93X6F;c&h347cmiH$HV zB>91jfvipk)T_{_1wUrPF@+MQ2mUR%3;^+jMiq@Og5S5HBB%(@9>_n)n=_O3gN%WH%>*a_++ruAZrk4ocQtl+zItT%e>-+tK)yU5wHn;H z`01+mGa>Syi@g7J=YUX9mh&YOw*GrNuG=WC2N=DRNq)Gi*gsd{daA17LQd)k`k!m> zfzcvB=zIw9jH?Lj2bUrjljh3MXw= zO5O-(1AG&vh`{{__K!isc9bjKm88(*jS%NCnCaq8aE&9E>8pZo+^=77QQD_I(__J*>o*TBK3Jryi1dk8i; z0YheFIZ|MJZfma1ijIPp#DLHZyQY8_%3K33O)urgf!oj#5cSpXzeFsnk_DH)tiVP{ zinKgixbHKr?xXEbj=5(h{JznPRJ>4HFTbSOHeyzjN$uIOAecs^tX0H3J_fJz=IO;? zK*tNn)Nm#Hd_xR!nRh*MnHQ|It@`a9lR`bl!cMeN=zdsgogdbRcmnt51D@4$S71Q7 zbbiZuJrGH^tm!9N}6m$FL<2hwra%m;D7yRAcq~OQ~=cf z_tjl+z@;YOn$tlu?Wj`sxSkl=6lf~L7j~3OB*+9OgWp^_T5T>gxWWdSdZV}mM2-#a zN^z&200f&nfVx