Галактика из частиц на Питоне!

Просмотров: 242   |   Загружено: 2 нд.
icon
Ёлка
icon
0
icon
Скачать
iconПодробнее о видео
import pygame
import random
import math

# Инициализация Pygame
pygame.init()

# Размер окна
WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Галактика")

# Количество частиц
NUM_PARTICLES = 300

# Центр галактики
center_x, center_y = WIDTH // 2, HEIGHT // 2

# Создаем частицы с случайными радиусами и углами
particles = []
for _ in range(NUM_PARTICLES):
radius = random.uniform(50, 250)
angle = random.uniform(0, 2 * math.pi)
# Скорость зависит от радиуса (чем дальше - тем быстрее)
speed = (radius / 100) * 0.02


# Цветовая градация: внутри - голубой/белый, снаружи - желтый/красный
# Можно использовать интерполяцию цвета по радиусу
particles.append({
'radius': radius,
'angle': angle,
'speed': speed,
'color': None # зададим позже
})

clock = pygame.time.Clock()

def get_color_by_radius(radius):
# Радиус варьируется от 50 до 250
# В центре - бело-голубой (например, (200, 220, 255))
# На краю - желто-красный (например, (255, 150, 50))
t = (radius - 100) / (250) # нормализуем к [0,1]
# Интерполяция между двумя цветами
color_center = (200, 220, 255) # голубой/белый в центре
color_edge = (255, 150, 50) # желто-оранжевый на краю

r = int(color_center[0] + t * (color_edge[0] - color_center[0]))
g = int(color_center[1] + t * (color_edge[1] - color_center[1]))
b = int(color_center[2] + t * (color_edge[2] - color_center[2]))

return (r, g, b)

# Назначим цвет каждой частицы по радиусу
for p in particles:
p['color'] = get_color_by_radius(p['radius'])

running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False

# Заливаем фон черным
screen.fill((0, 0, 0))

for p in particles:
# Обновляем угол частицы
p['angle'] += p['speed']
# Вычисляем позицию частицы
x = center_x + p['radius'] * math.cos(p['angle'])
y = center_y + p['radius'] * math.sin(p['angle'])

# Светлость зависит от радиуса: ближе к центру - ярче
brightness_factor = max(50, int(255 - (p['radius'] / 250) * 200))
color = tuple(min(255, c + brightness_factor // 2) for c in p['color'])

# Рисуем частицу как маленький круг с учетом яркости для эффекта свечения
pygame.draw.circle(screen, color, (int(x), int(y)), 2)

pygame.display.flip()
clock.tick(60)

pygame.quit()

Похожие видео

Добавлено: 55 год.
Добавил:
  © 2019-2021
  Галактика из частиц на Питоне! - RusLar.Me