예제 #1
0
def create(screen_width_px, screen_height_px, tile_size_px):
        joystick_props = controls.get_joystick_properties()
        origin_xy = (0, joystick_props["h"] * screen_height_px)
        state = factory.create(screen_width_px, screen_height_px, tile_size_px, origin_xy)
        controls.add_joystick(state)
        controls.add_buttons(state, (("Fire", None, "right", "big"),))

        n_x = (screen_width_px / 256) + 1
        n_y = (screen_height_px / 256) + 2
        for x in xrange(n_x):
                for y in xrange(n_y):
                        entity_name = star_name(x, y)
                        textures_tuple = ("assets/img/sprites/stars.png",)
                        if DEBUG_MODE:
                                color = (float(x) / n_x, float(y) / n_y, 0)
                                textures_tuple = (("rectangle", 2, 2, color[0], color[1], color[2]),)
                        entities.insert(state, entity_name, {
                                        "*": {
                                                "textures": textures_tuple,
                                                "speed": 0,
                                        },
                                }, ((x * 2), (y * 2), 0)
                                )

        entities.insert(state, ENT_SHIP,
                {
                        "*idle": {
                                "textures": (
                                        "assets/img/sprites/ship_idle/0.png",
                                        "assets/img/sprites/ship_idle/1.png",
                                        ),
                                "speed": 100,
                        },
                        "thrust": {
                                "textures": (
                                        "assets/img/sprites/ship_thrust/0.png",
                                        "assets/img/sprites/ship_thrust/1.png",
                                        ),
                                "speed" : 50,
                        },
                }, (1, 1, 0)
                )

        start_stars_movement(state, None)

        controlled_mover.add(state,
                             ENT_SHIP,
                             "joystick",
                             0.03,
                             (0, 0, 3.25, 1.0),
                             ("*idle", "thrust"),
                             False
                             )

        return state
예제 #2
0
def create(screen_width_px, screen_height_px, tile_size_px):
    joystick_props = controls.get_joystick_properties()
    origin_xy = (0, joystick_props["h"] * screen_height_px)
    state = factory.create(screen_width_px, screen_height_px, tile_size_px,
                           origin_xy)
    controls.add_joystick(state)
    controls.add_buttons(state, (("Fire", None, "right", "big"), ))

    n_x = (screen_width_px / 256) + 1
    n_y = (screen_height_px / 256) + 2
    for x in xrange(n_x):
        for y in xrange(n_y):
            entity_name = star_name(x, y)
            textures_tuple = ("assets/img/sprites/stars.png", )
            if DEBUG_MODE:
                color = (float(x) / n_x, float(y) / n_y, 0)
                textures_tuple = (("rectangle", 2, 2, color[0], color[1],
                                   color[2]), )
            entities.insert(state, entity_name, {
                "*": {
                    "textures": textures_tuple,
                    "speed": 0,
                },
            }, ((x * 2), (y * 2), 0))

    entities.insert(
        state, ENT_SHIP, {
            "*idle": {
                "textures": (
                    "assets/img/sprites/ship_idle/0.png",
                    "assets/img/sprites/ship_idle/1.png",
                ),
                "speed":
                100,
            },
            "thrust": {
                "textures": (
                    "assets/img/sprites/ship_thrust/0.png",
                    "assets/img/sprites/ship_thrust/1.png",
                ),
                "speed":
                50,
            },
        }, (1, 1, 0))

    start_stars_movement(state, None)

    controlled_mover.add(state, ENT_SHIP, "joystick", 0.03, (0, 0, 3.25, 1.0),
                         ("*idle", "thrust"), False)

    return state
