text: """
  Platformer Game
  """
  import arcade
  
  # Constants
  SCREEN_WIDTH = 1000
  SCREEN_HEIGHT = 650
  SCREEN_TITLE = "Platformer"
  
  # Constants used to scale our sprites from their original size
  CHARACTER_SCALING = 0.5
  TILE_SCALING = 0.5
  COIN_SCALING = 0.25
  
  # Movement speed of player, in pixels per frame
  PLAYER_MOVEMENT_SPEED = 5
  GRAVITY = 1
  PLAYER_JUMP_SPEED = 15
  
  
  class MyGame(arcade.Window):
      """
      Main application class.
      """
  
      def __init__(self):
  
          # Call the parent class and set up the window
          super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_TITLE)
  
          # These are 'lists' that keep track of our sprites. Each sprite should
          # go into a list.
          self.coin_list = None
          self.wall_list = None
          self.player_list = None
  
          # Separate variable that holds the player sprite
          self.player_sprite = None
  
          # Our physics engine
          self.physics_engine = None
  
          arcade.set_background_color(arcade.csscolor.CORNFLOWER_BLUE)
  
      def setup(self):
          """ Set up the game here. Call this function to restart the game. """
          # Create the Sprite lists
          self.player_list = arcade.SpriteList()
          self.wall_list = arcade.SpriteList()
          self.coin_list = arcade.SpriteList()
  
          # Set up the player, specifically placing it at these coordinates.
          self.player_sprite = arcade.Sprite("../images/character.png", CHARACTER_SCALING)
          self.player_sprite.center_x = 64
          self.player_sprite.center_y = 96
          self.player_list.append(self.player_sprite)
  
          # Create the ground
          # This shows using a loop to place multiple sprites horizontally
          for x in range(0, 1250, 64):
              wall = arcade.Sprite("../images/grassMid.png", TILE_SCALING)
              wall.center_x = x
              wall.center_y = 32
              self.wall_list.append(wall)
  
          # Put some crates on the ground
          # This shows using a coordinate list to place sprites
          coordinate_list = [[512, 96],
                             [256, 96],
                             [768, 96]]
  
          for coordinate in coordinate_list:
              # Add a crate on the ground
              wall = arcade.Sprite("../images/boxCrate_double.png", TILE_SCALING)
              wall.position = coordinate
              self.wall_list.append(wall)
  
          # Use a loop to place some coins for our character to pick up
          for x in range(128, 1250, 256):
              coin = arcade.Sprite("../images/coin_01.png", COIN_SCALING)
              coin.center_x = x
              coin.center_y = 96
              self.coin_list.append(coin)
  
          # Create the 'physics engine'
          self.physics_engine = arcade.PhysicsEnginePlatformer(self.player_sprite,
                                                               self.wall_list,
                                                               GRAVITY)
  
      def on_draw(self):
          """ Render the screen. """
  
          # Clear the screen to the background color
          arcade.start_render()
  
          # Draw our sprites
          self.wall_list.draw()
          self.coin_list.draw()
          self.player_list.draw()
  
      def on_key_press(self, key, modifiers):
          """Called whenever a key is pressed. """
  
          if key == arcade.key.UP or key == arcade.key.W:
              if self.physics_engine.can_jump():
                  self.player_sprite.change_y = PLAYER_JUMP_SPEED
          elif key == arcade.key.LEFT or key == arcade.key.A:
              self.player_sprite.change_x = -PLAYER_MOVEMENT_SPEED
          elif key == arcade.key.RIGHT or key == arcade.key.D:
              self.player_sprite.change_x = PLAYER_MOVEMENT_SPEED
  
      def on_key_release(self, key, modifiers):
          """Called when the user releases a key. """
  
          if key == arcade.key.LEFT or key == arcade.key.A:
              self.player_sprite.change_x = 0
          elif key == arcade.key.RIGHT or key == arcade.key.D:
              self.player_sprite.change_x = 0
  
      def update(self, delta_time):
          """ Movement and game logic """
  
          # Call update on all sprites (The sprites don't do much in this
          # example though.)
          self.physics_engine.update()
  
  
  def main():
      """ Main method """
      window = MyGame()
      window.setup()
      arcade.run()
  
  
  if __name__ == "__main__":
      main()
  