コード例 #1
0
    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))
コード例 #2
0
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()
コード例 #3
0
ファイル: ui.py プロジェクト: Einh06/GameOfLife_Python
def quickSimulation():
		"""
		Lunch a quick simulation.
		"""

		world = World()
		print(world)
		while True:
			time.sleep(1)
			world.iterate()
			print(world)
コード例 #4
0
ファイル: ui.py プロジェクト: Einh06/GameOfLife_Python
def quickSimulation():
    """
		Lunch a quick simulation.
		"""

    world = World()
    print(world)
    while True:
        time.sleep(1)
        world.iterate()
        print(world)
コード例 #5
0
ファイル: editor.py プロジェクト: pybucuresti/demolition
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)
コード例 #6
0
ファイル: demolition.py プロジェクト: pybucuresti/demolition
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)
コード例 #7
0
ファイル: verlet.py プロジェクト: genjix/random
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)
コード例 #8
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'),