Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ' bomberman.bas - textbasierter Bomberman Klon in FreeBasic
- #LANG "fb"
- ' Variablen und co.
- dim Dateiname as string
- dim DateiNr as integer = FREEFILE
- dim taste as string = ""
- dim as integer zeilen = 0
- dim as integer spalten = 0
- dim zeichen as string = ""
- dim i as integer = 0
- dim b as integer = 0
- dim a as integer = 0
- dim as integer x = 0
- dim as integer y = 0
- dim as string figur = "O"
- dim as string wand = "#"
- dim as integer start_x = 0
- dim as integer start_y = 0
- ' Funktionen und SUBs
- declare sub zeigeWelt(welt() as string, zeilen as integer, spalten as integer)
- declare sub bewegeSpieler(welt() as string, x as integer, y as integer, figur as string, wand as string, zeilen as integer, spalten as integer)
- ' Karte die geladen werden soll eingeben
- Dateiname = "karte01.txt"
- ' Weltgröße ermitteln...
- if open(Dateiname for binary as #DateiNr) = 0 then
- do
- zeilen = zeilen + 1
- input #DateiNr, zeichen
- loop until eof(DateiNr)
- spalten = len(zeichen)
- close #DateiNr
- else
- print !"\34!!!FEHLER!!! beim laden der Datei\34"
- end if
- ' Karte laden und in Array speichern...
- dim welt(0 TO zeilen, 0 TO spalten) as string
- ' Die komplette Textdatei in einen String speichern
- open Dateiname for binary as #DateiNr
- dim daten as string
- daten = space(lof(DateiNr)) ' Dateigröße ermitteln
- ' und mit Leerzeichen füllen
- get #DateiNr, , daten ' aktuelles Zeichen in daten speichern
- close #DateiNr
- for i = 0 to (len(daten) - 1)
- ' print chr(daten[i]);
- ' Daten in ein 2-Dimensionales Array speichern
- for a = 0 to (zeilen - 1)
- for b = 0 to (spalten)
- welt(a, b) = chr(daten[i]) ' Daten in Array speichern
- ' Aktuelle Spieler Position feststellen
- if welt(a, b) = figur then
- start_x = b
- start_y = a
- end if
- i = i + 1 ' ein Zeichen weiter gehen
- next
- next
- next
- color 3, 0 ' Spiel in einen schönen blau darstellen :-)
- zeigeWelt(welt(), zeilen, spalten)
- ' Spieler auf aktuelle Position in der Welt setzen
- y = start_y
- x = start_x
- ' Hauptschleife
- do
- taste = INKEY
- locate 1, 20: print "y: "; y
- locate 2, 20: print "x: "; x
- ' Tastatur abfragen und Spieler bewegen
- select case taste
- case "w"
- y = y - 1
- bewegeSpieler(welt(), x, y, figur, wand, zeilen, spalten)
- zeigeWelt(welt(), zeilen, spalten)
- case "s"
- y = y + 1
- bewegeSpieler(welt(), x, y, figur, wand, zeilen, spalten)
- zeigeWelt(welt(), zeilen, spalten)
- case "a"
- x = x - 1
- bewegeSpieler(welt(), x, y, figur, wand, zeilen, spalten)
- zeigeWelt(welt(), zeilen, spalten)
- case "d"
- x = x + 1
- bewegeSpieler(welt(), x, y, figur, wand, zeilen, spalten)
- zeigeWelt(welt(), zeilen, spalten)
- end select
- sleep 1
- loop until taste = chr(27) ' Spiel beenden mit ESC
- ' Spielende
- end
- ' Soll einfach nur die Welt auf dem Bildschirm ausgeben
- '
- sub zeigeWelt(welt() as string, zeilen as integer, spalten as integer)
- dim as integer j, k
- cls ' Bildschirm löschen
- for j = 0 to (zeilen - 1)
- for k = 0 to (spalten)
- print welt(j, k);
- next
- next
- end sub
- ' Soll den Spieler bewegen und Eingaben überprüfen ob Sie gültig sind
- ' und abfragen ob man gegen ein Objekt läuft usw
- '
- sub bewegeSpieler(welt() as string, x as integer, y as integer, figur as string, wand as string, zeilen as integer, spalten as integer)
- dim as integer alt_x = 0
- dim as integer alt_y = 0
- dim as integer j
- dim as integer k
- ' Alte Spielerpostion speichern
- alt_x = (x - 1)
- alt_y = (y - 1)
- if welt(y, x) = wand then ' Position zurücksetzen
- 'Aktuelle Spieler Position ermitteln
- '
- for j = 0 to (zeilen - 1)
- for k = 0 to (spalten)
- if welt(j, k) = figur then
- x = k
- y = j
- end if
- next
- next
- end if
- ' Wenn Spieler auf kein Objekt trifft weiter gehen
- '
- if welt(y, x) = " " then
- welt(y, x) = figur ' Spieler platzieren
- welt(alt_y, alt_x) = " " ' alte Spieler Position löschen
- end if
- end sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement