In this game, you control a paddle and bounce around a ball to break bricks. Some bricks are harder to break than others and give more points, you have 3 lives.
View an example here: Brick Breaker!
You control the paddle with arrow keys, in order to play the game, copy and paste the code into your python file and run the code. Enjoy!
Copy and paste the code for FREE!:
import pygame import sys import random # Initialize Pygame pygame.init() # Set up the screen WIDTH, HEIGHT = 800, 600 screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption("Brick Breaker") # Set up colors WHITE = (255, 255, 255) BLACK = (0, 0, 0) RED = (255, 0, 0) GREEN = (0, 255, 0) BLUE = (0, 0, 255) YELLOW = (255, 255, 0) # Set up the paddle paddle_width, paddle_height = 100, 20 paddle_x = WIDTH // 2 - paddle_width // 2 paddle_y = HEIGHT - 50 paddle_speed = 7 # Set up the ball ball_radius = 10 ball_x = WIDTH // 2 ball_y = HEIGHT // 2 ball_dx = 5 * random.choice((1, -1)) ball_dy = -5 ball_speed = 7 # Set up the bricks brick_width, brick_height = 80, 30 num_bricks_rows = 5 num_bricks_cols = 10 bricks = {} for i in range(num_bricks_rows): for j in range(num_bricks_cols): brick_x = j * (brick_width + 5) + 30 brick_y = i * (brick_height + 5) + 30 brick_rect = pygame.Rect(brick_x, brick_y, brick_width, brick_height) if random.random() < 0.05: bricks[(brick_x, brick_y)] = "multi-hit" elif random.random() < 0.05: bricks[(brick_x, brick_y)] = "extra-points" else: bricks[(brick_x, brick_y)] = None # Set up the power-ups power_ups = [] # Set up the game variables score = 0 lives = 3 game_over = False # Set up the game font font = pygame.font.Font(None, 36) # Function to display text on screen def draw_text(text, color, x, y): text_surface = font.render(text, True, color) text_rect = text_surface.get_rect() text_rect.center = (x, y) screen.blit(text_surface, text_rect) # Function to create a new power-up def create_power_up(x, y): power_up_rect = pygame.Rect(x, y, 20, 20) power_up_rect.type = random.choice(("paddle_size", "extra_ball")) power_ups.append(power_up_rect) # Main game loop while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if not game_over: # Move the paddle keys = pygame.key.get_pressed() if keys[pygame.K_LEFT] and paddle_x > 0: paddle_x -= paddle_speed if keys[pygame.K_RIGHT] and paddle_x < WIDTH - paddle_width: paddle_x += paddle_speed # Move the ball ball_x += ball_dx ball_y += ball_dy # Ball collision with walls if ball_x - ball_radius < 0 or ball_x + ball_radius > WIDTH: ball_dx *= -1 if ball_y - ball_radius < 0: ball_dy *= -1 # Ball collision with paddle if ball_y + ball_radius > paddle_y and paddle_x < ball_x < paddle_x + paddle_width: ball_dy *= -1 # Ball collision with bricks for brick_pos, special in list(bricks.items()): brick_rect = pygame.Rect(brick_pos[0], brick_pos[1], brick_width, brick_height) if brick_rect.colliderect(pygame.Rect(ball_x - ball_radius, ball_y - ball_radius, ball_radius * 2, ball_radius * 2)): if special == "multi-hit": bricks[brick_pos] = "hit" elif special == "extra-points": score += 50 else: del bricks[brick_pos] score += 10 ball_dy *= -1 # Ball collision with power-ups for power_up in power_ups: if power_up.colliderect(pygame.Rect(ball_x - ball_radius, ball_y - ball_radius, ball_radius * 2, ball_radius * 2)): if power_up.type == "paddle_size": paddle_width += 20 elif power_up.type == "extra_ball": extra_ball = True power_ups.remove(power_up) # Check for game over if ball_y > HEIGHT: lives -= 1 if lives <= 0: game_over = True else: ball_x = WIDTH // 2 ball_y = HEIGHT // 2 ball_dx = 5 * random.choice((1, -1)) ball_dy = -5 # Clear the screen screen.fill(BLACK) # Draw the paddle pygame.draw.rect(screen, WHITE, (paddle_x, paddle_y, paddle_width, paddle_height)) # Draw the ball pygame.draw.circle(screen, WHITE, (ball_x, ball_y), ball_radius) # Draw the bricks for brick_pos, special in bricks.items(): if special == "multi-hit": pygame.draw.rect(screen, RED, pygame.Rect(brick_pos[0], brick_pos[1], brick_width, brick_height)) elif special == "extra-points": pygame.draw.rect(screen, YELLOW, pygame.Rect(brick_pos[0], brick_pos[1], brick_width, brick_height)) else: pygame.draw.rect(screen, random.choice((RED, GREEN, BLUE)), pygame.Rect(brick_pos[0], brick_pos[1], brick_width, brick_height)) # Draw the power-ups for power_up in power_ups: pygame.draw.rect(screen, random.choice((RED, GREEN, BLUE, YELLOW)), power_up) # Draw the score and lives draw_text(f"Score: {score}", WHITE, 70, 30) draw_text(f"Lives: {lives}", WHITE, WIDTH - 70, 30) # Check for win if len(bricks) == 0: draw_text("You Win!", WHITE, WIDTH // 2, HEIGHT // 2) game_over = True # Check for game over if game_over: draw_text("Game Over", WHITE, WIDTH // 2, HEIGHT // 2) # Update the display pygame.display.flip() # Cap the frame rate pygame.time.Clock().tick(60)