added prototype sound, proper delta time and changed some settings

This commit is contained in:
Looki2000 2023-05-14 01:44:23 +02:00
parent eaad3380ef
commit 1ab61186a9
2 changed files with 45 additions and 21 deletions

66
main.py
View File

@ -3,6 +3,7 @@ import pygame.gfxdraw
from PIL import Image from PIL import Image
import random import random
from math import cos, sin from math import cos, sin
#import time
##### CONFIG ##### ##### CONFIG #####
window_size = (1280, 720) window_size = (1280, 720)
@ -10,7 +11,7 @@ window_size = (1280, 720)
fps = 60 fps = 60
# pixel size in percentage of window height (0.0 - 1.0) # pixel size in percentage of window height (0.0 - 1.0)
pixel_size = 0.018 pixel_size = 0.015
# min and max distance from screen edge to pixel in window height percentage (0.0 - 1.0) # min and max distance from screen edge to pixel in window height percentage (0.0 - 1.0)
min_distribution_edge_dist = 0.1 min_distribution_edge_dist = 0.1
@ -29,11 +30,17 @@ stiffness = 40
# 0.0 - 1.0 # 0.0 - 1.0
damping = 0.08 damping = 0.08
audio = True
################## ##################
if audio:
import playsound
damping_multiplier = 1 - damping damping_multiplier = 1 - damping
target_delta_time = 1 / fps delta_time = 1 / fps
half_window_size = (window_size[0] / 2, window_size[1] / 2) half_window_size = (window_size[0] / 2, window_size[1] / 2)
@ -110,19 +117,22 @@ pygame.init()
window = pygame.display.set_mode(window_size) window = pygame.display.set_mode(window_size)
clock = pygame.time.Clock() clock = pygame.time.Clock()
# font
font = pygame.font.SysFont("Arial", 20)
############# another config stuff ############## ############# another config stuff ##############
rot_zoom_delay = 6 rot_zoom_delay = 6
rot_speed_increase = 0.2 rot_speed_increase = 0.2
zoom_speed_increase = 0.8 zoom_speed_increase = 2
zoom_speed = 0.04 zoom_speed = 0.04
fade_delay = 2.5 fade_delay = 1.6
fade_speed = 255*3 fade_speed = 255*4
zoom = 1 zoom = 1
@ -137,6 +147,9 @@ angle = 0
can_rot = False can_rot = False
#time_start = time.perf_counter() + 1
# main loop # main loop
while True: while True:
# events # events
@ -149,13 +162,14 @@ while True:
window.fill((0, 0, 0)) window.fill((0, 0, 0))
if fade_val > 0: if fade_val > 0:
if rot_zoom_delay > 0:
rot_zoom_delay -= target_delta_time
else: # zooming more and rotating
rot_speed += rot_speed_increase * target_delta_time
zoom_speed += zoom_speed_increase * target_delta_time
angle += rot_speed * target_delta_time if rot_zoom_delay > 0:
rot_zoom_delay -= delta_time
else: # zooming more and rotating
rot_speed += rot_speed_increase * delta_time
zoom_speed += zoom_speed_increase * delta_time
angle += rot_speed * delta_time
# rotate and zoom # rotate and zoom
rot_cos = cos(angle) rot_cos = cos(angle)
@ -166,13 +180,13 @@ while True:
# fade # fade
if fade_delay > 0: if fade_delay > 0:
fade_delay -= target_delta_time fade_delay -= delta_time
else: else:
fade_val -= fade_speed * target_delta_time fade_val -= fade_speed * delta_time
if fade_val < 0: if fade_val < 0:
continue continue
zoom *= 1 + zoom_speed * target_delta_time zoom *= 1 + zoom_speed * delta_time
# calculate pixel points positions # calculate pixel points positions
scaled_pixel_size_px = pixel_size_px * zoom scaled_pixel_size_px = pixel_size_px * zoom
@ -209,10 +223,14 @@ while True:
for pixel_idx, pixel in enumerate(pixels_pos_and_vel): for pixel_idx, pixel in enumerate(pixels_pos_and_vel):
# check if delay is over # check if delay is over
if pixel[2] > 0: if pixel[2] > 0:
pixel[2] -= target_delta_time pixel[2] -= delta_time
continue continue
## simulation (take target_delta_time into account) if audio:
playsound.playsound("prototype_sound.wav", False)
audio = False
## simulation (take delta_time into account)
# get pixel pos and vel # get pixel pos and vel
pos = pixel[0] pos = pixel[0]
@ -222,16 +240,16 @@ while True:
delta_pos = [pixels_target_pos[pixel_idx][0] - pos[0], pixels_target_pos[pixel_idx][1] - pos[1]] delta_pos = [pixels_target_pos[pixel_idx][0] - pos[0], pixels_target_pos[pixel_idx][1] - pos[1]]
# update velocity # update velocity
vel[0] += delta_pos[0] * stiffness * target_delta_time vel[0] += delta_pos[0] * stiffness * delta_time
vel[1] += delta_pos[1] * stiffness * target_delta_time vel[1] += delta_pos[1] * stiffness * delta_time
# damping # damping
vel[0] *= damping_multiplier vel[0] *= damping_multiplier
vel[1] *= damping_multiplier vel[1] *= damping_multiplier
# update pos # update pos
pos[0] += vel[0] * target_delta_time pos[0] += vel[0] * delta_time
pos[1] += vel[1] * target_delta_time pos[1] += vel[1] * delta_time
# update pixel pos and vel # update pixel pos and vel
pixels_pos_and_vel[pixel_idx][0:2] = [pos, vel] pixels_pos_and_vel[pixel_idx][0:2] = [pos, vel]
@ -283,8 +301,14 @@ while True:
# DEBUG draw dot # DEBUG draw dot
#pygame.draw.circle(window, (255, 0, 0), (round(pixel_draw_pos[0]), round(pixel_draw_pos[1])), 1) #pygame.draw.circle(window, (255, 0, 0), (round(pixel_draw_pos[0]), round(pixel_draw_pos[1])), 1)
#time_now = time.perf_counter()
#time_delta = time_now - time_start
#
## draw time
#text = font.render(f"Time: {time_delta:.2f}", True, (255, 255, 255))
#window.blit(text, (10, 10))
# update # update
pygame.display.update() pygame.display.update()
clock.tick(60) delta_time = clock.tick(60) / 1000

BIN
prototype_sound.wav Normal file

Binary file not shown.