46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
|
#!/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
|