We also want the gem to go back to the top if it touches the spaceship. If you had done Scratch before, you might remember the
if touching sprite command. In Pygame Zero, we'll use
if gem.colliderect(ship): or
if ship.colliderect(gem): (...both works the same).
if gem.colliderect(ship): gem.y = 0
if ship.colliderect(gem): gem.y = 0
Try it out!
It's not vey interesting to have the gem fall from the same spot everytime. In Introduction to Python, you learned to use the
random module. We'll use it here to randomize the x position of the gem.
Before we can use the
random module, we'll need to import it.
To assign a random x position, we use...
gem.x = random.randint(20, 780)
random.randint(20, 780) function will provide a random number between 20 to 780. This should be added whenever we return the gem to the top of the screen.
Your program should look like this now.
import pgzrun import random WIDTH = 800 HEIGHT = 600 ship = Actor('playership1_blue') ship.x = 370 ship.y = 550 gem = Actor('gemgreen') gem.x = random.randint(20, 780) gem.y = 0 def update(): if keyboard.left: ship.x = ship.x - 5 if keyboard.right: ship.x = ship.x + 5 gem.y = gem.y + 4 if gem.y > 600: gem.x = random.randint(20, 780) gem.y = 0 if gem.colliderect(ship): gem.x = random.randint(20, 780) gem.y = 0 def draw(): screen.fill((80,0,70)) gem.draw() ship.draw() pgzrun.go() # Must be last line