- 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()