In meiner Simulation wird die Farbe des Planeten zufällig ausgewählt, wenn er erstellt wird. Der zurückgelassene Weg soll die gleiche Farbe wie sein Planet haben. Das funktioniert gut, wenn es nur einen Planeten gibt, aber wenn ein neuer Planet hinzugefügt wird, hat die Spur für jeden Planeten die gleiche Farbe wie die des neuen Planeten. Hier sind einige Screenshots, um zu demonstrieren, was ich meine: https://imgur.com/a/EVh5oVB.net Gravitationssimulation - Probleme beim Verlassen von Spuren hinter Planeten
Ich jeden Planeten eine Spur die gleiche Farbe wie sich selbst haben, wenn das Sinn macht. Hier sind die relevanten Teile meines Codes:
Public Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles picSpace.Paint
For Each sun In sunsList
e.Graphics.FillEllipse(Brushes.Yellow, CInt(sun.positionX - 10), CInt(sun.positionY - 30), 20, 20)
Next
For Each planet In planetsList
Dim planetFill As Brush = New SolidBrush(planet.colour)
Dim trailColour As Pen = New Pen(planet.colour)
e.Graphics.FillEllipse(planetFill, planet.displayX - 5, planet.displayY - 5, 10, 10)
For count As Integer = 0 To counter
e.Graphics.DrawEllipse(trailColour, trail(0, count), trail(1, count), 1, 1)
Next
Next
End Sub
Sub Position()
planet.displayX = Math.Round(planet.positionX)
planet.displayY = Math.Round(planet.positionY)
trail(0, counter) = planet.displayX
trail(1, counter) = planet.displayY
counter += 1
ReDim Preserve trail(1, counter)
End Sub
Private Sub space_Click(sender As Object, e As EventArgs) Handles picSpace.Click
If hsbSimulationSpeed.Value > 0 Then
Timer1.Enabled = True
End If
If chkAddPlanets.Checked = True Then
planet = New Body
numberOfPlanets += 1
planet.colour = GetRandomColour()
planet.positionX = MousePosition.X
planet.positionY = MousePosition.Y - 25
planet.velocityX = txtVelocityX.Text * 1000
planet.velocityY = txtVelocityY.Text * 1000
planetsList.Add(planet)
ElseIf chkAddSuns.Checked = True Then
sun = New Body
numberOfSuns += 1
sun.positionX = MousePosition.X
sun.positionY = MousePosition.Y
sun.mass = hsbSunMass.Value * 5 * (10^29)
sunsList.Add(sun)
End If
End Sub
Function GetRandomColour() As Color
Dim rand As New Random
Return Color.FromArgb(rand.Next(0, 256), rand.Next(0, 256), rand.Next(0,
256))
End Function
Gibt es eine einfache Möglichkeit, dies zu beheben, oder werde ich brauchen, um vollständig die Art und Weise Pfade erzeugt werden ändern?
Ich verstehe nicht, was die for-Schleife tut –