Skip to content

kmf Race #4094

@keepmovingforward903-lab

Description

import pygame
import random

Initialize Pygame

pygame.init()

Screen

WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("KMF Race")

Clock

clock = pygame.time.Clock()
FPS = 60

Load images

car_img = pygame.image.load("car.png")
car_img = pygame.transform.scale(car_img, (50, 100))

enemy_car_img = pygame.image.load("enemy_car.png")
enemy_car_img = pygame.transform.scale(enemy_car_img, (50, 100))

road_img = pygame.image.load("road.png")
road_img = pygame.transform.scale(road_img, (WIDTH, HEIGHT))

obstacle_img = pygame.image.load("obstacle.png")
obstacle_img = pygame.transform.scale(obstacle_img, (50, 100))

boost_img = pygame.image.load("boost.png")
boost_img = pygame.transform.scale(boost_img, (40, 40))

Colors

WHITE = (255, 255, 255)
BLACK = (0, 0, 0)

Lanes (x positions)

lanes = [150, 375, 600]

Player

player_lane = 1
car_y = HEIGHT - 120
car_speed = 5
max_speed = 12
acceleration = 0.2
current_speed = car_speed

Enemy cars

enemies = []

Power-ups

powerups = []

Score

score = 0
high_score = 0
font = pygame.font.SysFont(None, 35)
game_over_font = pygame.font.SysFont(None, 75)

Functions

def draw_player():
screen.blit(car_img, (lanes[player_lane], car_y))

def draw_enemy(enemy):
screen.blit(enemy_car_img, (lanes[enemy[0]], enemy[1]))

def draw_powerup(powerup):
screen.blit(boost_img, (lanes[powerup[0]], powerup[1]))

def draw_score():
text = font.render(f"Score: {score} High Score: {high_score}", True, WHITE)
screen.blit(text, (10, 10))

def draw_game_over():
global high_score
high_score = max(high_score, score)
screen.fill(BLACK)
text = game_over_font.render("GAME OVER", True, WHITE)
score_text = font.render(f"Score: {score} High Score: {high_score}", True, WHITE)
screen.blit(text, (WIDTH//2 - text.get_width()//2, HEIGHT//2 - 50))
screen.blit(score_text, (WIDTH//2 - score_text.get_width()//2, HEIGHT//2 + 20))
pygame.display.update()
pygame.time.delay(3000)

Game Loop

running = True
while running:
screen.blit(road_img, (0, 0))

for event in pygame.event.get():
    if event.type == pygame.QUIT:
        running = False

# Player input
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and player_lane > 0:
    player_lane -= 1
if keys[pygame.K_RIGHT] and player_lane < 2:
    player_lane += 1
if keys[pygame.K_UP] and current_speed < max_speed:
    current_speed += acceleration
if keys[pygame.K_DOWN] and current_speed > 3:
    current_speed -= acceleration

# Spawn enemies
if len(enemies) == 0 or enemies[-1][1] > 200:
    lane_index = random.randint(0, 2)
    enemies.append([lane_index, -120])

# Spawn power-ups
if random.random() < 0.01:
    lane_index = random.randint(0, 2)
    powerups.append([lane_index, -40])

# Move enemies
for enemy in enemies:
    enemy[1] += current_speed
    draw_enemy(enemy)

# Move power-ups
for powerup in powerups:
    powerup[1] += current_speed
    draw_powerup(powerup)

# Collision detection with enemies
for enemy in enemies:
    if enemy[0] == player_lane and car_y < enemy[1] + 100 and car_y + 100 > enemy[1]:
        draw_game_over()
        score = 0
        enemies.clear()
        powerups.clear()
        current_speed = car_speed

# Collision detection with power-ups
for powerup in powerups:
    if powerup[0] == player_lane and car_y < powerup[1] + 40 and car_y + 100 > powerup[1]:
        score += 50
        current_speed = min(max_speed, current_speed + 2)
        powerups.remove(powerup)

# Remove off-screen enemies/power-ups
enemies = [e for e in enemies if e[1] < HEIGHT]
powerups = [p for p in powerups if p[1] < HEIGHT]

# Increase score
score += 1

# Draw player and score
draw_player()
draw_score()

pygame.display.update()
clock.tick(FPS)

pygame.quit()

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions