#set the stage stage.set_background("jupiter") #set gravity zero initially so platforms and everything else stays in place stage.set_gravity(0) #disable ceiling cause sprite needs to fly higher stage.disable_ceiling() #variables game_over = False coins = [] platforms = [] springs = [] # this is needed if you need a general variable and multi levels # I still kept this in case you add more levels later ground = "" player = "" door = "" #Level 1 def level_1(): global player, ground, door, platforms door = codesters.Rectangle(-225 ,-162.5, 50, 75, "orange") #need to set gravity off manually door.set_gravity_off() ground = codesters.Rectangle(0, -225, 500, 50, "brown") platform1 = codesters.Rectangle(-225, 0, 50, 25, "brown") platforms.append(platform1) platform2 = codesters.Rectangle(-50, 100, 50, 25, "brown") platforms.append(platform2) platform3 = codesters.Rectangle(-225, 175, 50, 25, "brown") platforms.append(platform3) platform4 = codesters.Rectangle(65, 150, 80, 50, "brown") platforms.append(platform4) platform5 = codesters.Rectangle(150, 25, 50, 25, "brown") platforms.append(platform5) platform6 = codesters.Rectangle(225, 125, 50, 25, "brown") platforms.append(platform6) platform7 = codesters.Rectangle(0, 125, 50, 400, "brown") platforms.append(platform7) #use for loops to make it faster for i in platforms: i.set_gravity_off() coin1 = codesters.Sprite("coin", -225, 25) coins.append(coin1) coin2 = codesters.Sprite("coin", -50, 125) coins.append(coin2) coin3 = codesters.Sprite("coin", -225, 200) coins.append(coin3) coin4 = codesters.Sprite("coin", 50, 185) coins.append(coin4) coin5 = codesters.Sprite("coin", 150, 50) coins.append(coin5) coin6 = codesters.Sprite("coin", 225, 150) coins.append(coin6) # for looops in a list to access items faster for i in coins: i.set_size(0.5) i.set_gravity_off() spring1 = codesters.Sprite("basketball", -125, -175) springs.append(spring1) spring2 = codesters.Sprite("basketball", 225, -175) springs.append(spring2) for i in springs: i.set_gravity_off() player = codesters.Sprite("alien1", -225, -170) player.set_size(0.3) player.can_jump = False #need to save location so player can jump back to original location player.location = "" stage.set_gravity(10) level_1() #player movement def move_right(): player.set_x_speed(5) stage.event_key("right", move_right) def move_left(): player.set_x_speed(-5) stage.event_key("left", move_left) #gravity def interval(): # apply friction player.set_x_speed(player.get_x_speed()*.7) if player.location != "": #makes the player fall after it reaches the end of the platform fall_width = (player.get_width() + player.location.get_width()) / 2 if abs(player.get_x() - player.location.get_x()) > fall_width: player.location = "" player.set_gravity_on() player.can_jump = False stage.event_interval(interval, 0.05) def landing(player, landing_pad): player.set_y_speed(0) player.set_bottom(landing_pad.get_top()) player.location = landing_pad player.set_gravity_off() player.can_jump = True #jump def move_up(): if player.can_jump == True: player.location = "" player.set_y_speed(12) player.set_gravity_on() player.can_jump = False stage.event_key("up", move_up) #collision function def player_collision(sprite, hit_sprite): if hit_sprite == ground: landing(sprite, hit_sprite) elif hit_sprite in coins: stage.remove_sprite(hit_sprite) coins.remove(hit_sprite) # when you collect all coins and door coor changes to green if len(coins) == 0: door.set_color("green") elif hit_sprite.get_color() == "green": stage.remove_sprite(sprite) You_Win = codesters.Text("You Win", 0, 0, "White") game_over = True You_Win.set_size(2) #make sure you dont go through the platform and they act as physics bariers elif hit_sprite in platforms: if sprite.get_y() > hit_sprite.get_top(): landing(sprite, hit_sprite) elif sprite.get_y() < hit_sprite.get_bottom(): sprite.set_top(hit_sprite.get_bottom()) sprite.set_y_speed(0) elif sprite.get_x() > hit_sprite.get_right(): sprite.set_left(hit_sprite.get_right()) sprite.set_x_speed(0) elif sprite.get_x() < hit_sprite.get_left(): sprite.set_right(hit_sprite.get_left()) sprite.set_x_speed(0) #when you touch the spring elif hit_sprite in springs and player.get_y_speed() < 0: sprite.location = "" sprite.set_y_speed(20) player.event_collision(player_collision)
  • Run Code
  • Show Console
  • Codesters How To (opens in a new tab)