import pygame
import random
from os import path
pygame.init()
clock = pygame.time.Clock()
width = 600
height = 800
FPS = 60
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption('Car Race')
img_dir = path.join(path.dirname(__file__), 'Images')
player_sprite = pygame.image.load(path.join(img_dir, 'Car.png')).convert_alpha()
background = pygame.image.load(path.join(img_dir, 'road1.png')).convert()
background_rect = background.get_rect()
sprites = pygame.sprite.Group()
enemies = pygame.sprite.Group()
# enemy
# enemy_sprite = pygame.image.load(path.join(img_dir, 'Audi.png')).convert_alpha()
# defining the regions
centerR1 = (185 / 2)
centerR2 = centerR1 + 185
centerR3 = centerR2 + 185
y = 0
class Player(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.transform.scale(player_sprite, (71, 168))
self.rect = self.image.get_rect()
self.rect.x = 265
self.rect.y = 540
self.speedx = 0
def update(self):
self.speedx = 0
keystate = pygame.key.get_pressed()
if keystate[pygame.K_a]:
self.speedx = -5
if keystate[pygame.K_d]:
self.speedx = 5
self.rect.x += self.speedx
if self.rect.x <= 22:
self.rect.x = 22
elif self.rect.x >= 600 - (71 + 22):
self.rect.x = 600 - (71 + 22)
class Enemies(pygame.sprite.Sprite):
def __init__(self, car_graphic):
pygame.sprite.Sprite.__init__(self)
# self.image = pygame.transform.scale(enemy_sprite, (197, 197))
self.original_image = car_graphic
self.image = self.original_image
self.rect = self.image.get_rect()
self.rect.x = random.randrange(22, width - 22)
self.rect.y = -500
self.speedy = 0
def update(self):
self.speedy = 14
self.rect.y += self.speedy
if self.rect.y > height:
self.rect.y = 0 - height
self.rect.x = random.randrange(0, width)
def loadEnemy():
car_names = ['Ambulance.png', 'Audi.png', 'Black_viper.png', 'Mini_truck.png', 'Mini_van.png', 'Police.png',
'taxi.png', 'truck.png']
car_files = []
for image in car_names:
car_files.append(pygame.image.load(path.join(img_dir, image)).convert_alpha())
return car_files
def createEnemyInstance():
enemy = Enemies(random.choice(enemy_graphic))
sprites.add(enemy)
enemies.add(enemy)
enemy_graphic = loadEnemy()
for i in range(5):
createEnemyInstance()
# player
player_car = Player()
sprites.add(player_car)
# enemy
enemy = Enemies(enemy_graphic)
enemies.add(enemy)
running = True
while running:
clock.tick(FPS)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
sprites.update()
enemies.update()
# Continuous scrolling background
rel_y = y % background.get_rect().height
screen.blit(background, (0, rel_y - background.get_rect().height))
if rel_y < height:
screen.blit(background, (0, rel_y))
y += 14
sprites.draw(screen)
enemies.draw(screen)
pygame.display.update()
pygame.quit()