import pygame
import random
import sys
# Initialize Pygame
pygame.init()
# Screen dimensions
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption(“Shooter”)
# Colors
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
# Clock
clock = pygame.time.Clock()
# Player
player_size = 50
player_pos = [WIDTH // 2, HEIGHT – 2 * player_size]
player_speed = 10
# Enemy
enemy_size = 50
enemy_pos = [random.randint(0, WIDTH – enemy_size), 0]
enemy_speed = 10
# Bullet
bullet_size = 5
bullet_speed = 15
bullets = []
# Score
score = 0
font = pygame.font.Font(None, 36)
def draw_player():
pygame.draw.rect(screen, WHITE, (*player_pos, player_size, player_size))
def draw_enemy():
pygame.draw.rect(screen, RED, (*enemy_pos, enemy_size, enemy_size))
def draw_bullets():
for bullet in bullets:
pygame.draw.rect(screen, WHITE, (*bullet, bullet_size, bullet_size))
def update_bullets():
global bullets
for bullet in bullets:
bullet[1] -= bullet_speed
bullets = [bullet for bullet in bullets if bullet[1] > 0]
def detect_collision(player_pos, enemy_pos):
px, py = player_pos
ex, ey = enemy_pos
return (
ex < px < ex + enemy_size and ey < py < ey + enemy_size or
px < ex < px + player_size and py < ey < py + player_size
)
# Main game loop
running = True
while running:
screen.fill(BLACK)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
bullets.append([player_pos[0] + player_size // 2, player_pos[1]])
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and player_pos[0] > 0:
player_pos[0] -= player_speed
if keys[pygame.K_RIGHT] and player_pos[0] < WIDTH - player_size:
player_pos[0] += player_speed
draw_player()
draw_enemy()
draw_bullets()
# Update enemy
enemy_pos[1] += enemy_speed
if enemy_pos[1] > HEIGHT:
enemy_pos = [random.randint(0, WIDTH – enemy_size), 0]
score -= 1
# Update bullets
update_bullets()
# Check collisions
if detect_collision(player_pos, enemy_pos):
running = False # Game over
for bullet in bullets:
if detect_collision(bullet, enemy_pos):
bullets.remove(bullet)
enemy_pos = [random.randint(0, WIDTH – enemy_size), 0]
score += 1
# Display score
score_text = font.render(f”Score: {score}”, True, WHITE)
screen.blit(score_text, (10, 10))
pygame.display.flip()
clock.tick(30)
pygame.quit()
sys.exit()