Steinfall Bug

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite Zurück  1, 2, 3

Neue Antwort erstellen

Starwar

BeitragDo, Dez 02, 2010 17:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe das nicht Komplett mitverfolgt, also ignorieren, wnen es nichts zur Sache tut.
Wie kann ich ein Objekt Frameunabhänig bewegen?
Also:
Physikalische Grundlage:
Geschwindigkeit v in px/sec
Vergangene Zeit (delta)t in sec
Bewegte Strecke (delta)s in px
v=s/t -> s=v*t
Beispiel:
Code: [AUSKLAPPEN]
;INIT
Graphics 800,600,32,2
ClsColor 255,255,255
Color 0,0,0
timer = CreateTimer(30) ;Timer

;---- EINSTELLUNGEN ----
speed#=50 ;pixel/sec
posY# = 0 ;pixel

;UMRECHNUNGEN
speed# = speed#/1000 ;sec->ms

;WICHTIG - DIREKT DEM ERSTEN DRUCHLAUF AUSFÜHREN
curTime%=MilliSecs()

;MAINLOOP
Repeat
   ;ZEITFRAGEN
   oldTime%=curTime% ;Zeit sichern für die Rechnung
   curTime% = MilliSecs() ;Neune Zeit bestimmen
   time% = curTime%-oldTime% ;Vergangene Zeit berechnen
   
   
   ;POSTION BERECHNEN
   posY#=posY#+(speed#*time%) ;Physik ;)
   
   ;ZEICHNEN
   Oval 200,Int(posY#),50,50
   Text 10,10,time+"ms * "+speed+"(px/ms) = "+(speed#*time%)+"px -> "+posY#
   
   
   ;GRAFIKKRAM
   WaitTimer(timer) ;Auf den Timer warten
   Flip 0
   Cls
Until KeyDown(1)
End

PSY

BeitragFr, Dez 03, 2010 0:52
Antworten mit Zitat
Benutzer-Profile anzeigen
hiho,

du sollst das waittimer nur 1x (!!) vor dem flip 0 verwenden.

also so in etwa (mainloop)
Code: [AUSKLAPPEN]

repeat
   spieler bewegen
   steine fallenlassen
   monster bewegen
   blabla.....
   waittimer (timer)
   flip 0
until irgendwas


l8er,
PSY
PSY LABS Games
Coders don't die, they just gosub without return

Raiden93

BeitragFr, Dez 03, 2010 4:01
Antworten mit Zitat
Benutzer-Profile anzeigen
ist es überhaupt ratsam den timer so zu nutzen bei meinem Scrolling?

Derzeitig sieht mein Scrolling folgend aus:
Code: [AUSKLAPPEN]
   If KeyDown(208) Then
      If map(px,py+1) < 1 Then 
         If aa < 1 Then
            move = 1
            aa = 1
         End If
      End If
   End If
   
   If move = 1 Then
      If aa > 0
         scrolly = scrolly + 2
         ppy = ppy + 2
         xo = xo + 1
         If xo = 16 Then aa = 0:py = py + 1:xo = 0
      End If
   End If


Wenn ihr eine bessere Idee habt währe es schon wen man mir weiter hilft Razz.


EDIT:
Das Problem mit den Timern habe ich noch leichter hin gekriegt Razz habe das fallen in eine

Code: [AUSKLAPPEN]
If millisecs()>=Timer_Fallen+1000
Timer_Fallen= MilliSecs()
    ;HIER DER Komplette Stein Fall Code
End If


Bedingung gepackt

Gehe zu Seite Zurück  1, 2, 3

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group