Kein Zugriff auf Array?
Übersicht

WaterguyBetreff: Kein Zugriff auf Array? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nabend, mal wieder ein kleines Problemchen ![]() ![]() Und zwar gehts diesmal um die Kollisionsabfrage zwischen Spieler und Tile. Vorerst kann der Spieler sich nur mit den Pfeiltasten (hoch,runter,links,rechts) über das Bild bewegen. Dabei soll er bei einem bestimmten Tile nicht weiter kommen, also Kollisionsabfrage. Hab's mit Imagescollide(), ImageRectCollide() und RectsOverlap() probiert - nix klappt. Die Tiles werden in einem Array gespeichert (da vorher die Map mit Editor erstellt wurde) - auf die ich keinen Zugriff hab. Die Arrays versuche ich mit grafik(1) (als Beispiel) anzusprechen. Aber ich kann nichtmal den MaskImage Befehl darauf anwenden. Der Code folgt hier: Code: [AUSKLAPPEN] Graphics 1280,1024,256,1
SetBuffer BackBuffer() ClsColor 255, 0, 255 Global datei Dim grafik(4) Dim map(32,32) px = 100 py = 600 player = LoadImage("dude.bmp") MaskImage player,255,0,255 For x = 1 To 4 grafik(x) = LoadImage("tile" + Str$(x) + ".bmp") MaskImage grafik(x), 255, 0, 255 Next auswahl$ = Input("Level laden? (j/n) - ") If auswahl$ = "j" Then mapname$ = Input("Levelcode eingeben - ") datei=ReadFile(mapname$ + ".map") For y=0 To 31 For x=0 To 31 map(x,y)=ReadLine(datei) Next Next CloseFile datei EndIf Repeat If KeyHit(1) Then End For y=0 To 31 For x=0 To 31 DrawBlock grafik(map(x,y)),x*32,y*32 Next Next DrawImage player,px,py If KeyDown(205) Then px = px + 2 If KeyDown(208) Then py = py + 2 Flip Forever End |
||
Projekte:
Jubinator (Jump'n'Run) zu 10% fertig |
buja |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also nen direkten Fehler habe ich auf die schnelle nicht gefunden.
Code: [AUSKLAPPEN] Graphics 1280,1024,256,1 SetBuffer BackBuffer() ClsColor 255, 0, 255 Global datei Dim grafik(4) Dim map(32,32) px = 100 py = 600 player = LoadImage("dude.bmp") MaskImage player,255,0,255 For i = 1 To 4 ;Du benutzt x schon unten, nimm hier lieber i oder ne andere variable grafik(i) = LoadImage("tile" + Str$(x) + ".bmp") MaskImage grafik(x), 255, 0, 255 Next auswahl$ = Input("Level laden? (j/n) - ") If auswahl$ = "j" Then mapname$ = Input("Levelcode eingeben - ") datei=ReadFile(mapname$ + ".map") For y=0 To 31 For x=0 To 31 map(x,y)=ReadLine(datei) Next Next CloseFile datei EndIf Repeat If KeyHit(1) Then End For y=1 To 32 ;Du hast doch dim map(32,32) gemacht? dannkannst du auch 1-32 nehmen ;) For x=1 To 32 DrawBlock grafik(map(x,y)),x*32,y*32 Next Next DrawImage player,px,py If KeyDown(205) Then px = px + 2 If KeyDown(208) Then py = py + 2 Flip Forever End Nur so kleinigkeiten, wenn du mir das Projekt mal schickst mit Dateien kann ich das ausprobieren und vll nen Fehler finden oder das beheben. Meine ICQ: 487123402 |
||
... |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
- Die Farbtiefe von 256 gibt es nicht Graphics![]() - Die Zeile mit ReadLine ![]() - Nur so als Tipp: DrawBlock ![]() ![]() - Ausserdem kannst du auch gleich per Frames unterschiedliche Images ansprechen. Das würde dir wesentlich die unnötige Arbeit ersparen. Ist aber Geschmackssache. - Normalerweise macht man erst Variablenberechnung und dann erst das Zeichnen der Grafik. In deinem Beispiel ist die Playersteuerung genau nicht so. - In deinem geposteten Code gibt es keine Ansätze auf eine Kollisionsabfrage die wir zu kontrollieren könnten. Daher kann dir auch niemand diese Frage bezogen auf dein Code beantworten. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Waterguy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Den Graphics-Fehler hab ich korrigiert, weiß auch nicht warum ich immer 256 dahin schreib ![]() Den Editor hab ich nach dem Editor-Tutorial von robsite.de geschrieben und ein wenig abgewandelt um es bedienerfreundlicher zu machen. Das mit der Variablenberechnung war ein Denkfehler, werd ich auch noch korrigieren. Die Kollisionsabfrage habe ich rausgenommen, da meine Frage nicht speziell darauf bezogen war, sondern generell auf das Problem das ich das Array grafik(x) nicht ansprechen kann, egal bei welcher Situation. |
||
Projekte:
Jubinator (Jump'n'Run) zu 10% fertig |
Waterguy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] If ImagesCollide(dude,dx,dy,0,grafik(1),x*32,y*32,0) Then dy = x*32 + 64
Das hier wäre die Kollisionsabfrage, die nicht funktioniert - Wenn der Spieler (dude) mit dem Tile das in grafik(1) geladen ist zusammenstößt soll er halt nicht hindurch "fallen". Edit: Den Zugriff auf grafik(x) hab ich hinbekommen, nur die Kollisionsabfrage klappt nicht |
||
Projekte:
Jubinator (Jump'n'Run) zu 10% fertig |
![]() |
FunctionBauer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das kann auch noch mit was ganz Anderem zusammenhaengen! Wenn du nur auf den oberen Teil guckst, wird das nix!!!!! | ||
Waterguy |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Okay, Kollisionsabfrage klappt inzwischen auch ![]() |
||
Projekte:
Jubinator (Jump'n'Run) zu 10% fertig |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group