Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Aus dem Programm gehen ohne den Spielfortschritt zu verliern

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Odys



Anmeldungsdatum: 14.01.2006
Beiträge: 40

BeitragVerfasst am: 30.01.2006, 15:10    Titel: Aus dem Programm gehen ohne den Spielfortschritt zu verliern Antworten mit Zitat

Ich habe ein Textadventure gemacht und wollte wissen wie man es schafft das der Spieler (Mit einer Taste,am besten ESC,muss aber nicht sein wenn es zu kompliziert ist) aus dem Programm rausgehen kann und dann beim nochmaligen öffnen des Programm genau an der selben Stelle des Spiels ist.
_________________
Ich bin (noch) kein Profi, habt etwas Verständnis !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 30.01.2006, 15:40    Titel: Antworten mit Zitat

Hallo!

Wenn ich das jetzt richtig verstanden habe, könnte dir folgendes vllt. weiterhelfen:

Speichere den Raum in dem man ist, das Inventar und was es sonst noch in deinem Textadventure gibt ab.
Dass das Fenster nach dem Drücken der Escape-Taste schließt, könntest du hiermit erreichen:
Code:

IF INKEY$=CHR$(27) THEN END ' 27 ist der ASCII-Code für Escape


Achja, zum speichern:

Code:

OPEN "spielstand.dat" FOR OUTPUT AS #1
PRINT #1, Raum
FOR speichereInventar=0 TO 9
PRINT #1, Inventar(speichereInventar)
NEXT speichereInventar


Für's laden kannst du das nehmen:

Code:

OPEN "spielstand.dat" FOR INPUT AS #1
INPUT #1, Raum
FOR ladeInventar=0 TO 9
INPUT #1, Inventar(ladeInventar)
NEXT ladeInventar


Das ganze könnte man noch dynamischer machen, sowohl von der Wahl des Dateinamens als auch mit dem Speicher und Laden des Inventars (unbegrenzt Inventar, durch dynamische Arrays und einer LOOP WHILE NOT EOF(1)-Schleife beim Laden, ...)

Hoffe das hilft lächeln

/edit: Das Inventar muss natürlich in einem Array gespeichert werden, die Werte dementsprechend auch...
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 30.01.2006, 16:37    Titel: Antworten mit Zitat

Artikel dazu:

http://www.dreael.ch/Deutsch/BASIC-Knowhow-Ecke/Abenteuerspiel.html

Auf das Thema Spielstandspeicherung wird dort ebenfalls eingegangen. In Deinem Fall kommt es konkret auf das gewählte Software-Design an, was Du speichern musst.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Odys



Anmeldungsdatum: 14.01.2006
Beiträge: 40

BeitragVerfasst am: 30.01.2006, 17:21    Titel: Antworten mit Zitat

Erstmal danke an Mao und dreal.
Aber ich dachte mir es eigentlich so das ich das so einrichten kann das der Spieler einfach aus dem Spiel rausgehten kann und dann wenn er das Programm nochmal öffnet sofort schon an der Stelle ist wo er aufgehört hat.
(Ohne das er Spiel speichern und laden muss)

p.s. Wenn das nicht möglich ist dann habe ich noch da Problem das Maos Programmierung bei mir in Line 4 fehlerhaft ist
_________________
Ich bin (noch) kein Profi, habt etwas Verständnis !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 30.01.2006, 17:45    Titel: Antworten mit Zitat

Ähm..ja, du musst das Array namens "Inventar" natürlich auch dimensionieren. zwinkern
Code:

DIM SHARED Inventar (9) AS String


Das bietet Platz für 10 aufnehmbare Gegenstände, was reichen dürfte. Natürlich musst du bei "nehme Notebook" dann auch "Notebook" in die Liste einfügen. Am Besten machst du das mit einem 2. Array, welches einen Byte-Wert aufnehmen kann. Auch mit 10 Elementen, dort speicherst du jeweils was in dem Array "Inventar" frei ist, um somit in "Inventar" herrein schreiben zu können. lächeln

Mein Code kannst du doch direkt als SUB benutzen.
Dann nimmst du eben statt
Code:

IF INKEY$=CHR$(27) THEN END


einfach
Code:

IF INKEY$=CHR$(27) THEN Speichern: END


Nicht vergessen, dass dann ebend auch die SUB "Speichern" angelegt werden muss, in welcher sich die kleine Routine befindet.
Das gleiche kannst du auch mit dem Laden machen:
einfach beim Start des Programmes den Spielstand als erstes laden. Hierzu empfielt es sich, wieder eine SUB mit Namen "Laden" zu erstellen.

So, ich hoffe das geht so. happy

/edit: Ich hatte ein SHARED vergessen -> geändert!
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz