We want to add a timer that counts down to zero. When the time is up, we'll end the game and display the score.
Create another global variable and start it to 10, representing 10 seconds, at the start of the game.
timer = 10
Since the update() function runs 60 times per second, we will subtract 1/60th of a second in every update(). Since timer is a global variable, we'll need declare that it is global first.
global timer timer -= 1 / 60
Display the Timer
Just like the score, we will use the
screen.draw.text() function, but we'll draw the time in a different position. Again, this needs to be in draw().
screen.draw.text('Time: ' + str(timer), (330,10), color=(255,255,255), fontsize=30)
Ok. We got the timer now, but that's a lot of decimal places. Let's round the timer value to 2 decimal places before we convert it to a string. Change str(timer) into...
Much better now!
At this point...
Right now your code should look like this (new lines are highlighted in yellow)...
import pgzrun import random WIDTH = 800 HEIGHT = 600 background = Actor('grass') player = Actor('p3_front') player.x = 400 player.y = 300 coin = Actor('coingold') coin.x = random.randint(0, 800) coin.y = random.randint(0, 600) score = 0 timer = 10 def update(): global score global timer timer -= 1 / 60 if keyboard.up: player.y -= 5 if keyboard.down: player.y += 5 if keyboard.left: player.x -= 5 if keyboard.right: player.x += 5 if player.colliderect(coin): coin.x = random.randint(0, 800) coin.y = random.randint(0, 600) score += 1 def draw(): background.draw() player.draw() coin.draw() screen.draw.text('Score: ' + str(score), (15,10), color=(255,255,255), fontsize=30) screen.draw.text('Time: ' + str(round(timer, 2)), (330,10), color=(255,255,255), fontsize=30) pgzrun.go() # Must be last line