Untitled
unknown
plain_text
3 months ago
2.6 kB
10
Indexable
pip install pygameimport pygame
import random
import math
# Init
pygame.init()
# Screen
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Space Shooter")
# Colors
WHITE = (255, 255, 255)
RED = (255, 50, 50)
BLUE = (50, 150, 255)
BLACK = (10, 10, 30)
# Clock
clock = pygame.time.Clock()
# Player
player_pos = [WIDTH // 2, HEIGHT - 60]
player_speed = 6
# Bullets
bullets = []
# Enemies
enemies = []
# Score
score = 0
font = pygame.font.SysFont("Arial", 24)
def draw_player(pos):
pygame.draw.polygon(screen, BLUE, [
(pos[0], pos[1] - 20),
(pos[0] - 15, pos[1] + 20),
(pos[0] + 15, pos[1] + 20)
])
def spawn_enemy():
x = random.randint(20, WIDTH - 20)
y = -20
speed = random.randint(2, 5)
return [x, y, speed]
def draw_enemy(enemy):
pygame.draw.circle(screen, RED, (enemy[0], enemy[1]), 15)
def draw_bullet(b):
pygame.draw.rect(screen, WHITE, (b[0] - 2, b[1], 4, 10))
def check_collision(a, b):
return math.hypot(a[0] - b[0], a[1] - b[1]) < 20
# Game loop
running = True
spawn_timer = 0
while running:
clock.tick(60)
screen.fill(BLACK)
# Events
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_pos[1]])
# Movement
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and player_pos[0] > 20:
player_pos[0] -= player_speed
if keys[pygame.K_RIGHT] and player_pos[0] < WIDTH - 20:
player_pos[0] += player_speed
# Spawn enemies
spawn_timer += 1
if spawn_timer > 30:
enemies.append(spawn_enemy())
spawn_timer = 0
# Update bullets
for b in bullets[:]:
b[1] -= 8
if b[1] < 0:
bullets.remove(b)
# Update enemies
for e in enemies[:]:
e[1] += e[2]
if e[1] > HEIGHT:
enemies.remove(e)
# Collisions
for e in enemies[:]:
for b in bullets[:]:
if check_collision(e, b):
enemies.remove(e)
bullets.remove(b)
score += 1
break
# Draw everything
draw_player(player_pos)
for b in bullets:
draw_bullet(b)
for e in enemies:
draw_enemy(e)
# Score display
text = font.render(f"Score: {score}", True, WHITE)
screen.blit(text, (10, 10))
pygame.display.flip()
pygame.quit()
Editor is loading...
Leave a Comment