From d0944508591e18cce7872182aae4c4985ebdd442 Mon Sep 17 00:00:00 2001 From: any Date: Mon, 11 May 2026 23:15:36 +0200 Subject: [PATCH] Regenbogen balls und darkmode --- main.go | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/main.go b/main.go index dca195d..838ed37 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,7 @@ package main import ( + "image/color" "sync" "time" @@ -81,10 +82,10 @@ func obstacleReflect(particlePos rl.Vector2, particleSpeed *rl.Vector2, obstacle } } -func physics(particleList *[MAXPOINTS]rl.Vector2, particleCount int, particleListKey *sync.Mutex, obstacles *([MAXOBSTACLES](*quad)), particleRadius *float32, obstacleCount *int) { +func physics(particleList *[MAXPOINTS]rl.Vector2, particleCount int, particleListKey *sync.Mutex, obstacles *([MAXOBSTACLES](*quad)), particleRadius *float32, obstacleCount *int, particleColor *[MAXPOINTS]rl.Color) { var particleSpeed = [MAXPOINTS]rl.Vector2{{0, -300}} //pixel pro Sekunde var timeIncrement float64 = 0.03 - var gravity rl.Vector2 = rl.Vector2{0, 0 * 300} + var gravity rl.Vector2 = rl.Vector2{0, 300} var newParticleList [MAXPOINTS]rl.Vector2 var newParticleSpeed [MAXPOINTS]rl.Vector2 var particleFriction float32 = 0.65 @@ -92,6 +93,7 @@ func physics(particleList *[MAXPOINTS]rl.Vector2, particleCount int, particleLis var masse float32 = 0.1 var electrostaticRange float32 = 50 //range wiie weit die kraftwirkung ist var electroStrength float32 = 4000 + var hue = [MAXPOINTS]float32{} for j := float64(0); j < 50; { var startTime time.Time = time.Now() @@ -137,6 +139,9 @@ func physics(particleList *[MAXPOINTS]rl.Vector2, particleCount int, particleLis } + hue[i]++ + (*particleColor)[i] = rl.ColorFromHSV(hue[i], 1.0, 1.0) + obstacleReflect(currentPositions[i], &particleSpeed[i], obstacles, particleRadius, obstacleCount) newParticleList[i] = rl.Vector2Add( @@ -188,7 +193,8 @@ func main() { var particleRowCount int = 40 var particleCount int = particleRowCount * particleColumnCount var particleRadius float32 = 5 - var particleColor rl.Color = rl.Black + var particleColorList [MAXPOINTS]rl.Color + particleColor := &particleColorList var particleListKey sync.Mutex var obstacleCount int = 0 @@ -212,16 +218,16 @@ func main() { obstacles[3] = &ceiling obstacleCount++ - go physics(&particleList, particleCount, &particleListKey, &obstacles, &particleRadius, &obstacleCount) + go physics(&particleList, particleCount, &particleListKey, &obstacles, &particleRadius, &obstacleCount, particleColor) for !rl.WindowShouldClose() { - rl.ClearBackground(rl.RayWhite) + rl.ClearBackground(color.RGBA{15, 16, 23, 1}) particleListKey.Lock() rl.BeginDrawing() for i := 0; i < particleCount; i++ { - rl.DrawCircleV(particleList[i], particleRadius, particleColor) + rl.DrawCircleV(particleList[i], particleRadius, (*particleColor)[i]) } particleListKey.Unlock()