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
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
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
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
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
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