Auto acceleration

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

Orbit

Betreff: Auto acceleration

BeitragFr, Aug 18, 2006 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
wie kann ich machen, dass wenn man die Beschleunigungstaste losläßt das Auto ein stückchen weiterfährt und dabei an Geschwindigkeit verliert, bis es stehen bleibt?

Code: [AUSKLAPPEN]

Strict

SetGraphicsDriver(D3D7Max2DDriver())
Graphics 800,600,32,100

Global AutoX:Float = GraphicsWidth()/2
Global AutoY:Float = GraphicsHeight()/2
Global AutoDreh:Float
Global AutoSpeed:Float

Global Auto:TImage = LoadImage("gfx/Auto.bmp")
MidHandleImage(Auto)

SetMaskColor(255,0,255)

Repeat
   Cls

   SetRotation(AutoDreh)
   DrawImage Auto,AutoX,AutoY

   SetRotation(0)

   If KeyDown(KEY_UP)    Then
      AutoSpeed :+.01
      AutoX :+ (AutoSpeed * Cos(AutoDreh))
      AutoY :+ (AutoSpeed * Sin(AutoDreh))
   ElseIf KeyDown(KEY_DOWN)  Then
      AutoSpeed :-.01
      AutoX :- (AutoSpeed * Cos(AutoDreh))
      AutoY :- (AutoSpeed * Sin(AutoDreh))
   EndIf
   If KeyDown(KEY_RIGHT) Then AutoDreh :+.8
   If KeyDown(KEY_LEFT)  Then AutoDreh :-.8

   Flip
   Delay(20)
Until KeyHit(KEY_ESCAPE)


fg,
Orbit

BladeRunner

Moderator

BeitragFr, Aug 18, 2006 16:15
Antworten mit Zitat
Benutzer-Profile anzeigen
in die mainloop

autospeed :*.95
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Orbit

BeitragFr, Aug 18, 2006 17:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
das funktioniert bei mir aus irgendeinen Grund nicht.

Code: [AUSKLAPPEN]

Strict

SetGraphicsDriver(D3D7Max2DDriver())
Graphics 800,600,32,100

Global AutoX:Float = GraphicsWidth()/2
Global AutoY:Float = GraphicsHeight()/2
Global AutoDreh:Float
Global AutoSpeed:Float

Global Auto:TImage = LoadImage("gfx/Auto.bmp")
MidHandleImage(Auto)

SetMaskColor(255,0,255)

Repeat
   Cls

   AutoSpeed :*.95

   SetRotation(AutoDreh)
   DrawImage Auto,AutoX,AutoY

   SetRotation(0)

   If KeyDown(KEY_UP)    Then
      AutoSpeed :+.07
      AutoX :+ (AutoSpeed * Cos(AutoDreh))
      AutoY :+ (AutoSpeed * Sin(AutoDreh))
   ElseIf KeyDown(KEY_DOWN)  Then
      AutoSpeed :-.07
      AutoX :- (AutoSpeed * Cos(AutoDreh))
      AutoY :- (AutoSpeed * Sin(AutoDreh))
   EndIf
   If KeyDown(KEY_RIGHT) Then AutoDreh :+.8
   If KeyDown(KEY_LEFT)  Then AutoDreh :-.8

   Flip
   Delay(20)
Until KeyHit(KEY_ESCAPE)


fg,
Orbit
 

klepto2

BeitragFr, Aug 18, 2006 17:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Das funktioniert sogar sehr gut, nur dein Code leider nicht Wink

Code: [AUSKLAPPEN]

Strict

SetGraphicsDriver(D3D7Max2DDriver())
Graphics 800,600,32,100

Global AutoX:Float = GraphicsWidth()/2
Global AutoY:Float = GraphicsHeight()/2
Global AutoDreh:Float
Global AutoSpeed:Float

'Global Auto:TImage = LoadImage("gfx/Auto.bmp")
'MidHandleImage(Auto)

SetMaskColor(255,0,255)

Repeat
   Cls

   

   SetRotation(AutoDreh)
   DrawRect AutoX,AutoY,20,20

   SetRotation(0)

   If KeyDown(KEY_UP)    Then
      AutoSpeed :+.07
   ElseIf KeyDown(KEY_DOWN)  Then
      AutoSpeed :-.07
   Else
    AutoSpeed :* .95
    If AutoSpeed < 0.01 Then AutoSpeed = 0
   EndIf
   If KeyDown(KEY_RIGHT) Then AutoDreh :+.8
   If KeyDown(KEY_LEFT) Then AutoDreh :- .8

    AutoX :- (AutoSpeed * Cos(AutoDreh))
     AutoY :- (AutoSpeed * Sin(AutoDreh))

   DrawText "AutoSpeed : " + AutoSpeed,20,20

   Flip
   Delay(20)
Until KeyHit(KEY_ESCAPE)


Zur Erklärung: Dein Fehler war es, das du dieAutoPosition (AutoX und AutoY) nur während des KeyDowns geupdated hast. Also sobald jemand keine Taste gedrückt hat, so wurde auch nicht x und y neuerrechnet und blieb somit beim alten Wert und das auto blieb sofort stehen.

Mfg klepto2
Matrix Screensaver
Console Modul für BlitzMax
KLPacker Modul für BlitzMax

HomePage : http://www.brsoftware.de.vu

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group