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()