예제 #3
0
def create(screen_width_px, screen_height_px, tile_size_px):
        # If there is an on-screen joystick
        # (there may not be one needed for non-mobile or other platforms)
        # set the drawing origin to above it (WORK IN PROGRESS, this needs a
        # cleaner solution).
        joystick_props = controls.get_joystick_properties()
        origin_xy = (0, joystick_props["h"] * screen_height_px)

        # Create the actual game state object that stores all information that yapyg needs.
        state = factory.create(screen_width_px, screen_height_px, tile_size_px, origin_xy)

        # Enable the joystick.
        controls.add_joystick(state)

        # Request buttons
        controls.add_buttons(state, (("Fire", on_fire_button, "right", "big"),))

        # Create some tiles to use for our game area. Individual tiles are referred to by strings.
        # Each tile can be composed by layering several images over each other
        if not DEBUG_MODE:
                floor_tile = "assets/img/tiles/dirtysquares.png"
        else:
                floor_tile = "assets/img/tiles/grid_double.png"

        tiles.add_tile_def(state, "x", (floor_tile,))
        if DEBUG_MODE:
                TILE_SIZE = 1.0
                tiles.add_tile_def(state, "#", ("assets/img/tiles/plain.png",), (("rectangle", 0, 0, TILE_SIZE, TILE_SIZE),))

        # Special wall tile import helper.
        if not DEBUG_MODE:
                tiles_helpers.load_walls(state, "", floor_tile, "assets/img/tiles/bricks_walls.png")
        else:
                tiles_helpers.load_walls(state, "", floor_tile, "assets/img/tiles/grid_quad_walls.png")

        # The tile map is made as a list of lists.
        tiles.set_area(state,
                [ ['<', '-', '-', '>', '<', '-', '-', '-', '-', '>'],
                  ['(', '.', ',', ')', '(', '.', '_', '_', ',', ')'],
                  ['(', ')', '(', ')', '(', ')', '<', '>', '(', ')'],
                  ['[', ']', '(', ')', '(', ')', '(', ')', '[', ']'],
                  ['<', '-', ';', ')', '(', ')', '(', ':', '-', '>'],
                  ['(', 'x', 'x', ')', '(', ')', '(', '.', '_', ']'],
                  ['(', 'x', 'x', ':', ';', ')', '(', ':', '-', '>'],
                  ['(', '.', '_', '_', ',', ')', '(', 'x', 'x', ')'],
                  ['(', ':', '-', '-', ';', ':', ';', 'x', 'x', ')'],
                  ['[', '_', '_', '_', '_', '_', '_', '_', '_', ']']]
                  )

        collisions.set_handler(state, collision_handler)

        # Font is 16x32 px size
        text.load_font(state, FONT_NAME, "assets/img/fonts/%s.png" % FONT_NAME, 16, 32)

        user.set_data(state, USERDATA_SCORE, 0)
        text.create_text_entity(state, ENT_TEXT_SCORE, get_score_text(state), FONT_NAME, (0, 0, 0), screen_relative=True)

        user.set_data(state, USERDATA_HEALTH, 100)
        text.create_text_entity(state, ENT_TEXT_HEALTH, get_health_text(state), FONT_NAME,
                (screen_width_px / tile_size_px / 2.0, 0, 0), screen_relative=True)

        # We create the ENT_MAN entity which has 2 different sprite representations: standing and walking.
        # The idle sprite is the default sprite, since it starts with an asterisk (*).

        # The animation of the sprites is defined by a list of images that will be played in order,
        # then repeated, where the playback speed is defined individually for the sprite as well.

        # We define the starting coordinates (in "map coordinates", which are relative to tile size, not pixels!), here [1,1],
        # the rotation amount of the entity (0 here) and an offset for drawing the sprite to the actual position,
        # here [0.25, 0.25].
        MAN_SIZE = 1.0 / 2.0 # 64 px = 128 px tile / 2
        MAN_RADIUS = MAN_SIZE / 2.0
        MAN_OFFSET = -MAN_RADIUS # entity position defines the center of the sprite (sprite drawn left+lower of position)
        if not DEBUG_MODE:
                man_idle_textures = (
                                     "assets/img/sprites/man_idle/0.png",
                                     "assets/img/sprites/man_idle/1.png",
                                     "assets/img/sprites/man_idle/2.png",
                                     "assets/img/sprites/man_idle/3.png",
                                     "assets/img/sprites/man_idle/1.png",
                                     "assets/img/sprites/man_idle/0.png",
                                     "assets/img/sprites/man_idle/3.png",
                                     "assets/img/sprites/man_idle/2.png",
                                     )
                man_walk_textures = (
                                     "assets/img/sprites/man_walk/1.png",
                                     "assets/img/sprites/man_walk/2.png",
                                     "assets/img/sprites/man_walk/3.png",
                                     )
        else:
                man_idle_textures = (
                                     "assets/img/sprites/half_ball.png",
                                     )
                man_walk_textures = (
                                     "assets/img/sprites/half_ball.png",
                                     )

        entities.insert(state,
                        ENT_MAN,
                        {
                         "*idle": {
                                   "textures": man_idle_textures,
                                   "speed": 333.0,
                                   },
                         "walk": {
                                  "textures": man_walk_textures,
                                  "speed" : 150.0,
                                  },
                         },
                        (1.0, 1.0, 0),
                        (MAN_OFFSET, MAN_OFFSET),
                        collision=(("circle", MAN_RADIUS, MAN_RADIUS, MAN_RADIUS,),),
                        )

        # A pile of coins
        COINS_SIZE = 1.0 / 2.0 # 64 px = 128 px tile / 2
        COINS_RADIUS = COINS_SIZE / 2.0
        COINS_OFFSET = -COINS_RADIUS
        if not DEBUG_MODE:
                coin_textures = ("assets/img/sprites/coins/0.png",
                                 "assets/img/sprites/coins/1.png",
                                 "assets/img/sprites/coins/2.png",
                                 "assets/img/sprites/coins/1.png",
                                 )
        else:
                coin_textures = ("assets/img/sprites/half_ball_2.png",)
        entities.insert(state,
                        "%s_1" % (ENT_PREFIX_COINS),
                        {
                         "*": {
                               "textures": coin_textures,
                               "speed": 150.0,
                               },
                         },
                        (1.0, 7.0, 0),
                        (COINS_OFFSET, COINS_OFFSET),
                        collision=(("circle", COINS_RADIUS, COINS_RADIUS, COINS_RADIUS,),),
                        )

        GHOST_SIZE = 1.0
        GHOST_RADIUS = GHOST_SIZE / 2.0
        GHOST_OFFSET = -(GHOST_RADIUS)
        if not DEBUG_MODE:
                ghost_textures = (
                                  "assets/img/sprites/ghost/1.png",
                                  "assets/img/sprites/ghost/2.png",
                                  "assets/img/sprites/ghost/3.png",
                                  "assets/img/sprites/ghost/2.png",
                                )
        else:
                ghost_textures = ("assets/img/sprites/full_ball.png",)

        entities.insert(state,
                        ENT_GHOST,
                        {
                         "*": {
                                   "textures": ghost_textures,
                                   "speed": 200.0,
                                   },
                         },
                        (1.0, 3.0, 0),
                        (GHOST_OFFSET, GHOST_OFFSET), # sprite appears lower and more left of actual entity position
                        collision=(("circle", GHOST_RADIUS, GHOST_RADIUS, GHOST_RADIUS,),),
                        )

        # We add a mover that will translate joystick movement to moving the man around the area.
        # This particular mover needs the source of control, a factor for the strength of the movement,
        # the allowed range for the movement, what sprites to use for idle and moving state and if to
        # rotate the entity to the movement direction.
        controlled_mover.add(state,
                             ENT_MAN,
                             "joystick",
                             0.03,
                             (0, 0, 10.0, 10.0),
                             ("*idle", "walk"),
                             True
                             )

        view.set_viewer(state, relative_viewer.create(state, ENT_MAN))

        start_ghost_movement(state, None)

        # The state object is finished.
        return state
