Problem bei meiner Tilemap
Übersicht

![]() |
JulzBetreff: Problem bei meiner Tilemap |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] graphics 640,480 setbuffer backbuffer() tileset = loadanimimage("sprites.bmp",32,32,0,4) player= loadimage("yes.bmp") x = 40 y = 50 dim map(9,9) data 1,1,1,1,1,1,1,1,1,1 data 1,3,3,3,3,3,3,3,3,1 data 1,0,0,0,0,0,0,0,3,1 data 1,0,0,0,0,0,0,0,3,1 data 1,0,0,0,0,0,0,0,3,1 data 1,0,0,2,2,0,0,0,3,1 data 1,0,0,2,2,0,0,0,3,1 data 1,0,0,0,0,0,0,0,3,1 data 1,0,0,0,0,0,0,0,3,1 data 1,1,1,1,1,1,1,1,1,1 for y = 0 to 9 for x = 0 to 9 read map(x,y) next next repeat cls for y = 0 to 9 for x = 0 to 9 drawimage tileset, x*32, y*32, map(x,y) next next for x = 0 to 9 for y = 0 to 9 if keydown(205) and map(x+1,y) = 0 then movex = movex + 1 if keydown(203) and map(x-1,y) = 0 then movex = movex - 1 if keydown(200) and map(x,y-1) = 0 then movey = movey - 1 if keydown(208) and map(x,y+1) = 0 then movey = movey + 1 next next drawimage player, movex, movey flip until keydown(1) Ich hab mir das tutorial auf der robsite durchgelesen und hab danach selbst ma was gemacht, allerdings läuft mein dummer player immer noch durch die map ohne vor stehen zu bleiben wenn ein tile größer als 0 ist ![]() |
||
Zwische |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
irgendwie hast du da variablen vertauscht.
so müsste es gehen: if keydown(205) and map(movex+1,movey) = 0 then movex = movex + 1 if keydown(203) and map(movex-1,movey) = 0 then movex = movex - 1 if keydown(200) and map(movex,movey-1) = 0 then movey = movey - 1 if keydown(208) and map(movex,movey+1) = 0 then movey = movey + 1 |
||
www.bitbybit-creations.net |
![]() |
Julz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also dann hab ich zwei fragen
1. das versteh ich nicht, warum die bewegungsvaribale, in der map(x,y) da sind doch die daten über die tilemap gespeichert oder ??? 2.Irgendwie funst das nicht so ganz der ruckelt nur so komisch rum ka warum (nagut ist keine frage)[/code] |
||
Zwische |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
zu 1.
Code: [AUSKLAPPEN] if keydown(205) and map(movex+1,movey) = 0 then movex = movex + 1 hier willst du doch abfragen, ob rechts neben dem Spieler, also movex+1 ein Tile ist das denn Spieler blockiert oder nicht, deshalb die variable movex, die doch eine Koordinate des Spielers ist zu 2. schreib mal das hier: drawimage player, movex*32, movey*32 |
||
www.bitbybit-creations.net |
CodeMaster |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ein Problem besteht sicherlich auch darin, dass BB folgende Zeile nicht korrekt interpretieren kann:Code: [AUSKLAPPEN] if keydown(205) and map(movex+1,movey) = 0 then movex = movex + 1 Wenn du mehr als eine Bedingung überprüfen willst, musst du jede bedingung einzeln einklammern. Sollte dann so lauten:Code: [AUSKLAPPEN] if (keydown(205)) and (map(movex+1,movey) = 0) then movex = movex + 1 Ansonsten hätte BB versucht, deinen Code in etwa so zu interpretieren:Code: [AUSKLAPPEN] if (keydown(205) AND map(movex+1,movey)) = 0 then movex = movex + 1 (AND fungiert hier als ein mathematischer Operator, was natürlich nicht zum gewünschten Ergebnis führt!)
|
||
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.
Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102 |
Alu-FolieGast |
![]() Antworten mit Zitat |
|
---|---|---|
Das kann man auch mit 2 If-Abfragen lösen. So mache ich das immer, weil mir AND und OR usw. unsymphatisch ist ![]() |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Ein Problem besteht sicherlich auch darin, dass BB folgende Zeile nicht korrekt interpretieren kann:Code:
Wie kommst Du denn auf den Quatsch Codemaster if keydown(205) and map(movex+1,movey) = 0 then movex = movex + 1 Wenn du mehr als eine Bedingung überprüfen willst, musst du jede bedingung einzeln einklammern. Sollte dann so lauten:Code: if (keydown(205)) and (map(movex+1,movey) = 0) then movex = movex + 1 ![]() ![]() Gleich noch für die ungläubigen unter Euch: Code: [AUSKLAPPEN] a=1
If a And b=0 Then Print "Super" WaitKey() End |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
CodeMaster |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie kommst Du denn auf den Quatsch Hubsi ![]() ![]() Was du postest, ist schlichtweg falsch. Für Dich Ungläubigen hier ein Beispiel: Code: [AUSKLAPPEN] A = 2
Und jetzt sag mir, dass das korrekt ist!!!
B = 32 If A And B = 32 Then Print "Bedingung erfüllt" Aber ich will ja keine Schlammschlacht anzetteln (jeder kann mal Fehler machen), deswegen hier eine kleine Erklärung: a ist 1. Okay b ist 0. Okay "a AND b" ist 0. Okay. Wenn also "a AND b" = 0 ist, ist die Bedingung erfüllt. Logisch. |
||
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.
Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102 |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Friede sei mit euch!
Hubsi hat recht. Ein Bedingung ist dann wahr, wenn sie "1" ist. Code: [AUSKLAPPEN] a=1 If a Then Print "toll" Funktioniert somit Bei CodeMaster ist die erste Bedingung aber 2 und somit ungleich 1, also 0, also FALSCH. Deswegen wird "Bedingung erfüllt" nicht erscheinen Ich habs ausprobiert (solltet ihr auch) MfG Frohe Weihnacht |
||
CodeMaster |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wäääää, noch so ein Möchtegern!
Zur Aufkläfung von der booleanischen Urteilung von BB: Exakt 0 ist false/falsch/unwahr. Alles, was nicht 0 (also von -Unendlich bis +Unendlich außer 0) ist, ist true/richtig/wahr. [Edit] Für alle "Immernochungläubigen" hier mal was zum Ausprobiueren:Code: [AUSKLAPPEN] Print "32 and 2: " + (32 And 2)
Print "32 and 39: " + (32 And 39) Print "32 or 2: " + (32 Or 2) Print "32 or 39: " + (32 Or 39) WaitKey() End Und noch ein ganz persönliches [Edit] an D2006: Nach deiner Theorie müsste ja folgender Code nicht möglich sein:Code: [AUSKLAPPEN] a = 2
Hmmmmmm, komisch nur dass er doch funktioniert!
If a then print "a ist wahr" Waitkey() End [Weitere Anmerkung] Dann probier doch einfach mal diesen Code hier:Code: [AUSKLAPPEN] A = 2
In meinem originalen Code von oben habe ich gar nicht beabsichtigt, dass die Bedingung erfüllt ist. Jetzt erst habe ich ihn so umprogrammiert, dass er absichtlich funktioniert. Und nix für ungut, aber ich programmiere seit über 10 Jahren.
B = 32 If (Not A = False) And (B = 32) Then Print "Bedingung erfüllt" WaitKey() End |
||
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.
Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102 |
- Zuletzt bearbeitet von CodeMaster am Mo, Dez 22, 2003 17:07, insgesamt 6-mal bearbeitet
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe mich auf ein niedriges Niveau herabgelassen, eils unrecht gehabt und mich eines besseren belehren lassen. Sorry. | ||
![]() |
Julz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also bevor hier ein krieg ausbricht lassen wir das ganze lieber ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group