Seite 1 von 2

Debeschleunigung der Beschleunigung^^

Verfasst: 09.06.2008 19:28
von Kaisky007
Das ist viel schwieriger als es sich anhört, habe 10 Stunden gebraucht!!!!

Code: Alles auswählen

If KeyboardPushed(#PB_Key_Left)
  BeschleunigungX - BBX
  BBX - 0.3
Else
  BBX = 1
EndIf

If KeyboardPushed(#PB_Key_Right)
  BeschleunigungX + BBX
  BBX - 0.3
Else
  BBX = 1
EndIf

If KeyboardPushed(#PB_Key_Right) And KeyboardPushed(#PB_Key_Left)
  BBX = 1
EndIf

If KeyboardPushed(#PB_Key_Up)
  BeschleunigungY - BBY
  BBY - 0.3
Else
  BBY = 1
EndIf

If KeyboardPushed(#PB_Key_Down)
  BeschleunigungY + BBY
  BBY - 0.3
Else
  BBY = 1
EndIf

If KeyboardPushed(#PB_Key_Down) And KeyboardPushed(#PB_Key_Up)
  BBY = 1
EndIf

IchX + (BeschleunigungX / 4)
IchY + (BeschleunigungY / 4)

If BeschleunigungX > 0 
  If KeyboardPushed(#PB_Key_Right)
  Else
    BeschleunigungX - 2
    If KeyboardPushed(#PB_Key_Left)
      BeschleunigungX - 1
    EndIf
  EndIf
EndIf

If BeschleunigungX < 0 
  If KeyboardPushed(#PB_Key_Left)
  Else
    BeschleunigungX + 2
    If KeyboardPushed(#PB_Key_Right)
      BeschleunigungX + 1
    EndIf
  EndIf
EndIf

If BeschleunigungY > 0 
  If KeyboardPushed(#PB_Key_Down)
  Else
    BeschleunigungY - 2
    If KeyboardPushed(#PB_Key_Up)
      BeschleunigungY - 1
    EndIf
  EndIf
EndIf
If BeschleunigungY < 0 
  If KeyboardPushed(#PB_Key_Up)
  Else
    BeschleunigungY + 2
    If KeyboardPushed(#PB_Key_Down)
      BeschleunigungY + 1
    EndIf
  EndIf
EndIf

If KeyboardPushed(#PB_Key_Right) And KeyboardPushed(#PB_Key_Left)
  If BeschleunigungX > 0
    BeschleunigungX - 1
  EndIf
EndIf

If KeyboardPushed(#PB_Key_Right) And KeyboardPushed(#PB_Key_Left)
  If BeschleunigungX < 0
    BeschleunigungX + 1
  EndIf
EndIf

If KeyboardPushed(#PB_Key_Down) And KeyboardPushed(#PB_Key_Up)
  If BeschleunigungY > 0
    BeschleunigungY - 1
  EndIf
EndIf

If KeyboardPushed(#PB_Key_Down) And KeyboardPushed(#PB_Key_Up)
  If BeschleunigungY < 0
    BeschleunigungY + 1
  EndIf
EndIf

If BeschleunigungX = 0
  BBX = 1
EndIf

If BeschleunigungY = 0
  BBY = 1
EndIf

If IchX < 0
  BeschleunigungX = 0
  IchX = 0
  BBX = 1
EndIf

If IchX > 566
  BeschleunigungX = 0
  IchX = 566
  BBX = 1
EndIf

If IchY < 0
  BeschleunigungY = 0
  IchY = 0
  BBY = 1
EndIf

If IchY > 568
  BeschleunigungY = 0
  IchY = 568
  BBY = 1
EndIf

If BBX < 0.0001
  BBX = 0.0001
EndIf

If BBY < 0.0001
  BBY = 0.0001
EndIf
Da passiert das: IchX/IchY wird beschleunigt durch die Beschleunigung die aber immer langsamer beschleunigt durch die debeschleunigung des BBX/BBY !
Verstanden?
Nochmal Langsam.
Es wird beschleunigt.
aber es beschleunigt immer langsammer weil mehr reibung entsteht.
Auto = IchX/IchY
Geschwindigkeit = BeschleunigungX/BeschleunigungY
Reibung = BBX/BBY (abkürzung für "BeschleunigungBeschleunigung"

Verfasst: 09.06.2008 20:07
von STARGÅTE
Also eine beschleunigkeit Beschleunigung nenn man in der Physik "Ruck"
Der Ruck ist also die drei-fache Ableitung des Ortes oder die einfache ableitung der Beschleunigung.

Nun zu meiner Frage: Hast du auch n Anwendungs Beispiel für dein Code ?

Denn derzeit ist er zimlich speziell für dich gehalten oder ?

Verfasst: 09.06.2008 20:20
von Kaisky007
Also mein Spiel(unten unterm strich)
oder hier:

Code: Alles auswählen


InitSprite
InitKeyboard

OpenScreen(800,600,16,"Öhöhöö")

Repeat

ClearScreen(RGB(0,0,0))
 
StartDrawing(ScreenOutput())

FrontColor(RGB(0,0,0))

Box(IchX,IchY,32,32)

StopDrawing()

ExamineKeyboard()

If KeyboardPushed(#PB_Key_Left) 
  BeschleunigungX - BBX 
  BBX - 0.3 
Else 
  BBX = 1 
EndIf 

If KeyboardPushed(#PB_Key_Right) 
  BeschleunigungX + BBX 
  BBX - 0.3 
Else 
  BBX = 1 
EndIf 

If KeyboardPushed(#PB_Key_Right) And KeyboardPushed(#PB_Key_Left) 
  BBX = 1 
EndIf 

If KeyboardPushed(#PB_Key_Up) 
  BeschleunigungY - BBY 
  BBY - 0.3 
Else 
  BBY = 1 
EndIf 

If KeyboardPushed(#PB_Key_Down) 
  BeschleunigungY + BBY 
  BBY - 0.3 
Else 
  BBY = 1 
EndIf 

If KeyboardPushed(#PB_Key_Down) And KeyboardPushed(#PB_Key_Up) 
  BBY = 1 
EndIf 

IchX + (BeschleunigungX / 4) 
IchY + (BeschleunigungY / 4) 

If BeschleunigungX > 0 
  If KeyboardPushed(#PB_Key_Right) 
  Else 
    BeschleunigungX - 2 
    If KeyboardPushed(#PB_Key_Left) 
      BeschleunigungX - 1 
    EndIf 
  EndIf 
EndIf 

If BeschleunigungX < 0 
  If KeyboardPushed(#PB_Key_Left) 
  Else 
    BeschleunigungX + 2 
    If KeyboardPushed(#PB_Key_Right) 
      BeschleunigungX + 1 
    EndIf 
  EndIf 
EndIf 

If BeschleunigungY > 0 
  If KeyboardPushed(#PB_Key_Down) 
  Else 
    BeschleunigungY - 2 
    If KeyboardPushed(#PB_Key_Up) 
      BeschleunigungY - 1 
    EndIf 
  EndIf 
EndIf 
If BeschleunigungY < 0 
  If KeyboardPushed(#PB_Key_Up) 
  Else 
    BeschleunigungY + 2 
    If KeyboardPushed(#PB_Key_Down) 
      BeschleunigungY + 1 
    EndIf 
  EndIf 
EndIf 

If KeyboardPushed(#PB_Key_Right) And KeyboardPushed(#PB_Key_Left) 
  If BeschleunigungX > 0 
    BeschleunigungX - 1 
  EndIf 
EndIf 

If KeyboardPushed(#PB_Key_Right) And KeyboardPushed(#PB_Key_Left) 
  If BeschleunigungX < 0 
    BeschleunigungX + 1 
  EndIf 
EndIf 

If KeyboardPushed(#PB_Key_Down) And KeyboardPushed(#PB_Key_Up) 
  If BeschleunigungY > 0 
    BeschleunigungY - 1 
  EndIf 
EndIf 

If KeyboardPushed(#PB_Key_Down) And KeyboardPushed(#PB_Key_Up) 
  If BeschleunigungY < 0 
    BeschleunigungY + 1 
  EndIf 
EndIf 

If BeschleunigungX = 0 
  BBX = 1 
EndIf 

If BeschleunigungY = 0 
  BBY = 1 
EndIf 

If IchX < 0 
  BeschleunigungX = 0 
  IchX = 0 
  BBX = 1 
EndIf 

If IchX > 566 
  BeschleunigungX = 0 
  IchX = 566 
  BBX = 1 
EndIf 

If IchY < 0 
  BeschleunigungY = 0 
  IchY = 0 
  BBY = 1 
EndIf 

If IchY > 568 
  BeschleunigungY = 0 
  IchY = 568 
  BBY = 1 
EndIf 

If BBX < 0.0001 
  BBX = 0.0001 
EndIf 

If BBY < 0.0001 
  BBY = 0.0001 
EndIf
FlipBuffers()

Until KeyboardPushed(1)

Code: Alles auswählen


Kann aber sein (eigentlich sogar wahrscheinlich)
dass ich etwas vergessen habe oder ein tippfehler gemacht habe, bin nicht an meinen computer, d. h. ich habe kein pure basic und habe das jetzt so getippt. Ich konnte es nicht testen und habe alles aus dem gedächnis gemacht. (ich bin ja noch anfänger)

Verfasst: 09.06.2008 20:23
von Kaisky007
Hoppla, das am schluss von der programmierung ist normal in der text am schluss ist im code.
Leider fehlt irgendwie das edit dingsda an diesem computer

Verfasst: 09.06.2008 20:31
von Kaeru Gaman
...ich dachte, man nennt das "Impuls"...

so sachen gehen unter Zuhilfenahme der Physikformelsammlung leichter,
aber da du ja wohl noch Sek1 bist, ist das bestimmt ein fettes Stück arbeit gewesen...

Verfasst: 09.06.2008 21:25
von Macros
Impuls ist mv also Masse mal Geschwindigkeit.
Damit kannst du zum Beispiel berechen, was passiert,
wenn du einen Stein hinten aus dem Boot wirfst

Verfasst: 09.06.2008 23:24
von Kiffi
Macros hat geschrieben:Damit kannst du zum Beispiel berechen, was passiert,
wenn du einen Stein hinten aus dem Boot wirfst
lass mich raten: Der Stein geht unter?

Grüße ... Kiffi :mrgreen:

Verfasst: 09.06.2008 23:32
von Kaeru Gaman
achja.. das is schon so lang her... man kann sich echt nich alles merken... *achselzuck*

Verfasst: 09.06.2008 23:50
von STARGÅTE
Daher auch "Impulsantrieb"

das ist halt nix anderes als das man hinten Masse mit einer Geschwindigkeit aus dem Raumschiff schießt, sodass sich das Raumschiff in die gegen Richtung bewegt, also nach vorn.

Verfasst: 10.06.2008 08:47
von Macros
Und insofern hat auch eine Rakete einen Impulsantrieb ;)

Allerdings gibts es schon wirkliche Impulsantriebe, die nur Materie ausstoßen, ohne Verbrennungsprozess. Hält lang, hab aber bei weitem nicht soviel Kraft wie in den Sci-fi Serien