nächste Frage: Wie kriege ich so etwas wie einen Bremsweg?

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Hendy

Betreff: nächste Frage: Wie kriege ich so etwas wie einen Bremsweg?

BeitragSo, Feb 25, 2007 16:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Embarassed nächste Frage: Wie kriege ich so etwas wie einen Bremsweg?
ich habmir gedacht so etwas wie wenn man langsam die geschwindigkeit reduziert aber ichweiss nicht wie ich das machen soll.... mein Code ist so:
Code: [AUSKLAPPEN]

Graphics 1024,768,16,1
SetBuffer BackBuffer()



;-------------------

Global x#,y#
Global geschwindigkeit=5

;Spieler in allen winkeln speichern
Dim player(359)
TFormFilter 0
For winkel = 0 To 359
player(winkel)=LoadImage("player.bmp")
RotateImage player(winkel),winkel
MaskImage player(winkel),0,0,255
Next

x=300
y=300



;-----------------------------HAUPTSCHLEIFE--------------------------------
;--------------------------------------------------------------------------
While Not KeyHit(1)

If KeyDown(203) Then winkel= winkel -5
If KeyDown(205) Then winkel= winkel +5
If KeyDown(200) Then
   x=x + Cos(Winkel)*geschwindigkeit
   y=y + Sin(winkel)*geschwindigkeit
EndIf


If winkel > 359 Then winkel = 0
If winkel < 0 Then winkel = 359

If x > 1023 Then x = 1
If x < 1 Then x = 1023
If y > 767 Then y = 1
If y < 1 Then y = 767


MidHandle player(winkel)
DrawImage player(winkel),x,y

Flip
Cls
Wend
End
Smile Very Happy Very HappyD
  • Zuletzt bearbeitet von Hendy am So, Feb 25, 2007 16:58, insgesamt einmal bearbeitet

the FR3AK

BeitragSo, Feb 25, 2007 16:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Mach einfach wenn gebremst wird z.B. Geschwindigkeit=Geschwindigkeit-1
dann wird das Auto immer langsamer Smile und danach machst du noch

If Geschwindigkeit=<0 then Geschwindigkeit=0

Eingeproggt

BeitragSo, Feb 25, 2007 16:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich mach auch grad sowas, bin aber zu faul, jetzt alles der Reihe nach zu erklären. Nur soviel: Hast du in Physik schon was über Weg - Geschwindigkeit - Beschleunigung gehört? Sind ganz einfache Formeln, einfach in BB schreiben!
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

C0der

BeitragSo, Feb 25, 2007 16:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
speed = Input("speed (px/sec): ")
void = Input("Enter zum Bremsen .. ")
bremsen = 1
speed_left = speed
While Not KeyHit(1)
If speed_left > 0 Then speed_left = speed_left - bremsen
Print "Speed: " + speed_left
bremsen = bremsen + 10
Wend
  • Zuletzt bearbeitet von C0der am So, Feb 25, 2007 16:49, insgesamt 2-mal bearbeitet
 

Hendy

BeitragSo, Feb 25, 2007 16:47
Antworten mit Zitat
Benutzer-Profile anzeigen
@Eingeproggt ich bin 8 Klasse Realschule und 14 Jahre alt....
Smile Very Happy Very HappyD

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Feb 25, 2007 16:51
Antworten mit Zitat
Benutzer-Profile anzeigen
zB so:
Code: [AUSKLAPPEN]
Graphics 1024,768,16,1
SetBuffer BackBuffer()



;Types

Type schuss
  Field schuss_x
  Field schuss_y
End Type


;-------------------

Global x#=300,y#=300
Global geschwindigkeit#=5

;Spieler in allen winkeln speichern
Dim player(359)
TFormFilter 0
For winkel = 0 To 359
player(winkel)=LoadImage("data\white.png")
RotateImage player(winkel),winkel
;MaskImage player(winkel),0,0,255
Text 0,0,Int(winkel/3.6)+" %"
Flip
Cls
Next


;-----------------------------HAUPTSCHLEIFE--------------------------------
;--------------------------------------------------------------------------
While Not KeyHit(1)

