In this 2 player game, you and another player fight as red or blue blocks. You control the red block with WASD keys and the blue block with arrow keys. Red clicks Z to shoot and blue clicks L to shoot. There is a 3-second delay after each shot.

Click here for the Demonstration.

In order to play, copy the code below into your Python file and start the code. You control red with WASD and use Z to shoot, and you control blue with arrow keys and L to shoot.

You can copy the code for FREE!:

import pygame
import sys
import time

# Initialize Pygame
pygame.init()

# Set up the screen
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("Red VS Blue")

# Load the colosseum image
colosseum_image = pygame.image.load("colosseum.jpg")  # Replace "colosseum.jpg" with the actual file name
colosseum_image = pygame.transform.scale(colosseum_image, (width, height))

# Set up the players
player1 = pygame.Rect(50, height // 2 - 25, 50, 50)
player2 = pygame.Rect(width - 100, height // 2 - 25, 50, 50)

# Set up the lasers
red_lasers = []
blue_lasers = []

# Set up colors
red = (255, 0, 0)
blue = (0, 0, 255)

# Set up fonts
font = pygame.font.Font(None, 36)

# Set up the clock
clock = pygame.time.Clock()

# Set up the reload delay
reload_delay = 3000  # in milliseconds
last_shot_time_red = pygame.time.get_ticks()
last_shot_time_blue = pygame.time.get_ticks()

# Main game loop
game_over = False
winner = None

while not game_over:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

        # Handle shooting
        if event.type == pygame.KEYDOWN:
            current_time = pygame.time.get_ticks()

            if event.key == pygame.K_z and current_time - last_shot_time_red >= reload_delay:
                last_shot_time_red = current_time
                red_lasers.append(pygame.Rect(player1.x + 50, player1.y + 20, 15, 5))

            elif event.key == pygame.K_l and current_time - last_shot_time_blue >= reload_delay:
                last_shot_time_blue = current_time
                blue_lasers.append(pygame.Rect(player2.x - 15, player2.y + 20, 15, 5))

    # Move players
    keys = pygame.key.get_pressed()
    if keys[pygame.K_a]:
        player1.x -= 5
    if keys[pygame.K_d]:
        player1.x += 5
    if keys[pygame.K_w]:
        player1.y -= 5
    if keys[pygame.K_s]:
        player1.y += 5

    if keys[pygame.K_LEFT]:
        player2.x -= 5
    if keys[pygame.K_RIGHT]:
        player2.x += 5
    if keys[pygame.K_UP]:
        player2.y -= 5
    if keys[pygame.K_DOWN]:
        player2.y += 5

    # Move lasers
    red_lasers = [laser.move(8, 0) for laser in red_lasers]
    blue_lasers = [laser.move(-8, 0) for laser in blue_lasers]

    # Check for collisions
    for laser in red_lasers:
        if player2.colliderect(laser):
            winner = "Red Player"
            game_over = True
            break

    for laser in blue_lasers:
        if player1.colliderect(laser):
            winner = "Blue Player"
            game_over = True
            break

    # Remove eliminated opponent
    if winner == "Red Player":
        player2 = pygame.Rect(0, 0, 0, 0)
    elif winner == "Blue Player":
        player1 = pygame.Rect(0, 0, 0, 0)

    # Draw everything
    screen.blit(colosseum_image, (0, 0))  # Draw the colosseum image as the background
    pygame.draw.rect(screen, red, player1)
    pygame.draw.rect(screen, blue, player2)

    # Draw red lasers
    for laser in red_lasers:
        pygame.draw.polygon(screen, red, [(laser.left, laser.centery), (laser.right, laser.top), (laser.right, laser.bottom)])

    # Draw blue lasers
    for laser in blue_lasers:
        pygame.draw.polygon(screen, blue, [(laser.right, laser.centery), (laser.left, laser.top), (laser.left, laser.bottom)])

    # Update the display
    pygame.display.flip()

    # Cap the frame rate
    clock.tick(30)

# Display the victory screen
screen.fill((255, 255, 255))
text = font.render(f"{winner} wins!", True, (0, 0, 0))
text_rect = text.get_rect(center=(width // 2, height // 2))
screen.blit(text, text_rect)
pygame.display.flip()

# Wait for a few seconds before quitting
time.sleep(5)
pygame.quit()
sys.exit()