Planeten Rotationen?

super danke erstmal für die infos aber das mit der geschwindigkeit versteh ich leider nicht wo kann ich in der schleife den festlegen um wieviele Pixel sich der Planet pro sekunde bewegt?
 
Das war ja nur ein Rechenbeispiel:
Ok nochmal, du hast eine Hauptschleife, pro Schleifen Durchlauf bewegt sich jeder Planet auf seiner Umlaufbahn um einen Pixel, d.h. der Mittelpunkt des Planeten liegt ja auf der Umlaufbahn und bewegt sich um ein Pixel weiter.
Wenn du jetzt 10 Pixel pro Sekunde haben willst, dann muss,soll,darf deine Schleife 10 mal pro Sekunde durchlaufen. Das heißt, daß die Schleife ca. 100ms dauern soll:

100 Millisekunden X 10 = 1000 Millisekunden = 1 Sekunde

Gruss Homer
 
Ok nochmal ganz langsam zum Mitschreiben, mit etwas pseudocode:
Code:
Dim running as Integer ' eine Abbruchvariable
Dim startzeit as Long    ' die Startzeit zum Schleifenbeginn
Dim endzeit as Long     ' die Endzeit am Ende der Schleife
Dim diffzeit as Long       ' die Dauer eines Schleifendurchlaufs

Dim geschwindigkeit as Integer ' so viel Millisekunden soll die Schleife min. 
                                                           ' brauchen

running=1
' die Hauptschleife
Do While running=1
  startzeit = GetMilliseconds()
  
  DrawPlanets     ' die Planeten um ein Pixel weiter "schieben" 

  If ende = True Then
    running=0
  End If
  endtzeit = GetMilliseconds()
  diffzeit = endzeit-startzeit
  If diffzeit < geschwindigkeit Then
    Sleep(geschwindigkeit - diffzeit)
  End If
Loop ' ende Der Schleife

So ungefähr sollte das aussehen, das ist natürlich nur ein Beispiel.

Gruss Homer
 
Was ist hier Falsch dran?


Code:
Public Sub Rotation()
 Dim i&, j&, Rad1&, Rad2&, Rad3&, Rad4, x, y, Rad5, Rad6, Rad7
 Dim running As Integer
Dim startzeit As Long
Dim endzeit As Long
Dim diffzeit As Long

Dim geschwindigkeit As Integer

    Rad1 = 200
    Rad2 = 25
    Rad3 = 80
    Rad4 = 140
    Rad5 = 300
    Rad6 = 30
    Rad7 = 25
    x = Haupt.Simulator.ScaleWidth / 2
    y = Haupt.Simulator.ScaleHeight / 2
    Haupt.Simulator.ScaleMode = 3
    
    running = 1
   
    Do
        For i = 0 To 300 * Atn(1) * Rad1 - 1
            Haupt.Erde.Move x + Rad1 * Sin(i / Rad1), y + Rad1 * Cos(i / Rad1)
            Haupt.Mond.Move Haupt.Erde.Left + Rad2 * Sin(i / Rad2), Haupt.Erde.Top + Rad2 * Cos(i / Rad2)
            Haupt.Merkur.Move x + Rad3 * Sin(i / Rad3), y + 10 + Rad3 * Cos(i / Rad3)
            Haupt.Venus.Move x + Rad4 * Sin(i / Rad4), y + Rad4 * Cos(i / Rad4)
            Haupt.Mars.Move (x - 20) + Rad5 * Sin(i / Rad5), y + Rad5 * Cos(i / Rad5)
            Haupt.Phobos.Move Haupt.Mars.Left + Rad6 * Sin(i / Rad6), Haupt.Mars.Top + Rad6 * Cos(i / Rad6)
            Haupt.Deimos.Move Haupt.Mars.Left + Rad7 * Sin(i / Rad7), Haupt.Mars.Top + Rad7 * Cos(i / Rad7)
            For j = 1 To 200
                DoEvents
            Next
        Next i
        DoEvents
    Loop
    Do While running = 1
     If ende = True Then
    running = 0
     startzeit = 1
     endzeit = 20
     diffzeit = endzeit - startzeit
     geschwindigkeit = 300
     
  End If

 
Loop
end sub
 
Zurück