worked on star rendering
This commit is contained in:
parent
919393af35
commit
48d0d36400
BIN
resources/star.png
Normal file
BIN
resources/star.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.8 KiB |
25
src/main.py
25
src/main.py
@ -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()
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user