Abweichung klappt nicht....

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Waveblue

Betreff: Abweichung klappt nicht....

BeitragMi, Apr 27, 2005 20:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi mal wieder!
(Ich glaub, ich gehör mit meinen Fragen hier bald zum Beginnerforumsinventar^^)

Ich hab ein Problem mit einem Code, der mich schier zu Verzweiflung treibt!
Obwohl ich es sicher nicht mehr zum Contest schaffe, hab ich mich mal an ein Rennspiel gewagt:

BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,32,2
timer=CreateTimer(2)
SetBuffer BackBuffer()
TFormFilter 0
ClsColor 0,255,0

Type Fahrer
Field x#,y#
Field winkel#
Field speed#
Field xdrift#,ydrift#
Field typ ;1=Pc,2=Player
Field autotyp
Field name$
Field skill,welcher
Field xdiff#,ydiff#
Field haftung#
End Type

Dim racerbild(180)
Global car.Fahrer
Ladeimages
simul






Repeat

For car=Each Fahrer

Select car\typ
Case 1
KI
Case 2
human
End Select


;============Eingegrenzter Problembereich!=================================
carx2# = car\x# + Cos(car\winkel#) * car\speed#
cary2# = car\y# + Sin(car\winkel#) * car\speed#

xdiff#=carx2#-car\x# ;Differenz zwischen neuem und alten Punkt
ydiff#=cary2#-car\y#

zurechenx#=car\xdiff#-xdiff# ;Zurechendings ist die Differenz der vorigen Bewegung zur jetzigen!
If zurechenx#<>0 Then zurechenx#=zurechenx#*(car\haftung) ;nur ein bestimmter Teil der alten Bewegung wird mit einberechnet!!
xdiff#=xdiff#+zurechenx#

zurecheny#=car\ydiff#-ydiff#
If zurecheny#<>0 Then zurecheny#=zurecheny#*(car\haftung)
ydiff#=ydiff#+zurecheny#

car\x#=car\x#+xdiff#
car\y#=car\y#+ydiff#

car\xdiff#=xdiff#
car\ydiff#=ydiff#
;============================================================================

If car\winkel#=-1 Then car\winkel=359
If car\winkel#=361 Then car\winkel=1

If car\speed#>4 Then car\speed#=4
If car\speed#<-2 Then car\speed#=-2
Next

Male


If KeyDown(57) Then WaitTimer(timer) ;zuschaltbare Zeitlupe Leertaste

If KeyHit(19) Then ;Resetfunktion mit Taste R
For car=Each Fahrer
car\x=200
car\y=200
car\winkel=0
Next
End If


Until KeyHit(1)
















Function Ladeimages()
racerimage=LoadImage(\"C:\Windows\Desktop\Racer5.png\")
MaskImage racerimage,255,0,255
MidHandle racerimage

For a=0 To 180
racerbild(a)=CopyImage(racerimage)
RotateImage racerbild(a),a*2
Next



End Function

Function ki()
grad =(ATan2(MouseY() - car\y,MouseX() - car\x)+360) Mod 360


Select car\winkel <=180 ;Vielen Dank an Kabelbinder für das Steuerprogramm! Wink
Case 1
If grad >car\winkel And grad< car\winkel + 180 Then
car\winkel = car\winkel + 1
Else
car\winkel = car\winkel - 1
EndIf
Case 0
If grad <car\winkel And grad> car\winkel - 180 Then
car\winkel = car\winkel - 1
Else
car\winkel = car\winkel + 1
EndIf
End Select


car\speed#=2
End Function

Function human()
If KeyDown(203) Then car\winkel=car\winkel#-1
If KeyDown(205) Then car\winkel#=car\winkel#+1
If KeyDown(200) Then car\speed#=car\speed#+0.02
If KeyDown(208) Then car\speed#=0
End Function

Function simul()

car=New fahrer
car\name$=\"The Wave\"
car\Typ=2
car\autotyp=1
car\x=200
car\y=200
car\haftung=0.9
car=New fahrer
car\name$=\"Joe\"
car\Typ=1
car\autotyp=1
car\x=200
car\y=200
car\haftung=0.9
car=New fahrer
car\name$=\"Davis\"
car\Typ=1
car\autotyp=1
car\x=200
car\y=200
car\haftung=0

End Function

Function male()
Cls
For car=Each fahrer
temp=Int((car\winkel)/2)

DrawImage racerbild(Floor((car\winkel)/2)),car\x,car\y
Text car\x-30,car\y-30,car\name$


Next
Oval MouseX(),MouseY(),10,10
Flip

End Function


Dieser Code ist dafür da, das das Auto abweicht, wenn es in Kurven fährt, indem die Vorige Bewegungsrichtung und -Geschwindigkeit zu einem bestimmten Teil dazugerechnet wird!

Nur funzt das nicht richtig, grad mal in positiver x-Richtung! Und ich find mal wieder den Fehler nicht!

Wisst ihr was da falsch ist?

PS: Die KIs fahren immer zur Maus! Daran lässt sich gut die Abweichung erkennen, denn einer fährt mit(Joe) und einer ohne (Davis)!
Falls ihr den Code testen wollt, könnt ihr das Autobild hier (1KB) laden!
(auf dem Desktop speichern oder Pfad anpassen Wink )


MFG Waveblue
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name

Ralf

BeitragMi, Apr 27, 2005 22:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich verstehe Dein Problem nicht ganz?
Funktioniert doch ganz gut, wenn man ein wenig mit den Werten spielt.
Code: [AUSKLAPPEN]
        car=New fahrer
                car\name$="Joe"
                car\Typ=1
                car\autotyp=1
                car\x=200
                car\y=200
                car\haftung=0.97

Wenn Du bei car\haftung meinetwegen 0.97 einstellst, sieht man das der Wagen in alle Richtungen driftet.

Oder habe ich die Frage jetzt falsch verstanden?

Waveblue

BeitragSo, Mai 01, 2005 17:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja tatsächlich! Shocked Shocked

*nichtschlechtguck*

THX!
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group