예제 #4
0
파일: demo_car.py 프로젝트: rkibria/yapyg
def create(screen_width_px, screen_height_px, tile_size_px):
        joystick_props = controls.get_joystick_properties()
        origin_xy = (0, joystick_props["h"] * screen_height_px)

        state = factory.create(screen_width_px, screen_height_px, tile_size_px, origin_xy)

        user.set_data(state, "n_barrels", 0)
        user.set_data(state, "n_barriers", 0)

        controls.add_joystick(state)
        controls.add_buttons(state, (("Fire", on_fire_button, "right", "big"),))

        floor_tile = "assets/img/tiles/dirt_ground.png"
        tiles.add_tile_def(state, ' ', (floor_tile,))
        tiles_helpers.load_walls(state, "", floor_tile, "assets/img/tiles/bricks_walls.png")
        tiles_helpers.load_walls(state, "/", "assets/img/tiles/grass.png", "assets/img/tiles/bricks_walls.png")
        tiles.add_tile_def(state, '|', (floor_tile, "assets/img/tiles/road-I.png",))
        tiles.add_tile_def(state, '~', (floor_tile, "assets/img/tiles/road-h.png",))
        tiles.add_tile_def(state, 'L', (floor_tile, "assets/img/tiles/road-cnr-bl.png",))
        tiles.add_tile_def(state, 'T', (floor_tile, "assets/img/tiles/road-cnr-tl.png",))
        tiles.add_tile_def(state, 'J', (floor_tile, "assets/img/tiles/road-cnr-br.png",))
        tiles.add_tile_def(state, 'j', (floor_tile, "assets/img/tiles/road-cnr-ur.png",))
        tiles.add_tile_def(state, '/', ("assets/img/tiles/grass.png",))
        tiles.add_tile_def(state, 't', ("assets/img/tiles/grass.png", "assets/img/tiles/tree.png"))
        tiles.set_area(state,
                 [
                  ['t', '/' , 't' , '/' , 't' , '/' , 't' , '/' , 't' , '/' , 't' , '/' , 't' , '/' , 't' , '/' , 't' , '/' , 't' , '/'],
                  ['/', '/.', '/_', '/_', '/_', '/_', '/_', '/_', '/_', '/_', '/_', '/_', '/_', '/_', '/_', '/_', '/_', '/_', '/,', '/'],
                  ['t', '/)', '<' , '-' , '-' , '-' , '-' , '-' , '-' , '-' , '-' , '-' , '-' , '-' , '-' , '-' , '-' , '>' , '/(', 't'],
                  ['/', '/)', '(' , 'T' , '~' , '~' , '~' , '~' , '~' , '~' , '~' , '~' , '~' , '~' , '~' , '~' , 'j' , ')' , '/(', '/'],
                  ['t', '/)', '(' , '|' , '.' , '_' , '_' , '_' , '_' , '_' , '_' , '_' , '_' , '_' , '_' , ',' , '|' , ')' , '/(', 't'],
                  ['/', '/)', '(' , '|' , ')' , '/<', '/-', '/-', '/-', '/-', '/-', '/-', '/-', '/-', '/>', '(' , '|' , ')' , '/(', '/'],
                  ['t', '/)', '(' , '|' , ')' , '/(', '/' , 't' , '/' , 't' , '/' , 't' , '/' , 't' , '/)', '(' , '|' , ')' , '/(', 't'],
                  ['/', '/)', '(' , '|' , ')' , '/(', 't' , '/' , '/' , '/' , '/' , '/' , '/' , '/' , '/)', '(' , '|' , ')' , '/(', '/'],
                  ['t', '/)', '(' , '|' , ')' , '/(', '/' , '/' , '/' , '/' , '/' , '/' , '/' , 't' , '/)', '(' , '|' , ')' , '/(', 't'],
                  ['/', '/)', '(' , '|' , ')' , '/(', 't' , '/' , '/' , '/' , '/' , '/' , '/' , '/' , '/)', '(' , '|' , ')' , '/(', '/'],
                  ['t', '/)', '(' , '|' , ')' , '/(', '/' , '/' , '/' , '/' , '/' , '/' , '/' , 't' , '/)', '(' , '|' , ')' , '/(', 't'],
                  ['/', '/)', '(' , '|' , ')' , '/(', 't' , '/' , '/' , '/' , '/' , '/' , '/' , '/' , '/)', '(' , '|' , ')' , '/(', '/'],
                  ['t', '/)', '(' , '|' , ')' , '/(', '/' , '/' , '/' , '/' , '/' , '/' , '/' , 't' , '/)', '(' , '|' , ')' , '/(', 't'],
                  ['/', '/)', '(' , '|' , ')' , '/(', 't' , '/' , 't' , '/' , 't' , '/' , 't' , '/' , '/)', '(' , '|' , ')' , '/(', '/'],
                  ['t', '/)', '(' , '|' , ')' , '/[', '/_', '/_', '/_', '/_', '/_', '/_', '/_', '/_', '/]', '(' , '|' , ')' , '/(', 't'],
                  ['/', '/)', '(' , '|' , ':' , '-' , '-' , '-' , '-' , '-' , '-' , '-' , '-' , '-' , '-' , ';' , '|' , ')' , '/(', '/'],
                  ['t', '/)', '(' , 'L' , '~' , '~' , '~' , '~' , '~' , '~' , '~' , '~' , '~' , '~' , '~' , '~' , 'J' , ')' , '/(', 't'],
                  ['/', '/)', '[' , '_' , '_' , '_' , '_' , '_' , '_' , '_' , '_' , '_' , '_' , '_' , '_' , '_' , '_' , ']' , '/(', '/'],
                  ['t', '/:', '/-', '/-', '/-', '/-', '/-', '/-', '/-', '/-', '/-', '/-', '/-', '/-', '/-', '/-', '/-', '/-', '/;', '/'],
                  ['/', 't' , '/' , 't' , '/' , 't' , '/' , 't' , '/' , 't' , '/' , 't' , '/' , 't' , '/' , 't' , '/' , 't' , '/' , 't'],
                  ['/', '/' , '/' , '/' , '/' , '/' , '/' , '/' , '/' , '/' , '/' , '/' , '/' , '/' , '/' , '/' , '/' , '/' , '/' , '/'],
                 ]
                 )
        play_area_origin = (2.0, 3.0)

        # text.load_font(state, FONT_NAME, "assets/img/fonts/%s.png" % FONT_NAME, 16, 32)

        entities.insert(state,
                        ENT_PLAYER_CAR,
                        {
                         "*": {
                                   "textures": (
                                                "assets/img/sprites/car/0.png",
                                                ),
                                   "speed": 0.0,
                                   },
                         "+": {
                                   "textures": (
                                                "assets/img/sprites/car/1.png",
                                                ),
                                   "speed": 0.0,
                                   },
                         "-": {
                                   "textures": (
                                                "assets/img/sprites/car/2.png",
                                                ),
                                   "speed": 0.0,
                                   },
                         },
                        (play_area_origin[0] + 1.5, play_area_origin[1] + 6.0, 0),
                        (-0.125, -0.25),
                        collision=(("rectangle", 0.0, 0.0, 0.25, 0.5),),
                        )

        view.set_viewer(state, relative_viewer.create(state, ENT_PLAYER_CAR))

        control_phys_mover.add(state,
                           ENT_PLAYER_CAR,
                           1.0,
                           0,
                           0,
                           0,
                           0,
                           0.9, # IDX_MOVERS_PHYSICAL_FRICTION
                           0.001, # YAPYG_STD_INELASTICITY,
                           0,
                           YAPYG_STD_ROT_FRICTION,
                           YAPYG_STD_ROT_DECAY,
                           YAPYG_STD_STICKYNESS,
                           dir_factor=0.005,
                           pos_accel=12.0,
                           neg_accel=4.0,
                           rest_sprite="*",
                           pos_sprite="+",
                           neg_sprite="-"
                           )

        for i in xrange(7):
                add_barrel(state, play_area_origin[0] + 0.5, play_area_origin[1] + 2.0 + 2.0 * i)

        for i in xrange(7):
                add_barrel(state, play_area_origin[0] + 15.25, play_area_origin[1] + 2.0 + 2.0 * i)

        for i in xrange(8):
                add_barrier(state, play_area_origin[0] + 0.5 - 0.125, play_area_origin[1] + 1.0 + 2.0 * i, 90.0)

        for i in xrange(8):
                add_barrier(state, play_area_origin[0] + 1.0 + 0.125 + 2.0 * i, play_area_origin[1] + 0.5, 0.0)

        for i in xrange(7):
                add_barrier(state, play_area_origin[0] + 1.0 + 0.125 + 2.0 * i, play_area_origin[1] + 15.25, 0.0)

        for i in xrange(7):
                add_barrel(state, play_area_origin[0] + 2.0 + 0.125 + 2.0 * i, play_area_origin[1] + 15.25)

        for i in xrange(6):
                add_barrel(state, play_area_origin[0] + 2.0 + 0.25 + 2.0 * i, play_area_origin[1] + 13.5)

        for i in xrange(6):
                add_barrier(state, play_area_origin[0] + 3.0 + 0.25 + 2.0 * i, play_area_origin[1] + 13.5, 0.0)

        for i in xrange(7):
                add_barrel(state, play_area_origin[0] + 2.0 + 0.125 + 2.0 * i, play_area_origin[1] + 0.5)

        for i in xrange(8):
                add_barrier(state, play_area_origin[0] + 15.25 - 0.125, play_area_origin[1] + 1.0 + 2.0 * i, 90.0)

        for i in xrange(1, 6):
                add_barrel(state, play_area_origin[0] + 2.25, play_area_origin[1] + 2.0 + 2.0 * i)
                add_barrel(state, play_area_origin[0] + 13.5, play_area_origin[1] + 2.0 + 2.0 * i)

        for i in xrange(6):
                add_barrier(state, play_area_origin[0] + 2.25 - 0.125, play_area_origin[1] + 3.0 + 2.0 * i, 90.0)
                add_barrier(state, play_area_origin[0] + 13.5 - 0.125, play_area_origin[1] + 3.0 + 2.0 * i, 90.0)

        for i in xrange(6):
                add_barrel(state, play_area_origin[0] + 2.25 + 2.0 * i, play_area_origin[1] + 2.25)
                add_barrier(state, play_area_origin[0] + 3.25 - 0.125 + 2.0 * i, play_area_origin[1] + 2.25, 0.0)

        timer.create(state, on_timer, 100)

        return state
예제 #5
0
def create(screen_width_px, screen_height_px, tile_size_px):
    joystick_props = controls.get_joystick_properties()
    origin_xy = (0, joystick_props["h"] * screen_height_px)

    state = factory.create(screen_width_px, screen_height_px, tile_size_px,
                           origin_xy)

    user.set_data(state, "n_barrels", 0)
    user.set_data(state, "n_barriers", 0)

    controls.add_joystick(state)
    controls.add_buttons(state, (("Fire", on_fire_button, "right", "big"), ))

    floor_tile = "assets/img/tiles/dirt_ground.png"
    tiles.add_tile_def(state, ' ', (floor_tile, ))
    tiles_helpers.load_walls(state, "", floor_tile,
                             "assets/img/tiles/bricks_walls.png")
    tiles_helpers.load_walls(state, "/", "assets/img/tiles/grass.png",
                             "assets/img/tiles/bricks_walls.png")
    tiles.add_tile_def(state, '|', (
        floor_tile,
        "assets/img/tiles/road-I.png",
    ))
    tiles.add_tile_def(state, '~', (
        floor_tile,
        "assets/img/tiles/road-h.png",
    ))
    tiles.add_tile_def(state, 'L', (
        floor_tile,
        "assets/img/tiles/road-cnr-bl.png",
    ))
    tiles.add_tile_def(state, 'T', (
        floor_tile,
        "assets/img/tiles/road-cnr-tl.png",
    ))
    tiles.add_tile_def(state, 'J', (
        floor_tile,
        "assets/img/tiles/road-cnr-br.png",
    ))
    tiles.add_tile_def(state, 'j', (
        floor_tile,
        "assets/img/tiles/road-cnr-ur.png",
    ))
    tiles.add_tile_def(state, '/', ("assets/img/tiles/grass.png", ))
    tiles.add_tile_def(
        state, 't',
        ("assets/img/tiles/grass.png", "assets/img/tiles/tree.png"))
    tiles.set_area(state, [
        [
            't', '/', 't', '/', 't', '/', 't', '/', 't', '/', 't', '/', 't',
            '/', 't', '/', 't', '/', 't', '/'
        ],
        [
            '/', '/.', '/_', '/_', '/_', '/_', '/_', '/_', '/_', '/_', '/_',
            '/_', '/_', '/_', '/_', '/_', '/_', '/_', '/,', '/'
        ],
        [
            't', '/)', '<', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-',
            '-', '-', '-', '-', '>', '/(', 't'
        ],
        [
            '/', '/)', '(', 'T', '~', '~', '~', '~', '~', '~', '~', '~', '~',
            '~', '~', '~', 'j', ')', '/(', '/'
        ],
        [
            't', '/)', '(', '|', '.', '_', '_', '_', '_', '_', '_', '_', '_',
            '_', '_', ',', '|', ')', '/(', 't'
        ],
        [
            '/', '/)', '(', '|', ')', '/<', '/-', '/-', '/-', '/-', '/-', '/-',
            '/-', '/-', '/>', '(', '|', ')', '/(', '/'
        ],
        [
            't', '/)', '(', '|', ')', '/(', '/', 't', '/', 't', '/', 't', '/',
            't', '/)', '(', '|', ')', '/(', 't'
        ],
        [
            '/', '/)', '(', '|', ')', '/(', 't', '/', '/', '/', '/', '/', '/',
            '/', '/)', '(', '|', ')', '/(', '/'
        ],
        [
            't', '/)', '(', '|', ')', '/(', '/', '/', '/', '/', '/', '/', '/',
            't', '/)', '(', '|', ')', '/(', 't'
        ],
        [
            '/', '/)', '(', '|', ')', '/(', 't', '/', '/', '/', '/', '/', '/',
            '/', '/)', '(', '|', ')', '/(', '/'
        ],
        [
            't', '/)', '(', '|', ')', '/(', '/', '/', '/', '/', '/', '/', '/',
            't', '/)', '(', '|', ')', '/(', 't'
        ],
        [
            '/', '/)', '(', '|', ')', '/(', 't', '/', '/', '/', '/', '/', '/',
            '/', '/)', '(', '|', ')', '/(', '/'
        ],
        [
            't', '/)', '(', '|', ')', '/(', '/', '/', '/', '/', '/', '/', '/',
            't', '/)', '(', '|', ')', '/(', 't'
        ],
        [
            '/', '/)', '(', '|', ')', '/(', 't', '/', 't', '/', 't', '/', 't',
            '/', '/)', '(', '|', ')', '/(', '/'
        ],
        [
            't', '/)', '(', '|', ')', '/[', '/_', '/_', '/_', '/_', '/_', '/_',
            '/_', '/_', '/]', '(', '|', ')', '/(', 't'
        ],
        [
            '/', '/)', '(', '|', ':', '-', '-', '-', '-', '-', '-', '-', '-',
            '-', '-', ';', '|', ')', '/(', '/'
        ],
        [
            't', '/)', '(', 'L', '~', '~', '~', '~', '~', '~', '~', '~', '~',
            '~', '~', '~', 'J', ')', '/(', 't'
        ],
        [
            '/', '/)', '[', '_', '_', '_', '_', '_', '_', '_', '_', '_', '_',
            '_', '_', '_', '_', ']', '/(', '/'
        ],
        [
            't', '/:', '/-', '/-', '/-', '/-', '/-', '/-', '/-', '/-', '/-',
            '/-', '/-', '/-', '/-', '/-', '/-', '/-', '/;', '/'
        ],
        [
            '/', 't', '/', 't', '/', 't', '/', 't', '/', 't', '/', 't', '/',
            't', '/', 't', '/', 't', '/', 't'
        ],
        [
            '/', '/', '/', '/', '/', '/', '/', '/', '/', '/', '/', '/', '/',
            '/', '/', '/', '/', '/', '/', '/'
        ],
    ])
    play_area_origin = (2.0, 3.0)

    # text.load_font(state, FONT_NAME, "assets/img/fonts/%s.png" % FONT_NAME, 16, 32)

    entities.insert(
        state,
        ENT_PLAYER_CAR,
        {
            "*": {
                "textures": ("assets/img/sprites/car/0.png", ),
                "speed": 0.0,
            },
            "+": {
                "textures": ("assets/img/sprites/car/1.png", ),
                "speed": 0.0,
            },
            "-": {
                "textures": ("assets/img/sprites/car/2.png", ),
                "speed": 0.0,
            },
        },
        (play_area_origin[0] + 1.5, play_area_origin[1] + 6.0, 0),
        (-0.125, -0.25),
        collision=(("rectangle", 0.0, 0.0, 0.25, 0.5), ),
    )

    view.set_viewer(state, relative_viewer.create(state, ENT_PLAYER_CAR))

    control_phys_mover.add(
        state,
        ENT_PLAYER_CAR,
        1.0,
        0,
        0,
        0,
        0,
        0.9,  # IDX_MOVERS_PHYSICAL_FRICTION
        0.001,  # YAPYG_STD_INELASTICITY,
        0,
        YAPYG_STD_ROT_FRICTION,
        YAPYG_STD_ROT_DECAY,
        YAPYG_STD_STICKYNESS,
        dir_factor=0.005,
        pos_accel=12.0,
        neg_accel=4.0,
        rest_sprite="*",
        pos_sprite="+",
        neg_sprite="-")

    for i in xrange(7):
        add_barrel(state, play_area_origin[0] + 0.5,
                   play_area_origin[1] + 2.0 + 2.0 * i)

    for i in xrange(7):
        add_barrel(state, play_area_origin[0] + 15.25,
                   play_area_origin[1] + 2.0 + 2.0 * i)

    for i in xrange(8):
        add_barrier(state, play_area_origin[0] + 0.5 - 0.125,
                    play_area_origin[1] + 1.0 + 2.0 * i, 90.0)

    for i in xrange(8):
        add_barrier(state, play_area_origin[0] + 1.0 + 0.125 + 2.0 * i,
                    play_area_origin[1] + 0.5, 0.0)

    for i in xrange(7):
        add_barrier(state, play_area_origin[0] + 1.0 + 0.125 + 2.0 * i,
                    play_area_origin[1] + 15.25, 0.0)

    for i in xrange(7):
        add_barrel(state, play_area_origin[0] + 2.0 + 0.125 + 2.0 * i,
                   play_area_origin[1] + 15.25)

    for i in xrange(6):
        add_barrel(state, play_area_origin[0] + 2.0 + 0.25 + 2.0 * i,
                   play_area_origin[1] + 13.5)

    for i in xrange(6):
        add_barrier(state, play_area_origin[0] + 3.0 + 0.25 + 2.0 * i,
                    play_area_origin[1] + 13.5, 0.0)

    for i in xrange(7):
        add_barrel(state, play_area_origin[0] + 2.0 + 0.125 + 2.0 * i,
                   play_area_origin[1] + 0.5)

    for i in xrange(8):
        add_barrier(state, play_area_origin[0] + 15.25 - 0.125,
                    play_area_origin[1] + 1.0 + 2.0 * i, 90.0)

    for i in xrange(1, 6):
        add_barrel(state, play_area_origin[0] + 2.25,
                   play_area_origin[1] + 2.0 + 2.0 * i)
        add_barrel(state, play_area_origin[0] + 13.5,
                   play_area_origin[1] + 2.0 + 2.0 * i)

    for i in xrange(6):
        add_barrier(state, play_area_origin[0] + 2.25 - 0.125,
                    play_area_origin[1] + 3.0 + 2.0 * i, 90.0)
        add_barrier(state, play_area_origin[0] + 13.5 - 0.125,
                    play_area_origin[1] + 3.0 + 2.0 * i, 90.0)

    for i in xrange(6):
        add_barrel(state, play_area_origin[0] + 2.25 + 2.0 * i,
                   play_area_origin[1] + 2.25)
        add_barrier(state, play_area_origin[0] + 3.25 - 0.125 + 2.0 * i,
                    play_area_origin[1] + 2.25, 0.0)

    timer.create(state, on_timer, 100)

    return state
