From c64a19b2571cbd87635cf1e9a20f91ab89fd4257 Mon Sep 17 00:00:00 2001 From: Suwako Moriya Date: Mon, 3 Feb 2020 00:31:31 +0100 Subject: [PATCH] Implemented networking. --- assets/projectile/loop/00001.png | Bin 0 -> 167 bytes assets/ship_fire/end/00001.png | Bin 490 -> 0 bytes assets/ship_fire/setup/00001.png | Bin 490 -> 0 bytes assets_sources/projectile/file.xcf | Bin 0 -> 2254 bytes assets_sources/projectile/loop.gif | Bin 0 -> 112 bytes assets_sources/ship_fire/end.gif | Bin 9327 -> 0 bytes assets_sources/ship_fire/setup.gif | Bin 9327 -> 0 bytes client.py | 80 +++++++++++-- mecha.py | 34 +++++- requirements.txt | 3 + server.py | 173 ++++++++++++++++++++++------- visual.py | 29 ++++- 12 files changed, 262 insertions(+), 57 deletions(-) create mode 100644 assets/projectile/loop/00001.png delete mode 100644 assets/ship_fire/end/00001.png delete mode 100644 assets/ship_fire/setup/00001.png create mode 100644 assets_sources/projectile/file.xcf create mode 100644 assets_sources/projectile/loop.gif delete mode 100644 assets_sources/ship_fire/end.gif delete mode 100644 assets_sources/ship_fire/setup.gif create mode 100644 requirements.txt diff --git a/assets/projectile/loop/00001.png b/assets/projectile/loop/00001.png new file mode 100644 index 0000000000000000000000000000000000000000..989bed5f3476b37af07292a6fc943af941f1d2ab GIT binary patch literal 167 zcmeAS@N?(olHy`uVBq!ia0vp^tUxTt!3HEnHPSMG6lZ})WHFEi0Y-+FN^uY;($mE; zq+(9;kN^MenK{xsBmcE;Jb0vx?frl69ee*BRym;Muw&`cr}jQVYq(SzbQrJkJvv}; z$7fBG0jJ3A#8pZ`L4l!%STqbKZ}8e9c5p7s;|2pCp>?v7%nagJ9>zz1$eRPQ&ePS; JWt~$(695zi)FHeEN^5YTv%O5*-&aKzGopa;2)f4ET9n=)`{rd49`L(S+ zzYhBULbZWW9%@j&kk;k`O3x!Pz}v^=YX=;MrxQCd*iVXeYi1w->N zJGwlOcE`2<(;ne$HHxhCo_3vTprIS_{4}2~X4tom8+?z(4hsBz@)0O{KQ^9vV6awN z0<}{v5meeiNf`vH9qIIdk)WwfE44P`CoZFrO}ZBmsP$x(9hBE1QjXUq-vHF41`CRs z4)UdL+(B#CXe{X9YgAja`D?NeC{h@8+uV5+Qxt(Vuc%amqXi{@x$^$^8#kv8I#f^& zOn}@r-;Br}UoQ~elO;g@yjf5Qko=#Q(`K?Q0h}3-toQq`dwY1?e?FXVzvl2EDXwlOUEq^ gTF+Kbpo5y)KaP!Ed;b^TsQ>@~07*qoM6N<$f_F&NIsgCw diff --git a/assets/ship_fire/setup/00001.png b/assets/ship_fire/setup/00001.png deleted file mode 100644 index e8927d8df07d960211bce432c3b319dd484a7962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 490 zcmVi)FHeEN^5YTv%O5*-&aKzGopa;2)f4ET9n=)`{rd49`L(S+ zzYhBULbZWW9%@j&kk;k`O3x!Pz}v^=YX=;MrxQCd*iVXeYi1w->N zJGwlOcE`2<(;ne$HHxhCo_3vTprIS_{4}2~X4tom8+?z(4hsBz@)0O{KQ^9vV6awN z0<}{v5meeiNf`vH9qIIdk)WwfE44P`CoZFrO}ZBmsP$x(9hBE1QjXUq-vHF41`CRs z4)UdL+(B#CXe{X9YgAja`D?NeC{h@8+uV5+Qxt(Vuc%amqXi{@x$^$^8#kv8I#f^& zOn}@r-;Br}UoQ~elO;g@yjf5Qko=#Q(`K?Q0h}3-toQq`dwY1?e?FXVzvl2EDXwlOUEq^ gTF+Kbpo5y)KaP!Ed;b^TsQ>@~07*qoM6N<$f_F&NIsgCw diff --git a/assets_sources/projectile/file.xcf b/assets_sources/projectile/file.xcf new file mode 100644 index 0000000000000000000000000000000000000000..24850829cbb36b95d2ae3f1b4e85d55c1cd2e052 GIT binary patch literal 2254 zcmds2Pfr_16rWwdHjon95-W;wm^y8MgN@y^3YLtKia;&2QdFG8IpnZ-$IBqwOT0_u zoRY&xx#mKY55T2TkCpfUx#pN}kZUExwGx{C-g+kt5)tLtyw#icoA=NA-o6le zmp)XC^87g$#m_o|M`1_$^AmIJpcQt)KA%fOu^()Cyqr9hd6>7(F;{ruAG(G{`hd$C7))Z)CVEf2aK z{#5iM8TOWDE2Z)*7rj>KE+pi?hr1iJA$lPjFs~y@2<;u2?Fp4rIIZ3$>{9 zlZ>N#qQB{NcRQj`U*vdd3vm5(ND}y~=mqh1pEA|K@1`-lTl@hsA|z<${<;mx{T!9mZj4g(hVaUmP7W`D+WO&86>R(MWc<8QUDn z%)Vs=%)YnwX7Fi7Cm+a2Zed7oeNP@V)u z)!0bCX7mozJ1#puJlJ77JL>S@P+?`Ra=<4{HOJIHO{JR6{#B(D^^s~S#-M@`7C?tN zTIXGT%qH_XpI2;>DXbbvz$aSyNa8Ey`;;V6A1NOQDi~n_bhION)s@E^>s48;s*Uvx zg;gR6_(Up!Btj`6C`qC|QbI`y6^yU|Iuhk*m$~TOIM~%F1N))wJUQ~we^e(uGfkp_ z$fdJHy}D?C$mjnuKs1OJWzsX2s7(Fo0A)hU(b%BMyfpf$pI6z`2k_%n)*z+vI(r(E zf2hx?iBqNlLz#VJ?M(~PCT9OS#|BmQozXW~LpNlDPP~b|_L~Ov literal 0 HcmV?d00001 diff --git a/assets_sources/projectile/loop.gif b/assets_sources/projectile/loop.gif new file mode 100644 index 0000000000000000000000000000000000000000..03830c5415209ca59ed1d9e603d1a71f51767b05 GIT binary patch literal 112 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 max(size): return + if min(self.position.size)*scale < 1 : + return scaled_dimension = (scale*self.dimension()).astype(int) scaled_image = pygame.transform.scale(self.image, scaled_dimension) scaled_image = pygame.transform.rotate(scaled_image, @@ -41,7 +43,7 @@ class Obj(): class Star(Obj): def __init__(self, **keyargs): - self.mecha = mecha.Player(**keyargs) + self.mecha = mecha.Mass(**keyargs) self.image = pygame.image.load("assets/ship/loop/00001.png") self.position = self.image.get_rect() @@ -59,6 +61,11 @@ class Player(Obj): self.image = pygame.image.load("assets/ship/loop/00001.png").convert_alpha() self.position = self.image.get_rect() +class Projectile(Obj): + def __init__(self, **keyargs): + self.mecha = mecha.Projectile(**keyargs) + self.image = pygame.image.load("assets/projectile/loop/00001.png") + self.position = self.image.get_rect() if __name__ == "__main__": import time @@ -70,7 +77,7 @@ if __name__ == "__main__": tick = (time.time(), time.time(), 0) screen = pygame.display.set_mode(size, flags=pygame.RESIZABLE) - elements = [Player(speed=(5, 0), pos=(10, -200)), Player(speed=(-5, 0), pos=(10, 200), mass = 1), Planet(mass=200), Planet(mass=200, pos=(0,20), speed=(-1,0)), Planet(mass=150, pos = (0, 1000), speed = (15, 0)), Player(mass=5, pos = (0, 1010), speed = (15, 1))] + elements = [Player(speed=(5, 0), pos=(10, -200)), Player(speed=(-5, 0), pos=(10, 200), mass = 1), Planet(mass=7000), Planet(mass=200, pos=(0,20), speed=(-1,0)), Planet(mass=150, pos = (0, 1000), speed = (15, 0)), Player(mass=5, pos = (0, 1010), speed = (15, 1))] reference = 2 joy=[1, 1] while 1: @@ -95,11 +102,15 @@ if __name__ == "__main__": reference = (reference + 1)%len(elements) if event.key == (32): elements[1].mecha.action(thrust=True) + if event.key == 119: + elements[1].mecha.action(fire = True) if event.type == pygame.KEYUP: if event.key in keys: keys.remove(event.key) if event.key == (32): elements[1].mecha.action(thrust=False) + if event.key == 119: + elements[1].mecha.action(fire = False) screen.fill(black) for key in keys: if key in [275,276,273,274]: @@ -107,6 +118,16 @@ if __name__ == "__main__": elements[1].mecha.orientation=joy[0]*(-3) for element in elements: element.mecha.apply_forces([element.mecha for element in elements]) + j = 0 + while j < len(elements): + if type(elements[j]) is mecha.visual.Projectile and elements[j].mecha.ticks > 25*30: + del elements[j] + j-=1 + j+=1 + j = 0 + while j < len(elements): + elements[j].mecha.fire(elements) + j+=1 for element in elements: element.mecha.tick() ori,speed=origin=np.array(elements[0].mecha.pos), np.array(elements[0].mecha.speed) @@ -118,7 +139,7 @@ if __name__ == "__main__": while 10**(joy[1]*0.05) < 0.08 : joy[1] += 1 for element in elements: - element.draw(scale=10**(joy[1]*0.05), reference=elements[reference].mecha.pos, size=screen.get_size()) + element.draw(screen, scale=10**(joy[1]*0.05), reference=elements[reference].mecha.pos, size=screen.get_size()) pygame.display.flip() # for element in elements: # element.apply(camera=camera, origin=origin)