Adding boundaries




Now that we've got our race car and we can drive it around, we've found that we're able to drive it right off of the screen! To stop this, we want to add some sort of boundary to our game that will stop this from happening.

Here's the new code:

import pygame

pygame.init()

display_width = 800
display_height = 600

black = (0,0,0)
white = (255,255,255)
red = (255,0,0)

car_width = 73

gameDisplay = pygame.display.set_mode((display_width,display_height))
pygame.display.set_caption('A bit Racey')
clock = pygame.time.Clock()

carImg = pygame.image.load('racecar.png')

def car(x,y):
    gameDisplay.blit(carImg,(x,y))



def game_loop():
    x = (display_width * 0.45)
    y = (display_height * 0.8)

    x_change = 0

    gameExit = False

    while not gameExit:

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                gameExit = True

            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_LEFT:
                    x_change = -5
                if event.key == pygame.K_RIGHT:
                    x_change = 5

            if event.type == pygame.KEYUP:
                if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                    x_change = 0

        x += x_change

        gameDisplay.fill(white)
        car(x,y)

        if x > display_width - car_width or x < 0:
            gameExit = True
            
        
        pygame.display.update()
        clock.tick(60)



game_loop()
pygame.quit()
quit()

First, we see that we now have a new variable:

car_width = 73

This variable is used in the rest of the program to know where both edges of the car are. The car's "location" really just means the location of the top left pixel of the car. Because of this, it is helpful to also know where the right side is.

Next, we see that we've changed the "main loop" quite a bit. Now, we're calling this the game loop, and instead of the variable being crashed that exits it, it is a "gameExit" that will exit the loop. Take note of the variables that have now been moved within this loop.

Next up, we see the next major change is:

        if x > display_width - car_width or x < 0:
            gameExit = True

This is our logic for whether or not the car has crossed over the left and right boundaries.

The next tutorial:






  • Introduction to PyGame
  • Displaying images with PyGame
  • Moving an image around in PyGame
  • Adding boundaries
  • Displaying text to PyGame screen
  • Drawing objects with PyGame
  • Crashing
  • PyGame Score
  • Drawing Objects and Shapes in PyGame
  • Creating a start menu
  • PyGame Buttons, part 1, drawing the rectangle
  • PyGame Buttons, part 2, making the buttons interactive
  • PyGame Buttons, part 3, adding text to the button
  • PyGame Buttons, part 4, creating a general PyGame button function
  • PyGame Buttons, part 5, running functions on a button click
  • Converting PyGame to an executable
  • Adding a pause function to our game and Game Over
  • PyGame Icon
  • Sounds and Music with PyGame