Neue Welt - neu Zeichnen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Jack

Betreff: Neue Welt - neu Zeichnen

BeitragDo, Okt 20, 2005 12:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, ich habe letzte Woche ein Arcadespiel geproggt, und wollte heute mit einem simplen RPG anfangen. Mein Problem:

Ich habe alle Welten(bisher 2) in einer Textdatei gespeichert(ich benutze kein Scrolling). Wenn die Figur nun allerdings die erste Welt verlässt(SpielerZ <= 0), erscheint folgende Fehlermeldung:

"Index Array out of Bounds". Die Textdatei wird außerhalb der Repeat-Schleife geladen. Wie mache ich es, dass mein Programm(die Figur wird pro Tastendruck um 32 Pixel bewegt, ist aber nicht animiert) dann(SpielerZ <= 0) die Textdatei Welt2.txt lädt? Hat jemand vielleicht eine Funktion für mich parat?

Bitte, bitte helft mir!
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein
 

David

BeitragDo, Okt 20, 2005 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Zeigmal dein bisherigen Quellcode.
Denke du versuchst auf Arrayfelder zuzugreifen die es nicht gibt.

grüße

Ofenrohr

BeitragDo, Okt 20, 2005 15:00
Antworten mit Zitat
Benutzer-Profile anzeigen
du machst den laden teil, der bisher vor deiner repeat schleife steht in eine funktion, in der man den pfad von der txt angeben kann.
dann machst du vor dem repeat diese funktion mit dem pfad vom ersten level.

in der schleife kannst du dann bei deiner bedingung ein anderes level laden. welches kannst du ja bestimmen, indem du schaust, wo der spieler sich grade befindet und wo er aus dem bild läuft, wenn ich deinen text richtig verstanden habe.

mfg ofenrohr
Ofenrohr.net

Jack

BeitragFr, Okt 21, 2005 15:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, sorry, dass ich mich nicht so lange gemeldet habe. Naja, hier ist mein Code:BlitzBasic: [AUSKLAPPEN]
; IWDD.BB
AppTitle \"IWDD\"
Graphics 640,480
SetBuffer BackBuffer()
figuren = LoadImage(\"grafik/invader2.png\")
baum = LoadImage(\"grafik/baum.png\")
wiese = LoadImage(\"grafik/wiese.png\")
Global SpielerS
Global SpielerZ
Global SpielerStartS
Global SpielerStartZ
Global Shot = 1

; Level von Festplatte lesen

Dim Level$(15,20)
leveldatei = ReadFile(\"welten/welt1.txt\")
For Zeile=0 To 14
A$ = ReadLine(leveldatei)
For Spalte=0 To 19
Level$(Zeile,Spalte) = Mid$(A$,Spalte+1,1)
If Level$(Zeile,Spalte) = \"S\" Then
SpielerStartS = Spalte
SpielerStartZ = Zeile
EndIf
Next
Next
CloseFile leveldatei

Repeat

; Level zeichnen

If KeyDown(1) Then End

For Zeile=0 To 14
For Spalte=0 To 19
Select Level$(Zeile,Spalte)
Case \"1\"
DrawImage baum, Spalte*32, Zeile*32
Case \" \"
DrawImage wiese, Spalte*32, Zeile*32
Case \"S\"
DrawImage wiese, Spalte*32, Zeile*32
DrawImageRect figuren, Spalte*32, Zeile*32, 481,142,32,26
SpielerS = Spalte
SpielerZ = Zeile
End Select
Next
Next

Flip
Delay 100

; Spielfigur bewegen

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

Forever
End


Bitte, bitte helft mir!
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein

Jack

BeitragSa, Okt 22, 2005 19:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry wegen Doppelpost. Ich habe auch schon die Möglichkeit mit der Funktion ausprobiert. Es erscheint keine Fehlermeldung, aber die Figur lässt sich nicht mehr bewegen!

Bitte helft mir, ich verzweifle schon fast!!!
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein

Hellfront

Betreff: Code

BeitragSa, Okt 22, 2005 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist doch einffach sobald er aus dem Bild rausläuft (z. B.:SpielerX > 640 then ) setzt du ihn an die entsprechende Position und malst das Bild neu
Hab hier bewusst auf praktischen Code verziochtet damit auch nochg was zu tun hast


wir können dir natürlich nicht sgaen was falsch ist wenn du uns nicht den neuen Code zeigst

Jack

BeitragSo, Okt 23, 2005 12:08
Antworten mit Zitat
Benutzer-Profile anzeigen
hacker3110 hat Folgendes geschrieben:
Ist doch einffach sobald er aus dem Bild rausläuft (z. B.:SpielerX > 640 then ) setzt du ihn an die entsprechende Position und malst das Bild neu


Hast du dir den Code mal angeguckt? Ich lade eine txt-Datei außerhalb der Repeat-Schleife und in der Repeat-Schleife wird das dann gezeichnet. An die entsprechende Position wird er selber gesetzt, aber mein Problem ist ja gerade, dass ich nicht weiß, wie ich es schaffe, dass ich, wenn meine Figur den Bildschirm verlässt, dass mein Programm dann eine neue Textdatei lädt und dann entsprechend zeichnet.

(ich hoffe, dass hörte sich jetzt nicht wie eine Beleidigung an)

Bitte helft mir!
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein
 

$tankY

BeitragMi, Okt 26, 2005 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Dim Level$(15,20)
leveldatei = ReadFile("welten/welt1.txt")
For Zeile=0 To 14
 A$ = ReadLine(leveldatei)
 For Spalte=0 To 19
  Level$(Zeile,Spalte) = Mid$(A$,Spalte+1,1)
  If Level$(Zeile,Spalte) = "S" Then
   SpielerStartS = Spalte
   SpielerStartZ = Zeile
  EndIf
 Next
Next
CloseFile leveldatei

Repeat

; Level zeichnen

If KeyDown(1) Then End

 For Zeile=0 To 14
  For Spalte=0 To 19
   Select Level$(Zeile,Spalte)
    Case "1"
     DrawImage baum, Spalte*32, Zeile*32
    Case " "
     DrawImage wiese, Spalte*32, Zeile*32
    Case "S"
     DrawImage wiese, Spalte*32, Zeile*32
     DrawImageRect figuren, Spalte*32, Zeile*32, 481,142,32,26
     SpielerS = Spalte
     SpielerZ = Zeile
   End Select
  Next
 Next

In Dim Level$(15,20)
legst du ein dim mit 16*21 feldern an, jedoch befüllst du nur mit
For Zeile=0 To 14
For Spalte=0 To 19
14*19 von 16*21 feldern, das solltest du besser beheben.

Jack

BeitragDo, Okt 27, 2005 15:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, Leute, aber ich habe jetzt doch beschlossen Scrolling zu benutzen und bald kommt mein erstes RPG... Schaut also öfter mal auf Projekte.
Wer kein HTML kann und lernen will, der ist wirklich dumm... MFG Dennerlein
 

$tankY

BeitragFr, Okt 28, 2005 13:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Viel Erfolg!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group