def __init__(self): # print("\tMenuState, init") super().__init__() self.entity_manager = ecs.EntityManager() self.system_manager = ecs.SystemManager(self.entity_manager) # used to make all the entities and shit self.maker = Maker(self.entity_manager, 'data/entities') """ self.system_manager.add_system(ControllerSystem(), 0) self.system_manager.add_system(MovableSystem(), 1) self.system_manager.add_system(CollisionSystem(), 1) """ self.system_manager.add_system(CommandSystem(), 0) self.system_manager.add_system(MovementSystem(), 1) self.system_manager.add_system(StateSystem(), 1) self.system_manager.add_system(AnimationSystem(), 1) self.system_manager.add_system(CollisionSystem(), 2) self.system_manager.add_system(DrawSystem(), 3) e = self.maker["Player"]("Detective.png", pos=(12, 12)) e2 = self.maker["Player"]("Detective.png", pos=(36, 12)) self.entity_manager.remove_component(e2, Commands) self.maker["Box"](pos=(12, 36)) self.world = World() self.viewport = Viewport() # self.viewport.center_on((0, 0)) self.viewport.lock_on( self.entity_manager.component_for_entity(e, Position))
class PlayState(State): def __init__(self): # print("\tMenuState, init") super().__init__() self.entity_manager = ecs.EntityManager() self.system_manager = ecs.SystemManager(self.entity_manager) # used to make all the entities and shit self.maker = Maker(self.entity_manager, 'data/entities') """ self.system_manager.add_system(ControllerSystem(), 0) self.system_manager.add_system(MovableSystem(), 1) self.system_manager.add_system(CollisionSystem(), 1) """ self.system_manager.add_system(CommandSystem(), 0) self.system_manager.add_system(MovementSystem(), 1) self.system_manager.add_system(StateSystem(), 1) self.system_manager.add_system(AnimationSystem(), 1) self.system_manager.add_system(CollisionSystem(), 2) self.system_manager.add_system(DrawSystem(), 3) e = self.maker["Player"]("Detective.png", pos=(12, 12)) e2 = self.maker["Player"]("Detective.png", pos=(36, 12)) self.entity_manager.remove_component(e2, Commands) self.maker["Box"](pos=(12, 36)) self.world = World() self.viewport = Viewport() # self.viewport.center_on((0, 0)) self.viewport.lock_on( self.entity_manager.component_for_entity(e, Position)) def update(self, dt, keys): if 'esc' in keys: return False game = { 'dt': dt, 'keys': keys, 'viewport': self.viewport, 'world': self.world } play_flag = self.system_manager.update(game) self.viewport.update() self.world.update(self.viewport) return play_flag def draw(self): #self.viewport.screen.blit(self.world.image, pygame.Rect(0, 0, 10, 10)) self.viewport.draw_image(self.world.image, pos=self.world.position) self.system_manager.draw(self.viewport) # self.viewport.draw_rect((10, 10, 20, 20)) # pygame.draw.rect(self.viewport.screen, (255, 255, 255), (10, 10, 20, 20)) self.viewport.push()
def quickSimulation(): """ Lunch a quick simulation. """ world = World() print(world) while True: time.sleep(1) world.iterate() print(world)
def main(): pygame.init() screen = pygame.display.set_mode((800, 600)) pygame.display.set_caption("blocks.") clock = pygame.time.Clock() world = World() world.load_level(sys.argv[1]) running = True while running: for event in pygame.event.get(): if event.type == QUIT: running = False elif event.type == KEYDOWN and event.key == K_ESCAPE: running = False world.save_level(sys.argv[2]) elif event.type == MOUSEBUTTONDOWN: if event.button == 1: mpos = pygame.mouse.get_pos() mpos = mpos[0], screen.get_height() - mpos[1] pygame.mouse.get_rel() elif event.type == MOUSEBUTTONUP: if event.button == 1: ball = Ball(world.space, *mpos, radius=20) rel = pygame.mouse.get_rel() rel = rel[0] * 2, -rel[1] * 2 world.append(ball) ball.apply_impulse(*rel) elif event.type == KEYDOWN and event.key == 115: world.space.step(1/200.0) print list(world.get_state()) screen.fill(THECOLORS["white"]) world.draw(screen) pygame.display.flip() clock.tick(200)
def main(): pygame.init() screen = pygame.display.set_mode((800, 600)) pygame.display.set_caption("blocks.") clock = pygame.time.Clock() world = World() world.load_level(sys.argv[1]) #def handle_collision(space, arbiter): # if target.contour not in arbiter.shapes: # return # print "OUCH" #space.set_default_collision_handler(None, None, None, handle_collision) running = True while running: for event in pygame.event.get(): if event.type == QUIT: running = False elif event.type == KEYDOWN and event.key == K_ESCAPE: running = False elif event.type == MOUSEBUTTONDOWN: if event.button == 1: mpos = pygame.mouse.get_pos() mpos = mpos[0], screen.get_height() - mpos[1] pygame.mouse.get_rel() elif event.type == MOUSEBUTTONUP: if event.button == 1: ball = Ball(world.space, *mpos, radius=20) rel = pygame.mouse.get_rel() rel = rel[0] * 2, -rel[1] * 2 world.append(ball) ball.apply_impulse(*rel) screen.fill(THECOLORS["white"]) world.space.step(1/200.0) world.draw(screen) pygame.display.flip() clock.tick(200)
def mainloop(device): world = World() finished = False clock = pygame.time.Clock() begin_motion = Vector2D(0.0, 0.0) end_motion = Vector2D(0.0, 0.0) #font = pygame.font.Font(None, 36) #text = font.render("Pummel The Chimp, And Win $$$", 1, (10, 10, 10)) bigbody = True move = 6 while not finished: for e in pygame.event.get(): if e.type == pygame.QUIT: finished = True break elif e.type == pygame.KEYDOWN: sc = world.root.scale.x if e.key == pygame.K_PAGEDOWN: world.root.scale *= 0.9 elif e.key == pygame.K_PAGEUP: world.root.scale *= 1.1 elif e.key == pygame.K_DOWN: world.root.move.y -= move*sc elif e.key == pygame.K_UP: world.root.move.y += move*sc elif e.key == pygame.K_LEFT: world.root.move.x += move*sc elif e.key == pygame.K_RIGHT: world.root.move.x -= move*sc elif e.key == pygame.K_SPACE: bigbody = not bigbody elif e.key == pygame.K_TAB: move += 2/sc elif e.type == pygame.KEYUP: if e.key == pygame.K_DOWN: world.root.move.y = 0 elif e.key == pygame.K_UP: world.root.move.y = 0 elif e.key == pygame.K_LEFT: world.root.move.x = 0 elif e.key == pygame.K_RIGHT: world.root.move.x = 0 elif e.type == pygame.MOUSEBUTTONDOWN: sc = world.root.scale.x begin_motion = (Vector2D(e.pos[0], e.pos[1]) - world.root.position)/sc elif e.type == pygame.MOUSEBUTTONUP: sc = world.root.scale.x end_motion = (Vector2D(e.pos[0], e.pos[1]) - world.root.position)/sc # arbitrary constant to give it a little more oomph :) motion = (end_motion - begin_motion) * 50 mass = 1 if not bigbody: mass = 0.1 node = MyNode(mass, world) node.position = (Vector2D(e.pos[0], e.pos[1]) - world.root.position)/sc node.last_position = node.position node.scale = Vector2D(40.0, 40.0) node.push = motion world.root.add(node) """for n in world.root._children: n.mass = 0 for c in n.world.root._children: if c == n: continue dist = (c.position - n.position).magnitude() / 100.0 n.mass += n.trumass/math.e**dist n.mass /= len(world.root._children) + 0.01""" device.clear() world.update(clock.tick(60) / 1000.0) world.render() device.flip() pygame.time.wait(0)
import pygame from engine import Screen, World, Tile, Entity from systems import System, GraphicsSystem, ControlSystem, SpriteSystem from components import Component, Position, Camera, Control, State, Sprite DEBUG = True playertile = (0, 0) playerposition = (0, 0) pygame.init() pygame.display.set_caption('~ R I K \' S G A M E ~') pygame.display.set_icon(pygame.image.load('icon.png')) clock = pygame.time.Clock() w = World(size=1024, tilesize=32) s = Screen(800, 800) gs = GraphicsSystem() cs = ControlSystem() ss = SpriteSystem() p = Entity(w) p.camera = Camera(0, 0, 800, 800, track=True, entitytotrack=p) p.position = Position(0, 0, 32, 32, 2) p.control = Control(pygame.K_UP, pygame.K_DOWN, pygame.K_LEFT, pygame.K_RIGHT) p.state = State() p.sprite = Sprite() p.sprite.sprites['idle'] = [ pygame.image.load('images/player/idle.png'),