worked on star rendering

This commit is contained in:
Linus Vogel 2025-11-29 20:52:07 +01:00
parent 919393af35
commit 48d0d36400
3 changed files with 54 additions and 6 deletions

BIN
resources/star.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -1,15 +1,34 @@
import sys 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.controller.window import ControlWindow
from src.projection.screen import Screen from src.projection.screen import Screen, Star
def cli_main(): 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() control_window = ControlWindow()
screen = Screen() screen = Screen(stars)
while control_window.is_running(): while control_window.is_running():
control_window.process_events() control_window.process_events()

View File

@ -1,20 +1,49 @@
import pygame 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: class Screen:
def __init__(self): def __init__(self, stars: list[Star]) -> None:
if not pygame.get_init(): if not pygame.get_init():
pygame.init() pygame.init()
self.screen = pygame.display.set_mode((800, 600)) self.screen = pygame.display.set_mode((800, 600))
self.clock = pygame.time.Clock() self.clock = pygame.time.Clock()
self.stars = stars
self.last = time()
def update(self): def update(self):
self.screen.fill((0, 0, 0)) 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() pygame.display.flip()
self.clock.tick(60) self.clock.tick(60)