Freier Fall!

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

cleminator

Betreff: Freier Fall!

BeitragMo, Apr 17, 2006 16:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo! Ich wollte mal fragen wie ihr den Freienfall eines Kreise programmieren würdet!

Ich habs mal ganz billig gemacht!:
Code: [AUSKLAPPEN]

Graphics 800,600,32,1
SetBuffer BackBuffer()

Global x = 800/2- 5/2
Global y = 5
Global v#


Repeat
Cls




If MouseHit(1) Then
fallen = True
EndIf


If fallen = True
For i = 1 To 100
v = v + 0.001
Next
y = y + v
EndIf
Rect x,y,5,5



Flip
Until y > 600


bin aber nicht ganz zufrieden! Wollte mal fragen obs jemand Physik-Getreu programmiert hat!


Grüße Clemens[/code]

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Apr 17, 2006 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist schon 'fast' ok so. Was soll aber die For-Schleife da bewirken? Mach sie weg und addiere v mit einem größerem Wert! Dann mach noch y auch zu einer Float-Variable. Fertig!
 

cleminator

BeitragMo, Apr 17, 2006 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut hab ich gemacht! So jetzt hab ich noch programmiert, dass es wieder aufspickt. Das Problem: Es springt nur einmal auf! Was ist der Fehler? :


Code: [AUSKLAPPEN]

Graphics 800,600,32,1
SetBuffer BackBuffer()

Global x = 800/2- 5/2
Global y# = 5
Global v# = 1


Repeat
Cls




If MouseHit(1) Then
fallen = True
EndIf


If fallen = True

v = v + 0.1

y = y + v
EndIf



If y > 500
v = v/2  * (-1)
EndIf


Rect x,y,5,5





Flip
Until KeyHit(1)
End

5k41

BeitragMo, Apr 17, 2006 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
spiel ein bisschen mit dem wert rum, durch den du v teilst:
Code: [AUSKLAPPEN]

Graphics 800,600,32,1
SetBuffer BackBuffer()

Global x = 800/2- 5/2
Global y# = 5
Global v# = 1

Const jump#=1.5

Repeat
Cls




If MouseHit(1) Then
fallen = True
EndIf


If fallen = True

v = v + 0.1

y = y + v
EndIf



If y > 500
v = v/jump#  * (-1)
EndIf


Rect x,y,5,5





Flip
Until KeyHit(1)
End


MfG
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Apr 17, 2006 18:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem ist in folgenden Zeilen:

Code: [AUSKLAPPEN]
If y > 500
v = v/2  * (-1)
EndIf

Du halbierst die Geschwindigkeit nach einer 'Kollisions' am Boden. Wenn v=2 und y=499.5 ist, dann passiert folgendes...

y=y+v ergibt 501.5 dadurch wird die Kollisionsrechnung angeschmissen und v=-v/2 ergibt v=-1, das macht y=y+-1 ~~ y=y-1 ergibt 500.5 !!! Immer noch eine Kollision!!! Du musst also nach einr Kollision erst y auf eine Position setzen, wo es noch keine Kollision gab und dann erst eine Umrechnung machen.

edit1: @5k41, das wird nicht in jeder Situation zu erwünschten Ergebnis führen. Bei einer Umpositionierung (zB Startposition der Fallposition) kann es wieder zu dem Problem führen...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group