From c4b850e349c0a3eca555a2ae68bbafa6a674e357 Mon Sep 17 00:00:00 2001 From: Suwako Moriya Date: Tue, 28 Jan 2020 11:00:33 +0100 Subject: [PATCH] Added mecha and visual subpackages --- intro_ball.gif => assets/intro_ball.gif | Bin assets/ship.gif | Bin 0 -> 983 bytes main.py | 19 ++++++---- mecha.py | 46 ++++++++++++++++++++++++ server.py | 28 --------------- visual.py | 14 ++++++++ 6 files changed, 72 insertions(+), 35 deletions(-) rename intro_ball.gif => assets/intro_ball.gif (100%) create mode 100644 assets/ship.gif create mode 100755 mecha.py create mode 100755 visual.py diff --git a/intro_ball.gif b/assets/intro_ball.gif similarity index 100% rename from intro_ball.gif rename to assets/intro_ball.gif diff --git a/assets/ship.gif b/assets/ship.gif new file mode 100644 index 0000000000000000000000000000000000000000..7e91ff7a1227642c9c445624b3c3272e1fe4fa77 GIT binary patch literal 983 zcmeHGO-oim6uwCdG1|Os#B5=i^h!a{2VKgjw-5CS#d~Yx<)x6Tpxj*DO*9aJvr)#N zoFHMKjAmglVB`c9Lxee$$bc<|K$t!@vnUw)fJN5HrpilS^v_hssvD4Sa~8kQ)Vap2k{hW4+BZQ)L)wWnOG} zTqD{l>sqPO+$U_zl+s#C84wAC#>#};3J4-$BVnpUNWle0LTSkvXH+plDXmc@rSQPY z63#=+mDh0AL1ZEf7m_KBh37Wo%6h-lg=VG9N?t2jRPwk~sF1+XxL~p4nWK^8xf95e zNONp(Bn45prWlkIC=^K)`o@xEj1r8oz^Ooq!m)rM!H|QH;he#Uz>MZ0Mi@efvl_`f z2M7XyFa{Y)Ljsa4&ru!&0CET^Oq>##Fjh+|si6ttegL2pRU8_cG9j2$j3PmRCb40_ z7t>lv1kH=V5!SS8P z;pqH><*D(m%9Z@_E;-rWb8Yqg{^2vxo(u8wzId*GpgX-Ze6>FE`f&HYr>95jyDOc& z*FQJL)<(|bv74QPZ3jozU~j!?`atzurSsIi@5g2<{gp>Ex7*()^`VQ=iI>UpRQ%=S zOm+QX&%4F(!6%LS%I{e@zdms&UD+7@`Ss(AEtgxmqPw34ZcPu=^!&FE>B^n0W_9)1 JkEI*I(LcqqufzZV literal 0 HcmV?d00001 diff --git a/main.py b/main.py index 26572b0..e794740 100755 --- a/main.py +++ b/main.py @@ -16,7 +16,7 @@ size = width, height = 1366, 720 TICK_RATE=60 camera=np.array([0.,0.]) origin=camera=np.array([0.,0.]) -follow=0 +follow=1 screen = pygame.display.set_mode(size) class satellite(pygame.sprite.Sprite): @@ -45,14 +45,15 @@ tick=(time.time(), time.time(), 0) def clip(val, minval, maxval): return min(max(val, minval), maxval) elements=[satellite() for _ in range(3)] -for element in elements: +"""for element in elements: element.pos=np.array([random.randint(0,width), random.randint(0,height)], dtype='float64') - element.speed=np.array([random.randint(0,50), random.randint(0,50)], dtype='float64') -elements[1].pos= np.array([float(width/2), float(height/2)]) -elements[0].pos= np.array([float(width/4), float(height/4)]) -elements[0].speed[1]=10 -elements[1].mass=100 + element.speed=np.array([random.randint(0,50), random.randint(0,50)], dtype='float64')""" +elements[1].pos= np.array([-500.,0.]) +elements[0].pos= np.array([-100.,0.]) +elements[0].speed[1]=20 +elements[1].mass=300 elements[2].mass=30 +elements[2].speed[1]=100 keys=set() while 1: dtick=tick @@ -79,9 +80,13 @@ while 1: for element in elements: element.apply_gravity(elements) element.tick(camera=camera) + for element in elements: + element.pos = element.pos - elements[-1].pos + element.speed = element.speed - elements[-1].speed origin=elements[follow].pos for element in elements: element.apply(camera=camera, origin=origin) screen.blit(element.image, element.position) pygame.display.flip() time.sleep(0.001) + if tick[2]%60 == 0 : print(elements[follow].pos) \ No newline at end of file diff --git a/mecha.py b/mecha.py new file mode 100755 index 0000000..e347ce1 --- /dev/null +++ b/mecha.py @@ -0,0 +1,46 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Created on Mon Jan 27 16:32:02 2020 + +@author: suwako +""" + +import numpy as np + + +class Mass(): + def __init__(self, pos=(0,0), speed=(0,0), mass=1): + self.pos = np.array(pos, dtype='float64') + self.speed = np.array(speed, dtype='float64') + self.mass = mass + self.G = 0.0000001 + + def tick(self): + self.pos += self.speed + + def apply_gravity(self, elements): + for element in elements: + d = element.pos - self.pos + norm_d = np.linalg.norm(d) + if norm_d != 0: + u = d/norm_d + norm = self.G * element.mass * (d[0]**2 + d[1]**2) + self.speed += norm*u + + +class Player(Mass): + def __init__(self, keys={}, + orientation=0, + pos=(0, 0), + speed=(0, 0), + mass=1): + Mass.__init__(self, pos=pos, speed=speed, mass=mass) + self.orientation = orientation + self.actions = {"thrust": False, "fire": False} + self.actions.update(keys) + + def action(self, keys): + self.actions.update(keys) +if __name__ == "__main__": + pass \ No newline at end of file diff --git a/server.py b/server.py index a54ed76..5302c46 100755 --- a/server.py +++ b/server.py @@ -43,34 +43,6 @@ def error(*s): print(Fore.RED + level = 1 for i in range(level): exec("debug info warn error".split()[i] + "= lambda *x: None") -class Satellite(): - def __init__(self, pos=np.array([0., 0.]), - speed=np.array([0., 0.]), - mass=1): - self.pos = pos - self.speed = speed - self.mass = mass - self.G = 0.0000001 - - def tick(self): - self.pos += self.speed - - def apply_gravity(self, elements): - for element in elements: - if element.pos != self.pos: - d = element.pos - self.pos - u = d/np.linalg.norm(d) - norm = self.G * element.mass * (d[0]**2 + d[1]**2) - self.speed += norm*u - - -class Player(): - pass - - -class Map(): - def __init__(self): - self.elements = [] def handle(connection, address): diff --git a/visual.py b/visual.py new file mode 100755 index 0000000..873e869 --- /dev/null +++ b/visual.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +""" +Created on Tue Jan 28 10:54:33 2020 + +@author: suwako +""" +import mecha + +class Player(): + def __init__(self): + self.mass = mecha.Mass() + self.image = pygame.image.load("assets/ship.gif").convert_alpha() + self.position = self.image.get_rect() \ No newline at end of file