I tried to make a game that's similar to this T-Rex Game. My code below was sourced from various answers on StackOverflow (mostly from Rabbid76).
import pygame, sys, random, time, math
from pygame.locals import *
pygame.init()
# Screen Dimensions
SCREEN_WIDTH = 1200
SCREEN_HEIGHT = 750
# Displaying the Screen
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
# Importing Background and Characters
background = pygame.image.load('Background.png').convert()
background_width = background.get_width()
background_quantity = math.ceil(SCREEN_WIDTH / background_width) + 1
dog = pygame.image.load('Dog.png').convert_alpha()
dog_Y = 520
velocity_Y = 30
velocity_X = 10
rock = pygame.image.load('Rock.png').convert_alpha()
scroll = 0
FPS = 50
clock = pygame.time.Clock()
start = time.time()
obstacles = []
pressed_keys = pygame.key.get_pressed()
def make_objects(obj):
obj_Y = random.randint(450, 550)
return [obj, [SCREEN_WIDTH, obj_Y]]
# Main Loop
while True:
obstacles_rects = []
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
pressed_keys = pygame.key.get_pressed()
if pressed_keys[K_SPACE]:
if dog_Y > 350:
dog_X += velocity_X
dog_Y -= velocity_Y
else:
dog_X += velocity_X/2
dog_Y += 2*velocity_Y
else:
dog_Y = 520
if dog_X > SCREEN_WIDTH - dog.get_width():
dog_X = 0
if dog_Y > 520:
dog_Y = 520
dog_rect = dog.get_rect(topleft=[dog_X, dog_Y])
now = time.time()
if now - start > 3:
obstacles.append(make_objects(rock))
start = now
# Make background scrolling
scroll -= 12
if abs(scroll) > background_width:
scroll = 0
for i in range (background_quantity):
screen.blit(background, (i * background_width + scroll, 0))
screen.blit(dog, (dog_X, dog_Y))
for i in range(len(obstacles)):
screen.blit(obstacles[i][0], (obstacles[i][1][0], obstacles[i][1][1]))
obstacles_rects.append(obstacles[i][0].get_rect(topleft=[obstacles[i][1][0], obstacles[i][1][1]]))
obstacles[i][1][0] -= 5
collide_list = dog_rect.collidelistall(obstacles_rects)
if collide_list:
PAUSE/FREEZE THE DISPLAY SCREEN
pygame.display.update()
clock.tick(FPS)
How can I pause or freeze the screen display and a Game Over' message appears when the dog hits a rock obstacle?