You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
swarms/examples/workshops/aug_10/new_game.py

88 lines
2.0 KiB

import pygame
import random
import math
# Initialize Pygame and mixer
pygame.init()
pygame.mixer.init()
# Set up the display
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Psychedelic Soundscape Explorer")
# Colors
BLACK = (0, 0, 0)
# Player
player_pos = [WIDTH // 2, HEIGHT // 2]
player_radius = 20
# Sound zones
sound_zones = []
for _ in range(5):
sound_zones.append(
[
random.randint(0, WIDTH),
random.randint(0, HEIGHT),
random.randint(50, 150),
]
)
# Create sounds
sounds = [pygame.mixer.Sound(f"sound{i}.wav") for i in range(1, 6)]
# Main game loop
running = True
clock = pygame.time.Clock()
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Move player
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
player_pos[0] -= 5
if keys[pygame.K_RIGHT]:
player_pos[0] += 5
if keys[pygame.K_UP]:
player_pos[1] -= 5
if keys[pygame.K_DOWN]:
player_pos[1] += 5
# Clear the screen
screen.fill(BLACK)
# Draw and play sounds
for i, (x, y, radius) in enumerate(sound_zones):
distance = math.sqrt(
(player_pos[0] - x) ** 2 + (player_pos[1] - y) ** 2
)
if distance < radius:
intensity = 1 - (distance / radius)
sounds[i].set_volume(intensity)
sounds[i].play(-1)
# Create trippy color based on distance and sound
r = int(255 * math.sin(intensity * math.pi / 2))
g = int(255 * math.cos(intensity * math.pi / 2))
b = int(255 * (1 - intensity))
pygame.draw.circle(
screen, (r, g, b), (x, y), int(radius * intensity), 2
)
else:
sounds[i].stop()
# Draw player
pygame.draw.circle(
screen, (255, 255, 255), player_pos, player_radius
)
pygame.display.flip()
clock.tick(60)
pygame.quit()