If KeyDown(203) Then winkel=winkel-geschwindigkeit/4.0
If KeyDown(205) Then winkel=winkel+geschwindigkeit/4.0
If KeyDown(200) Then geschwindigkeit=geschwindigkeit+1

geschwindigkeit=geschwindigkeit*.95
x=x + Cos(Winkel)*geschwindigkeit
y=y + Sin(Winkel)*geschwindigkeit

If winkel > 359 Then winkel = 0
If winkel < 0 Then winkel = 359

If x > 1023 Then x = 1
If x < 1 Then x = 1023
If y > 767 Then y = 1
If y < 1 Then y = 767


MidHandle player(winkel)
DrawImage player(winkel),x,y

Flip
Cls
Wend
End
  • Zuletzt bearbeitet von hectic am So, Feb 25, 2007 16:51, insgesamt einmal bearbeitet

the FR3AK

BeitragSo, Feb 25, 2007 16:51
Antworten mit Zitat
Benutzer-Profile anzeigen
@Hendy ich auch Laughing
Programmieren hat nix mit dem Alter zu tun!
 

Hendy

BeitragSo, Feb 25, 2007 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Er hat mir über Physik was erzählt....
hab ich nicht verstanden weil ich´s noch nicht hatte...
Smile Very Happy Very HappyD
 

Todeskop

BeitragSo, Feb 25, 2007 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich mach das miter beschleunigung ganz einfach immer so :
Code: [AUSKLAPPEN]
         If KeyDown(17)=1 And speed#<0.02 Then speed#=speed#+0.0002
        If speed>0 Then speed=speed-0.0001
        If KeyDown(31)=1 And speed#>-0.02 Then speed#=speed#-0.0002
        If speed<0 Then speed=speed+0.0001

eigentlich ganz simpel Wink

Eingeproggt

BeitragSo, Feb 25, 2007 17:38
Antworten mit Zitat
Benutzer-Profile anzeigen
@ hectic: Ja, dein Code ist recht gut nur einen gravierenden Fehler hat er:
Der Wendekreis wird umso größer, je langsamer man ist?
Versuch mal mit 100km/h um ne Kurve zu fahren und dann versuchs mit 10km/h. Was ist leichter? Very Happy
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Feb 25, 2007 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Drehung habe ich direkt mit der Geschwindigkeit gekoppelt. Somit ist der Wendekreis immer gleich, egal welche Geschwindigkeit man hat. Falls du aber driften meinst, so ist das ein ganz anderes Kapitel. Wenn du ein Panzer simulieren willst, so ist dein erster Code sicherlich der richtigere, da man da auch im Stand drehen konnte.

edit1: ok, jetzt weiß ich was du meinst. Wenn man immer zwischendurch stehen bleibt, so wird am Ende der Wendekreis tatsächlich größer. Das kommt daher, weil winkel keine float ist.

StepTiger

BeitragSo, Feb 25, 2007 19:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Hendy hat Folgendes geschrieben:
@Eingeproggt ich bin 8 Klasse Realschule und 14 Jahre alt....

Gymnasium, 10te Klasse und auch 14 Jahre alt. (Allerdings nur noch bis zum 4. März Smile )

Also Geschwindigkeitsformeln braucht man da eher, wenn man eine komplexe und realitätsnahe Physik möchte. Ich denke, für deine Zwecke reichen auch erstmal einfache Sachen.
Du hast ja grundlegend eine Geschwindigkeit, die dein Objekt in eine gewisse Richtung bewegt. Am besten, du machst Variablen, die die Geschwindigkeit in eine Richtung ansagen. Diese teilst du einfach in jedem Vorgang durch eine gewisse Zahl. Dann addierst du die Geschwindigkeit bei der Kraft in x Richtung mit dem Sinus des Winkels, in den dein Auto schaut. Bei z mit dem Cosinus.

Hört sich jetzt vielleicht kompliziert an, ist aber eigentlich nicht schwer. Siehe Wikipedia Smile
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Todeskop

BeitragSo, Feb 25, 2007 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
booaaa scheiße steptiger wie viele klassen hasst du übersprungen und dat auchnoch auf dem gymi Shocked (bin auch iner 8 aufer realschule) wir haben da zwar gerad physik aber da machen wir was anderes (federkonstance)