예제 #6
0
def create(screen_width_px, screen_height_px, tile_size_px):
        BOTTOM_Y = 0.0
        BORDER_THICKNESS = 2.0
        BORDER_OFFSET = 0.1

        WALLS_COLOR = (0, 0.15, 1)

        joystick_props = controls.get_joystick_properties()
        origin_xy = (0, joystick_props["h"] * screen_height_px)
        state = factory.create(screen_width_px, screen_height_px, tile_size_px, origin_xy)

        controls.add_buttons(state, (("LEFT", on_left_button, "left", "big"),
                                     ("RIGHT", on_right_button, "right", "big")))

        tiles.add_tile_def(state, ".", ("assets/img/tiles/grid_double.png",))
        tiles.set_area(state, [["."] * 10] * 10)

        entities_helpers.create_screen_wall(state, "000_screenbox", BORDER_THICKNESS, BORDER_OFFSET, BOTTOM_Y,
                        top=False, # bottom=False,
                        color=WALLS_COLOR)

        ball_entity_name = "900_ball_0"

        BALL_SIZE = (1.0 / 4.0)
        CIRCLE_RADIUS = (BALL_SIZE / 2)
        filename = "assets/img/sprites/quarter_ball.png"
        mass = 1

        entities.insert(state,
                ball_entity_name,
                {
                        "*": {
                                "textures": (filename,),
                        },
                },
                (1.75, 4.3, 0,),
                collision=(("circle", CIRCLE_RADIUS, CIRCLE_RADIUS, CIRCLE_RADIUS,),))

        physical_mover.add(state,
                ball_entity_name,
                mass,
                0,
                0,
                0,
                YAPYG_STD_GRAVITY,
                YAPYG_STD_FRICTION,
                YAPYG_STD_INELASTICITY,
                0,
                YAPYG_STD_ROT_FRICTION,
                YAPYG_STD_ROT_DECAY,
                YAPYG_STD_STICKYNESS,
                )

        ENT_FLIPPER_1 = "000_flipper_1"
        FLIPPER_X = 1.0
        FLIPPER_Y = 1.0
        FLIPPER_WIDTH = 1.0
        FLIPPER_HEIGHT = 0.25
        FLIPPER_ROTATION_OFFSET = -0.5
        FLIPPER_COLOR = (1.0, 0.0, 0.0)
        entities.insert(state,
                              ENT_FLIPPER_1,
                              {
                               "*": {
                                     "textures": (("rectangle", FLIPPER_WIDTH, FLIPPER_HEIGHT,
                                                   FLIPPER_COLOR[0], FLIPPER_COLOR[1], FLIPPER_COLOR[2]),),
                                     },
                               },
                              (FLIPPER_X, FLIPPER_Y, 0.0),
                              collision=((("rectangle", 0.0, 0.0, FLIPPER_WIDTH, FLIPPER_HEIGHT),))
                              )

        flipper_mover.add(state, ENT_FLIPPER_1,
                                 FLIPPER_WIDTH, FLIPPER_HEIGHT,
                                 FLIPPER_ROTATION_OFFSET,
                                 360.0
                                 )

        return state