diff --git a/resources/star.png b/resources/star.png new file mode 100644 index 0000000..89e671f Binary files /dev/null and b/resources/star.png differ diff --git a/src/main.py b/src/main.py index bd3f11a..87d34bd 100644 --- a/src/main.py +++ b/src/main.py @@ -1,15 +1,34 @@ import sys -from time import sleep +import json +from random import random, seed +from pygame.transform import scale +import pygame from src.controller.window import ControlWindow -from src.projection.screen import Screen +from src.projection.screen import Screen, Star def cli_main(): + seed(43) + image = pygame.image.load('resources/star.png') + + stars = [ + Star(**{ + "x": random(), + "y": random(), + "alpha": random() * 360, + "rot": random() * 360, + "scale": random() * 0.5 + 0.25, + "offset": random(), + "image": image + }) + for _ in range(4) + ] + control_window = ControlWindow() - screen = Screen() + screen = Screen(stars) while control_window.is_running(): control_window.process_events() diff --git a/src/projection/screen.py b/src/projection/screen.py index d1e74b7..11eafb4 100644 --- a/src/projection/screen.py +++ b/src/projection/screen.py @@ -1,20 +1,49 @@ import pygame -from random import random as rand +from pygame import transform, gfxdraw, Vector2 +from math import sin, cos, pi +from time import time, sleep +from random import random +class Star: + def __init__(self, x: int, y: int, alpha: float, rot: float, scale: float, offset: float, image: pygame.Surface): + self.x = x + self.y = y + self.rot = rot + self.alpha = alpha + self.scale = scale + self.offset = offset + self.image = image class Screen: - def __init__(self): + def __init__(self, stars: list[Star]) -> None: if not pygame.get_init(): pygame.init() self.screen = pygame.display.set_mode((800, 600)) self.clock = pygame.time.Clock() + self.stars = stars + self.last = time() def update(self): self.screen.fill((0, 0, 0)) + now = time() + delta = now - self.last + self.last = now + for star in self.stars: + star.alpha += star.rot * delta + #rotated = transform.rotate(star.image, star.alpha) + #scaled = transform.smoothscale_by(rotated, star.scale) + scaled = transform.rotozoom(star.image, star.alpha, star.scale) + (w, h) = scaled.get_size() + pos = (star.x*self.screen.get_width() - w/2, star.y*self.screen.get_height() - h/2) + self.screen.blit(scaled, pos) - self.screen.blit(pygame.image.load('resources/test.png'), (200,200)) + #self.screen.blit(scaled, dest=pos) + + overlay = pygame.surface.Surface((800, 600), depth=32) + overlay.set_alpha(128) + self.screen.blit(overlay, (0, 0)) pygame.display.flip() self.clock.tick(60)