1 Commits

Author SHA1 Message Date
laktionov-as cdfe4ddf1f Старт на движке pymunk 2026-05-26 17:21:30 +03:00
+91
View File
@@ -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()