class World(object): _next_id = 0 def __init__(self): self.items = {} self.physics = PhysicsWorld() def init(self): self.physics.init() def add(self, item, position): item.itemid = World._next_id self.items[World._next_id] = item World._next_id += 1 item.physics = PhysicsItem(item) self.physics.add(item.physics, position, item.static) item.glyph = Glyph.from_item(item) def update(self): self.physics.update(self.items) for item in self.items.itervalues(): item.update()
import pygame from pygame.locals import * from vectors import Vector2D from physics import PhysicsWorld, RigidBody pygame.display.init() pygame.font.init() pygame.display.set_caption("Simple physics example") default_font = pygame.font.Font(None, 24) screen_size = (1280, 768) game_surface = pygame.display.set_mode(screen_size) clock = pygame.time.Clock() world = PhysicsWorld() world.add( RigidBody(100, 100, 100, 100, mass=inf), RigidBody(100, 100, screen_size[0] - 100, 100, mass=inf), RigidBody(100, 100, screen_size[0] - 100, screen_size[1] - 100, mass=inf), RigidBody(100, 100, 100, screen_size[1] - 100, mass=inf), ) screen_center = Vector2D(screen_size) / 2 mouse_pos = screen_center def get_input(): mouse_buttons = pygame.mouse.get_pressed() global mouse_pos mouse_pos = pygame.mouse.get_pos()
def __init__(self): self.items = {} self.physics = PhysicsWorld()