von a nach b mit auto

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Blitzprogger

Betreff: von a nach b mit auto

BeitragSo, Mai 04, 2008 12:29
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Wink

The Shark

BeitragSo, Mai 04, 2008 12:35
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Mai 04, 2008 12:56
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Wink

The Shark

BeitragSo, Mai 04, 2008 13:20
Antworten mit Zitat
Benutzer-Profile anzeigen
du drehst das bild am anfang mit winkel2, musst aber mit winkel drehen.

Blitzprogger

BeitragSo, Mai 04, 2008 13:41
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Wink

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group