Fehler im Code
Übersicht

ZorroZ.chBetreff: Fehler im Code |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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? ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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? ![]() |
||
User posted image |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey, danke Jungs. Das Problem hat sich für mich gerade geklärt. ![]() close |
||
User posted image |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group