Fehler ??!!??
Übersicht

![]() |
kaiBetreff: Fehler ??!!?? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also aus irgend einem Grund bewegt sich meine Spielfigur nach links und nach oben ganz normal aber wenn ich ihn nach rechts oder unten bewege dann bekommt er auf einmal hyperspeed !!
Ich weis net wodran das liegen kann hab mia deswegen schon den Kopf zerbrochen !! Ich bin sicher das einer Von euch eine ganz simple Erklärung dafür hat !! Würde mich über Antworten und Hilfen sehr freuen !! ![]() Code: [AUSKLAPPEN] Graphics 640,480,16,1
SetBuffer BackBuffer() ; Laden der Dateien ;######################################### tileset = LoadAnimImage("F:\Blitz3D\Survivor\nu\gfx\sch.bmp",16,16,0,15) spieler = LoadAnimImage("F:\Blitz3D\Survivor\nu\gfx\player1.bmp",16,16,0,8) ; Level Laden ;######################################### Dim Level$(40,40) leveldatei = ReadFile("F:\Blitz3D\lvl.txt") For y = 0 To 40 A$ = ReadLine(leveldatei) For x = 0 To 40 B$ = Mid$ (A$,x+1,1) Level$(y,x) = B$ Next Next CloseFile leveldatei ; Level zeichnen ;########################################## Repeat For y = 0 To 40 For x = 0 To 40 Select Level$(y,x) Case "1" DrawImage tileset,x*16,y*16,5 Case " " DrawImage tileset,x*16,y*16,0 ; Spieler Case "S" DrawImage spieler, x*16, y*16, 0 spielerS = x spielerZ = y ;Bewegung If KeyDown(203) And ( Level$(spielerZ,spielerS-1) <> "1" ) Then Level$(spielerZ,spielerS) = " " spielerS = spielerS - 1 Level$(spielerZ,spielerS) = "S" EndIf If KeyDown(205) And ( Level$(spielerZ,spielerS+1) <> "1" ) Then Level$(spielerZ,spielerS) = " " spielerS = spielerS + 1 Level$(spielerZ,spielerS) = "S" EndIf If KeyDown(200) And ( Level$(spielerZ-1,spielerS) <> "1" ) Then Level$(spielerZ,spielerS) = " " spielerZ = spielerZ - 1 Level$(spielerZ,spielerS) = "S" EndIf If KeyDown(208) And ( Level$(spielerZ+1,spielerS) <> "1" ) Then Level$(spielerZ,spielerS) = " " spielerZ = spielerZ + 1 Level$(spielerZ,spielerS) = "S" EndIf End Select Next Next Flip Until KeyHit(1) End |
||
Lebe deine Träume .. aber Träume nicht dein Leben !! |
![]() |
garret |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. Nimm relative Pfade, z.B. LoadFile("Unterpfad\datei.txt") und keine festen, sonst kommt es bei anderen Computern zu Fehlern, da jeder ja andere Ordnerbezeichnungen hat.
2. Nimm die Bewegung aus der Select-Case-Struktur, dort sollte lediglich die Ausgabe erfolgen. Das ist doch das Beispiel aus dem Buch, oder? Wenn ja, schlag doch einfach noch mal dort nach, ich teste das mal kurz... ![]() Edit: Lol, das ist ja merkwürdig ![]() Ich weiß zwar nicht woran das liegt, aber ich habe eine Alternative für dich (ist deines leicht abgewandelt, musst halt wieder die Bilder einfügen und "0" auf "1" setzen): Code: [AUSKLAPPEN] Graphics 640,480,16,1 SetBuffer BackBuffer() ; Laden der Dateien ;######################################### ;tileset = LoadAnimImage("F:\Blitz3D\Survivor\nu\gfx\sch.bmp",16,16,0,15) ;spieler = LoadAnimImage("F:\Blitz3D\Survivor\nu\gfx\player1.bmp",16,16,0,8) ; Level Laden ;######################################### Dim Level$(40,40) leveldatei = ReadFile("Neu Textdokument.txt") For y = 0 To 40 A$ = ReadLine(leveldatei) For x = 0 To 40 B$ = Mid$ (A$,x+1,1) Level$(y,x) = B$ Next Next CloseFile leveldatei ; Level zeichnen ;########################################## Repeat For y = 0 To 40 For x = 0 To 40 Select Level$(y,x) Case "0" Color 127,0,0 Rect x*16,y*16,16,16 Case " " Color 0,0,127 Rect x*16,y*16,16,16 ; Spieler Case "S" Color 255,0,0 Rect x*16,y*16,16,16 spielerS = x spielerZ = y End Select Next Next ;Bewegung ;################## If MilliSecs()-t_start>100 ;################## If KeyDown(203) And ( Level$(spielerZ,spielerS-1) <> "0" ) Then Level$(spielerZ,spielerS) = " " spielerS = spielerS - 1 Level$(spielerZ,spielerS) = "S" EndIf If KeyDown(205) And ( Level$(spielerZ,spielerS+1) <> "0" ) Then Level$(spielerZ,spielerS) = " " spielerS = spielerS + 1 Level$(spielerZ,spielerS) = "S" EndIf If KeyDown(200) And ( Level$(spielerZ-1,spielerS) <> "0" ) Then Level$(spielerZ,spielerS) = " " spielerZ = spielerZ - 1 Level$(spielerZ,spielerS) = "S" EndIf If KeyDown(208) And ( Level$(spielerZ+1,spielerS) <> "0" ) Then Level$(spielerZ,spielerS) = " " spielerZ = spielerZ + 1 Level$(spielerZ,spielerS) = "S" EndIf t_start=MilliSecs() EndIf Flip:Until KeyHit(1):End Die Steuerung ist jetzt zeitabhängig, d.h in der markierten Zeile: Wenn die Zeitspanne von aktueller Zeit und gemessener Zeit größer als 100 Millisekunden ist, darf eine Bewegung erfolgen bzw. wird abgefragt ob ein Tastendruck vorliegt. MfG garret |
||
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht) |
![]() |
kaiBetreff: Thx !! |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sehr nett von dir der Tipp war gut !!
Und ja die übung war aus dem Buch xD Naja jetzt klappt das ja !! dank deiner hilfe ;P |
||
Lebe deine Träume .. aber Träume nicht dein Leben !! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group