Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/emilyhunt/SK8plotlib. Turn any matplotlib line chart into a line skateboarding game. 🛹 pypi.org/project/SK8plotlib
Something went wrong. Try again.
1.8 kB · 81 lines
Python
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182from sk8plotlib.physics import PhysicsPointfrom matplotlib.markers import MarkerStylefrom matplotlib.transforms import Affine2Dfrom .input import UserInput
_skater_points = [ (-1, -0.25), (-1, 0), (-1.5, 0), (-1.5, 0.1), (1.5, 0.1), (1.5, 0.0), (1.0, 0.0), (1.0, -0.25), (1.0, 0.0), (-1, 0), (-1, -0.25), (-1, 0),]
class Skater: def __init__(self, fig, ax, line_data, input: UserInput): self.fig = fig self.ax = ax # self.input = input self.physics = PhysicsPoint(0.0, 5.0, line_data, input) self.marker_scale = 1.0
# Run setup self.draw()
@property def x(self): return self.physics.position[0]
@property def y(self): return self.physics.position[1]
@property def v_x(self): return self.physics.velocity[0]
@property def v_y(self): return self.physics.velocity[1]
@property def rotation(self): return self.physics.rotation @property def position(self): return self.physics.position @property def velocity(self): return self.physics.velocity
def draw(self): self.marker = MarkerStyle( _skater_points, transform=Affine2D().translate(0, 0.2) ) self.points = self.ax.scatter( [self.x], [self.y], color="k", marker=self.marker, linewidths=2.5, s=500 )
def update(self, timestep): self.physics.step(timestep) self._update_points()
def set_marker_scale(self, scale): self.marker_scale = scale
def _update_points(self): self.points.set( offsets=[[self.x, self.y]], transform=Affine2D().rotate(self.rotation).scale(self.marker_scale), )