Fehler im Code

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

ZorroZ.ch

Betreff: Fehler im Code

BeitragFr, Jan 06, 2006 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey zusammen,
ich habe ein kleines Problem beim programmieren des Verahlten der Gegner. Ich schnalle einfach nicht, wo der Fehler liegt, vielleicht könnt ihr mir weiterhelfen:

Also, ich habe im Mom. eine kleine Spielfigur, welche sich pro Schleifendurchlauf um 2 Pixel in seine "Blickrichtung" bewegt. Nun besteht die ganze Landschaft aus 40x30 Pixel grossen Tiles, nun möchte ich für die Spielfigur überprüfen, ob das darauffolgende und eine Zeile weiter unten liegende Bildchen kollidierbar ist. Hier nun mal der Code:

Code: [AUSKLAPPEN]
 For geg.gegner = Each gegner
   If geg\typ = "blork" Then
      geg\xpos = geg\xpos + 2*geg\blickrichtung

;; Überprüfen, ob die Spielfigur am Anfang/Ende eines Tiles liegt.
      If geg\xpos Mod 40 = 0 Then
         If Level(geg\ypos/30+1,geg\xpos/40+geg\blickrichtung,4) < 1
;; In Level(Zeile,Spalte,4) liegt 1 wenn das Feld kollidierbar ist

            If geg\blickrichtung = 1 Then geg\blickrichtung = -1
            Else geg\blickrichtung = 1
         EndIf
      EndIf
   EndIf
 Next


Wo liegt also das Problem? Very Happy
Mir ist aufgefallen, dass ich den Gegner mit blickrichtung = 1 in die Landschaft setzte und schon kurz nach dem Start hat sich diese verändert (blickrichtung = -1). Ich nehme aber an, dass dieser Fehler auch mit dem oben angesprochenen Logikfehler in Zusammenhang steht.

Mit freundlichen Grüssen,
ZorroZ
User posted image

Kryan

BeitragFr, Jan 06, 2006 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
ich denke mal, dass der ganze code hilfreich sein könnte
denn wo wird zum beispiel vorher schon die blickrichtung bestimmt?

und beschreib mal genau, was das prob ist
also was du gerne hättest und was da leider ist
 

ZorroZ.ch

BeitragFr, Jan 06, 2006 20:03
Antworten mit Zitat
Benutzer-Profile anzeigen
OK, muss kurz ein Update durch geben, da ich den Code noch ein wenig abgeändert habe:

Ich ersetzte das Code: [AUSKLAPPEN]
Level(geg\ypos/30+1,geg\xpos/40+geg\blickrichtung,4)
durch Code: [AUSKLAPPEN]
Level(Int(geg\ypos/30)+1,Int(geg\xpos/40)+geg\blickrichtung,4)


Was mir jedoch noch aufgefallen ist, ist, dass bei beiden verschiedenen Varianten keine Funktionstüchtigen Codes entstehen. Aus Code: [AUSKLAPPEN]
geg\ypos/30+1
wird dann z.B. 12+1 und nicht 13. Dieser Fehler würde aber zur Folge haben, dass die Meldung "Array out of bounds" auftreten würde, aber auch dies tritt nicht auf.

Wer kann mir helfen? Smile
User posted image

5k41

BeitragFr, Jan 06, 2006 20:16
Antworten mit Zitat
Benutzer-Profile anzeigen
mh also erstmal verdutzt mich das hier...
geg\xpos = geg\xpos + 2*geg\blickrichtung
heiß ja das wenn sagen wir bei oben die blickrichtung=3 is er 6 pixel nach recht geht das is doch aber komisch ich mein er soll sich dann doch nur auf der y-achse bewegen wenn du verstehst was ich mein... ich glaub auch wir brauchen ein bisschen mehr von deinem code um zu sehen worans liegt...
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSa, Jan 07, 2006 4:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Zorro, erstmal müssten wir wissen wie viele Blickrichtungen gibt es? Zu dem Codeschnipsel nehme ich an 8 oder 4?!? Also keine Winkelangaben... Nähmlich, je nachdem welche Laufarten die Gegner haben, wird ein anderer Lösungsweg von nöten sein. Liegen meine Vermutungen richtig, dann kann ich mir allerdings foldende Zeile nicht erklären [geg\xpos = geg\xpos + 2*geg\blickrichtung]. Wenn du sowas ohne If-Abfragen machen möchtest, habe ich eben mal ein Beispielcode dazu geschrieben.Code: [AUSKLAPPEN]
Graphics 400,400,0,2
SetBuffer BackBuffer()


While Not KeyHit(1)

 ri=(ri+1)Mod 4
 xr=Sgn((ri-1)Mod 2)
 yr=Sgn((ri-2)Mod 2)

 Line 200,200,200+xr*100,200+yr*100
 Text 0,0,"ri="+ri

 Delay 500
 Flip
 Cls
Wend
End

5k41

BeitragSa, Jan 07, 2006 11:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke hectic...genau das wollte ich ihm auch sagen das ist mir auch aufgefallen!
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

ZorroZ.ch

BeitragSa, Jan 07, 2006 11:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey, danke Jungs. Das Problem hat sich für mich gerade geklärt. Very Happy

close
User posted image

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group