Старт на движке pymunk
This commit is contained in:
@@ -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()
|
||||
Reference in New Issue
Block a user