BladeRunner

Moderator

BeitragSo, Feb 25, 2007 22:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Wem es nach Wissen dürstet der findet Wege es zu erreichen. Dazu muss man nichts überspringen sondern sich eben weiterbilden.
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

StepTiger

BeitragSo, Feb 25, 2007 22:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Absolut richtig. (abgesehen davon, todeskop: ein mal hochgestuft wurden)
Ansätze zu Winkelfunktionen findest du sicherlich in der Wikipedia.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Hendy

Betreff: Lösung!!(mehr oda weniger)

BeitragMo, Feb 26, 2007 21:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ganze hab ich jetzt so gelöst:
Code: [AUSKLAPPEN]

Graphics 1024,768,16,1
SetBuffer BackBuffer()




Global geschwindigkeit#
Global x#=300,y#=300

;Spieler in allen winkeln speichern
Dim player(359)
TFormFilter 0
For winkel# = 0 To 359

player(winkel#)=LoadImage("player.bmp")
RotateImage player(winkel#),winkel#
;MaskImage player(winkel),0,0,255
Flip
Cls
Next


;-----------------------------HAUPTSCHLEIFE--------------------------------
;--------------------------------------------------------------------------
While Not KeyHit(1)
If KeyDown(203) Then winkel#=winkel#-geschwindigkeit/3
If KeyDown(205) Then winkel#=winkel#+geschwindigkeit/3
If KeyDown(200) Then geschwindigkeit=geschwindigkeit+.6
If KeyDown(208) Then geschwindigkeit=geschwindigkeit-.5

geschwindigkeit=geschwindigkeit*.99
x=x + Cos(Winkel#)*geschwindigkeit
y=y + Sin(Winkel#)*geschwindigkeit

If geschwindigkeit> 100 Then geschwindigkeit= 100
If geschwindigkeit< -50 Then geschwindigkeit= -50


Print geschwindigkeit


If winkel# > 359 Then winkel# = 0
If winkel# < 0 Then winkel# = 359

If x > 1023 Then x= 1
If x < 1 Then x = 1023
If y > 767 Then y = 1
If y < 1 Then y = 767

MidHandle player(winkel#)
DrawImage player(winkel#),x,y

Flip
Cls
Wend
End

Gut oder Schlecht?
.::Edit1::.
Naja Auto ein bisi schnell aber einfach bei dieser Stelle:

Code: [AUSKLAPPEN]

If geschwindigkeit> 100 Then geschwindigkeit= 100
If geschwindigkeit< -50 Then geschwindigkeit= -50

die Hunderten durch 10 ersetzen und die 50er durch 5er
Smile Very Happy Very HappyD

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Feb 26, 2007 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Mir fallen grad nur folgende Punkte auf:

1. Formatiere mal dein Code
2. Anstelle ql:Print nehme mal ql:Text
3. Packe ql:MiddHandle gleich nach ql:RotateImage
4. Anstelle 'If winkel#...' kannst du es auch mit ql:Mod machen
 

Hendy

BeitragMo, Feb 26, 2007 21:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Also das MOD wie es in der OH beschrieben ist raf ich nicht...Embarassed
Danke für die Tips... Very Happy
Smile Very Happy Very HappyD

Eingeproggt

BeitragMo, Feb 26, 2007 22:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist ganz einfach.

Beispielsweise 14 Mod 3:

Da wird 14 durch 3 dividiert, kommt 4 raus.

Dann wird 14-3*4 gerechnet, das ergibt 2. und 14 mod 3 = 2.
Alles klar?
(Ob BB es genauso macht, wie ichs beschreiben hab, weiss ich nicht, aber so würds ich rechnen)
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

Hendy

BeitragMo, Feb 26, 2007 22:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Eingeproggt hat Folgendes geschrieben:

Alles klar?

Nun ja.... Embarassed ein ganz wenig...
.::EDIT1::.
obwohl wenn man ein wenig darüber nachdenkt... Idea
Smile Very Happy Very HappyD

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group