diff --git a/pymunk_game.py b/pymunk_game.py new file mode 100644 index 0000000..0972018 --- /dev/null +++ b/pymunk_game.py @@ -0,0 +1,91 @@ +import arcade +from random import randint + +class MainView(arcade.View): + def __init__(self): + super().__init__() + self.background_color = (100,100,200) + self.engine = arcade.PymunkPhysicsEngine(gravity=(0, 0)) + self.key_up = False + self.key_down = False + self.key_left = False + self.key_right = False + + self.objects = arcade.SpriteList() + for _ in range(10): + self.objects.append( + arcade.Sprite( + ':resources:/images/tiles/bomb.png', + scale=0.5, + center_x = randint(0,800), + center_y = randint(0,800) + ) + ) + self.engine.add_sprite_list( + self.objects, + mass=1, + friction=0.0, + elasticity=0.0, + moment_of_inertia=float('inf'), + damping=0.1 + ) + + self.walls = arcade.SpriteList() + for i in range(15): + for j in range(15): + if i==0 or j==0 or i==12 or j==12: + self.walls.append( + arcade.Sprite( + ':resources:/images/tiles/brickBrown.png', + scale=0.5, + center_x = 32 + i*64, + center_y = 32 + j*64 + ) + ) + self.engine.add_sprite_list( + self.walls, + body_type=arcade.PymunkPhysicsEngine.STATIC) + + def on_update(self, delta_time): + self.objects.update() + for obj in self.objects: + if self.key_up: + self.engine.apply_force(obj,(0,100)) + if self.key_down: + self.engine.apply_force(obj,(0,-100)) + if self.key_left: + self.engine.apply_force(obj,(-100,0)) + if self.key_right: + self.engine.apply_force(obj,(100,0)) + + self.engine.step(delta_time) + + def on_draw(self): + self.clear() + self.objects.draw() + self.walls.draw() + + def on_key_press(self,key,mod): + if key == arcade.key.W: + self.key_up = True + if key == arcade.key.S: + self.key_down = True + if key == arcade.key.A: + self.key_left = True + if key == arcade.key.D: + self.key_right = True + def on_key_release(self,key,mod): + if key == arcade.key.W: + self.key_up = False + if key == arcade.key.S: + self.key_down = False + if key == arcade.key.A: + self.key_left = False + if key == arcade.key.D: + self.key_right = False + +if __name__ == '__main__': + window = arcade.Window(800,800,'') + view = MainView() + window.show_view(view) + arcade.run()