0

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?

Nemo
  • 1,124
  • 2
  • 16
  • 39

0 Answers0