von a nach b mit auto
Übersicht

![]() |
BlitzproggerBetreff: von a nach b mit auto |
![]() Antworten mit Zitat ![]() |
---|---|---|
hallo leute
mein problem besteht darin dass ich ein auto zeichnen will und zwar in dem winkel der halt gerade ist hier mein code: Code: [AUSKLAPPEN] Graphics 800, 600, 0, 1
SetBuffer BackBuffer() ClsColor 200,200,200 x# = Rand (0,799) y# = Rand (0,599) Dim Auto(359) TFormFilter 0 For winkel = 0 To 359 auto(winkel)=LoadImage("AUTO.bmp") MidHandle auto(winkel) RotateImage auto(winkel),winkel2 Next winkel = 0 geschwindigkeit = 0 While KeyDown(1) = 0 mh = MouseDown(1) mx = MouseX() my = MouseY() xx = x yy = y If mh Then geschwindigkeit = 1 px = mx py = my ger1 = px - x ger2 = py - y winkel = ATan2(ger1,ger2) EndIf If winkel > 360 Then winkel = 0 If winkel < 0 Then winkel = 360 If xx <> px Then x = x + Sin(winkel)*geschwindigkeit EndIf If yy <> py Then y = y + Cos(winkel)*geschwindigkeit EndIf Rect mx,my,4,4,1 DrawImage auto(winkel),x,y Flip Cls Wend End es kommt dann immer "array index out of bouns" ich kann mir aber nicht erklären wieso das array zu hoch oder zu nidrig ist. wenn ich den "winkel" nach der for, next schleife wieder auf null setzt dann gehts. allerdings nur solange ich in der hälfte vor dem auto bleibe und das auto ist starr in einer richtung. auch noch wichtig: das programm bleibt immer an der stelle kleben an dem das auto gezeichnet wird. bitte um hilfe mfg |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
![]() |
The Shark |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. dein problem ist wenn ich das richtig sehe, dass du
Code: [AUSKLAPPEN] If winkel > 360 Then winkel = 0 If winkel < 0 Then winkel = 360 schreibs und nicht Code: [AUSKLAPPEN] If winkel > 359 Then winkel = 0 If winkel < 0 Then winkel = 359 2. du musst das autobild nicht immer neu laden, benutz copyimage ![]() |
||
![]() |
Blitzprogger |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke für deine hilfe
jedoch funktioniert es immer noch nicht ganz; das programm schmiert zwar nicht mehr ab aber wenn ich in der hälfte hinter dem auto bin dann fährt es irgendwo hin statt dorthin wo es soll. auch bleibt das autobild immer starr das gleiche. wenn ich statt dem auto einen kreis zeichne und das "if winkel > 359 ..." wegnehme funktioniert es wieder. ich bin ratlos mfg |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
![]() |
The Shark |
![]() Antworten mit Zitat ![]() |
---|---|---|
du drehst das bild am anfang mit winkel2, musst aber mit winkel drehen. | ||
![]() |
Blitzprogger |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich hab das mal so gemacht: Code: [AUSKLAPPEN] Graphics 800, 600, 0, 1
SetBuffer BackBuffer() ClsColor 200,200,200 Color 0,0,0 x# = Rand (0,799) y# = Rand (0,599) Dim Auto(359) TFormFilter 0 For winkel2 = 0 To 359 auto(winkel2)=LoadImage("AUTO.bmp") MidHandle auto(winkel2) RotateImage auto(winkel2),winkel2 Next winkel2 = 0 geschwindigkeit = 0 While KeyDown(1) = 0 mh = MouseDown(1) mx = MouseX() my = MouseY() xx = x yy = y If mh Then geschwindigkeit = 1 px = mx py = my ger1 = px - x ger2 = py - y winkel = ATan2(ger1,ger2) winkel2 = winkel EndIf If winkel > 359 Then winkel = 0 If winkel < 0 Then winkel = 359 If xx <> px Then x = x + Sin(winkel)*geschwindigkeit EndIf If yy <> py Then y = y + Cos(winkel)*geschwindigkeit EndIf Rect mx,my,4,4,1 DrawImage auto(winkel2),x,y Flip Cls Wend End das problem mit dem "hinter dem auto kann man nicht drücken (links davon)" bleibt bestehen, auch dreht sich das auto in nicht genau die richtige richtung. d.h. das auto ist genau spiegelverkehrt ich weiss da nicht weiter. bitte um hilfe mfg |
||
Mein aktuelles Projekt, Irnithal: http://www.blitzforum.de/worklogs/415/
Unfreiwilliger Gewinner des BAC# 115. ![]() |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group