Beispiel #1
0
def main():
    sdl2.ext.init()

    # Create the window
    window = sdl2.ext.Window("Foo", size=(960, 640))
    window.show()

    # Create the spirte factory and the sprite for the player
    factory         = sdl2.ext.SpriteFactory(sdl2.ext.SOFTWARE)

    # Create the worl and spriterenderer system
    world           = sdl2.ext.World()
    spriterenderer  = SoftwareRenderer(window)
    movement        = MovementSystem(0, 0, 960, 640)
    playerMovement  = PlayerMovementSystem()
    collision       = CollisionSystem()
    battleSystem = BattleSystem()

    # Add all systems to the world
    world.add_system(playerMovement)
    world.add_system(collision)
    world.add_system(movement)
    world.add_system(spriterenderer)
    world.add_system(battleSystem)

    # Test map generation
    grid = mapGen.buildMap(world, factory, 4)
    grid.build(world, factory)

    enemyTile = random.choice(grid.tiles)
    enemy = Enemy(world, factory, enemyTile.position.x, enemyTile.position.y)

    # Pick random location for player
    playerTile = random.choice(grid.tiles)
    player = Player(world, factory, playerTile.position.x, playerTile.position.y)
    player_speed = 1

    battleSystem.player = player

    playerMovement.player = player
    playerMovement.grid = grid

    gridSystem = GridSystem(960, 640, player)
    world.add_system(gridSystem)

    # Colliders for said items
    collision.player = player
    collision.grid   = grid

    # Main event loop
    running = True
    key_down = False
    while(running):

        events = sdl2.ext.get_events()

        for event in events:

            # Hittin' dat X button doe
            if event.type == sdl2.SDL_QUIT:
                running = False
                break

            if event.type == sdl2.SDL_KEYUP:
                key_down = False

            # Movement
            if event.type == sdl2.SDL_KEYDOWN:
                d = None

                if(not key_down):
                    if event.key.keysym.sym == sdl2.SDLK_UP:
                        d = Direction.NORTH
                        key_down = True

                    elif event.key.keysym.sym == sdl2.SDLK_e:
                        print("I'm attacking with", player.get_damage(), "!")
                        key_down = True

                    elif event.key.keysym.sym == sdl2.SDLK_f:
                        print("Consuming")
                        player.consume()
                        print("Player health now at,", player.playerdata.health)

                    elif event.key.keysym.sym == sdl2.SDLK_DOWN:
                        d = Direction.SOUTH
                        key_down = True

                    elif event.key.keysym.sym == sdl2.SDLK_LEFT:
                        d = Direction.EAST
                        key_down = True

                    elif event.key.keysym.sym == sdl2.SDLK_RIGHT:
                        d = Direction.WEST
                        key_down = True

                    if d != None:
                        collision.player_dir = d
                        enemy.random_move(grid)
                        playerMovement.walk(d)

        sdl2.SDL_Delay(10)
        world.process()

    return 0
Beispiel #2
0
def main():
    sdl2.ext.init()

    # Create the window
    window = sdl2.ext.Window("Foo", size=(960, 640))
    window.show()

    # Create the spirte factory and the sprite for the player
    factory         = sdl2.ext.SpriteFactory(sdl2.ext.SOFTWARE)
    food_sprite     = factory.from_color(sdl2.ext.Color(255, 255, 255), size = (32, 32))
    weapon_sprite   = factory.from_color(sdl2.ext.Color(175, 175, 175), size = (32, 32))
    sprite          = factory.from_surface(sdl2.ext.load_image(RESOURCES.get_path('player.png')))

    # Create the worl and spriterenderer system
    world           = sdl2.ext.World()
    spriterenderer  = SoftwareRenderer(window)
    movement        = MovementSystem(0, 0, 800, 600)
    collision       = CollisionSystem(0, 0, 800, 600)

    # Add all systems to the world
    world.add_system(collision)
    world.add_system(movement)
    world.add_system(spriterenderer)

    # Test map generation
    grid = mapGen.buildMap(4)
    grid.build(world, factory)

    # Pick random location for player
    playerTile = random.choice(grid.tiles)
    player = Player(world, sprite, playerTile.sprite.position[0], playerTile.sprite.position[1])
    player_speed = 1

    gridSystem = GridSystem(960, 640, player)
    world.add_system(gridSystem)

    # Test items
    food    = Item(world, food_sprite, 500, 500, DataTypes.CONSUMABLE, "Sandwich")
    weapon  = Item(world, weapon_sprite, 300, 300, DataTypes.UNPATHABLE, "Axe")

    # Colliders for said items
    collision.colliders.append(food)
    collision.colliders.append(weapon)
    collision.player = player

    # Main event loop
    running = True
    while(running):

        events = sdl2.ext.get_events()

        for event in events:

            # Hittin' dat X button doe
            if event.type == sdl2.SDL_QUIT:
                running = False
                break

            # Movement
            if event.type == sdl2.SDL_KEYDOWN:
                d = None

                if event.key.keysym.sym == sdl2.SDLK_UP:
                    d = Direction.NORTH
                elif event.key.keysym.sym == sdl2.SDLK_DOWN:
                    d = Direction.SOUTH
                elif event.key.keysym.sym == sdl2.SDLK_LEFT:
                    d = Direction.EAST
                elif event.key.keysym.sym == sdl2.SDLK_RIGHT:
                    d = Direction.WEST

                if d != None:
                    player.walk(grid, d)

        sdl2.SDL_Delay(10)
        world.process()

    return 0