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:

Scrollmenüs und Irrenanstalten

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



Anmeldungsdatum: 08.12.2006
Beiträge: 19

BeitragVerfasst am: 08.12.2006, 22:05    Titel: Scrollmenüs und Irrenanstalten Antworten mit Zitat

Hallo Community,

Als völliger Neuankömmling wollte ich nicht nur "hallo" sagen, sondern auch mal ein etwas komplexeres Programm mit QBasic schreiben, meine Wahl fiel auf ein Textadventure namens "Die Anstalt".

Man wacht eines Tages in einer Irrenanstalt auf, ohne Erinnerungen. Das einzigste Ziel: Flucht! Das kann man auf mehreren Wegen erreichen und für mehrere verschiedene Parteien Aufträge erledigen. Selbst, wenn die Flucht gelingt merkt man, das das erst der Anfang war....

Nun zur Technik:

Da meine QBasic-Kenntnisse nur sehr begrenzt sind (wie mein Postcounter neutral ) kann man keine Qualität erwarten. So wird es ein reines Text-Adventure, ohne jegliche Grafik.

Dabei habe ich dieses Thema nicht nur eröffnet, um euch mein Projekt vorzustellen, sondern auch, um euch mal ein paar technische Fragen zu stellen. Sorry, aber im Bereich QBasic kenne ich mich nur extrem oberflächlich aus.

Bei der Wahl der "Menütechnik" entschied ich mich für das "Scroll-menü". Die Beispielprogramme auf dieser Homepage waren mir bis jetzt ein Rätzel. Ein Menü sollte im Prinzip so aussehen, wie jedes andere auch. Beim Hoch/Runter-scrollen sollte man natürlich auch erkennen können, was man gerade angewählt hat. Die Steuerung ist nur mit Hoch/Runtertaste zu bedienen und mit Enter zu bestätigen (Ist ja logisch). Wenn man sich für etwas entschieden hat, sollte nur der GOTO-Befehl ausgelöst werden, der Rest passiert dann in dem nächstem Menü.

In einem Beispielprogramm, das ich nach längerer Suche gefunden habe, waren alle Menüpunkte mit dem gleichem Namen versehen, was mir jedoch auch nicht weiterhilft.


Nochmals sorry, dass meine Fragen wahrscheinlich etwas doof klingen, aber sonst habe ich nirgens was gefunden. neutral

PS: Und was haltet ihr sonst von der Idee?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



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

BeitragVerfasst am: 08.12.2006, 23:00    Titel: Antworten mit Zitat

Textadventures sind immer gut. happy

Hm, hab im Moment leider keine Zeit, jetzt die Frage mit dem Menü zu beantworten, sorry. neutral
Aber 'nen kleiner Tipp:
vermeide GoTo wo's nur möglich ist - ich weiß, bei 'nem Textadventure ist das so 'ne Sache. Aber auch da kann man die Anzahl der GoTo's begrenzen. lächeln
_________________
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: 08.12.2006, 23:06    Titel: Antworten mit Zitat

Zum Thema Abenteuerspiel: Mein berühmter Artikel unter

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

=> nimm die dortigen Tipps als Basis für Dein Projekt.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
JaNg0



Anmeldungsdatum: 08.12.2006
Beiträge: 19

BeitragVerfasst am: 08.12.2006, 23:33    Titel: Antworten mit Zitat

Also, ich glaube, ich erkläre mal, wie mein Spiel aufgebaut werden soll (ist nämlich nicht ganz das, was du da gepostet hast zwinkern )

Am Anfang steht die Irrenanstalt (Man hat noch kein Ziel)

Kurz darauf wird man angesprochen und je nach Antwort entscheidet man sich für Partei A oder Partei B.

In Partei A/B muss man dann Aufträge erfüllen (z.B. "Suche den Mörder" durchgeknallt )

Dann erst hat man die Wahl, wo man hingeht undzwar nicht nach N/S/W/O, sondern z.B. "Küche", "Schlafräume", "Kapelle", ... Dort trifft man wieder auf Personen/Gegenstände/... die man benutzen/anreden/überzeugen/... muss, um etwas auszulösen. Nach einem bestimmtem Ereigniss gilt der Quest als gelöst und man kann weitermachen mit der nächsten Aufgabe.

Nach wenigen Quests kommt man dann hinaus und findet sich ein einer Stadt wieder, in der man wieder die Wahl zwischen Partei C und D hat (A und B haben nichts mit C und D zu tun). Da beginnt wieder die Story von vorne. Am Schluss wertet das Spiel aus, wie man gespielt hat und strickt aufgrund dieser Informationen das dritte Kapitel. Wenn man in der Zeit davor Aufträge für die Parteien A und C gelöst hat, dann verläuft das Spiel am Schluss anders, als bei der Wahl auf Partei A und D (oder B und C, oder ...). Das Spiel lebt nicht von der besonders großen Freiheit (es soll insgesamt nur 16 Kombinationen geben), sondern von den lustigen Dialogen und Situationen, die bei jeder Kombination anders sind. happy

PS: Ich weiß nicht, ob es das war, was ihr meint, oder nicht, deswegen habe ich nur nochmal zur Sicherheit gepostet. verlegen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 395

BeitragVerfasst am: 09.12.2006, 04:51    Titel: Antworten mit Zitat

Mein Tipp: zeichne dir ein Aktivitätendiagramm. Beginne mit der Anfangssituation und zeichne nun die Wege und Möglichkeiten auf, die dir offenstehen. So entsteht dann am Ende ein Gebilde mit vielen Verzweigungen. Jetzt fragst du dich bestimmt, warum das ganze? Ist doch langweilig! - Vielleicht, aber es hilft ungemein. Noch bevor du programmierst oder auch nur einen Gedanken ans Programmieren verschwendest, hast du den kompletten Spielablauf vor dir.
Du erkennst, ob alles logisch zusammenpasst und kannst vielleicht sogar immer wiederkehrende Strukturen erkennen, die du dir für deine Programmierarbeit zunutze machen kannst...
...so wird professionell gearbeitet: Problembeschreibung, Modell bauen, Analyse, Programmieren (,Wartung).

Genug geblubbert, ist schon spät, muss erstmal meinen Alkohol ausschlafen, cheers!
_________________
Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
dreael
Administrator


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

BeitragVerfasst am: 09.12.2006, 11:32    Titel: Antworten mit Zitat

Ich würde in Deinem Fall schauen, ein geeignetes Datenmodell auszumodellieren und schlussendlich in QB nur eine Art Abspielengine programmieren, so dass die einzelnen Aufgaben in Dateien vorliegen. Falls es ein grafisches Spiel werden soll, so würde ich pro Aufgabe sogar ein Unterverzeichnis anlegen, dort die .BMPs mit den Grafiken zusammen mit AUFGABE.DAT ablegen.

Ich gehe einmal richtig von der Annahme aus, dass Du im Stil der Lucasarts-Adventures auch Dialoge mit Auswahlantworten aufbauen willst. Hier könnte das Modell grob wie folgt aussehen: ID-Nr, Fragetext, Antwort mit Aktion (Aktion = ID-Nr des nachfolgenden Dialogs, der daraufhin erscheinen soll, evtl. Flag für "wurde bereits gefragt" setzen usw.).

Wir können Dir sonst bei der Analye und Design behilflich sein. Ich schlage einmal folgendes Vorgehen vor: Lass den PC einmal ausgeschaltet und nimm Bleistift und Block hervor und skizziere als primitiver "Film" Dein Spiel, d.h. stelle es Dir geistig fix und fertig auf dem Bildschirm vor und zeichne pro A4-Blatt einfach einen Screen davon. Klicke dann geistig eine Antwort an (Mauspfeil mit separater Farbe einzeichnen!) und zeichne aufs nächste Blatt, was daraufhin erscheinen soll. Wichtig: Verlier Dich dabei nicht in kleinen Details! z.B. in dieser Phase ist es noch vollkommen unwichtig, ob man die Antwort per Maus klickt oder Pfeiltasten verwendet, ebenso spielt auch der Grafikmodus noch keine Rolle. => Hintergrundgrafiken und Gegenstände nur als einfache Strichskizzen.

Am Schluss kannst Du alle Entwürfe einscannen, die .JPGs auf einen Webspace stellen und uns den Link posten, damit jeder von uns Deine Entwürfe studieren kann.

Schlussendlich solltest Du nach einigen Papier-"Screenshots" bald selber einmal merken, was die Spielengine alles können muss. Auf Basis dieser Anforderungen lässt sich dann das genaue Datenmodell für AUFGABE.DAT entwerfen.

Eine gut konzipierte Engine erlaubt es Dir später, neue Episoden in Form von .DAT-Dateien vom Spiel herauszugeben.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
JaNg0



Anmeldungsdatum: 08.12.2006
Beiträge: 19

BeitragVerfasst am: 09.12.2006, 12:13    Titel: Antworten mit Zitat

SpionAtom hat Folgendes geschrieben:
Mein Tipp: zeichne dir ein Aktivitätendiagramm. Beginne mit der Anfangssituation und zeichne nun die Wege und Möglichkeiten auf, die dir offenstehen. So entsteht dann am Ende ein Gebilde mit vielen Verzweigungen. Jetzt fragst du dich bestimmt, warum das ganze? Ist doch langweilig! - Vielleicht, aber es hilft ungemein. Noch bevor du programmierst oder auch nur einen Gedanken ans Programmieren verschwendest, hast du den kompletten Spielablauf vor dir.
Du erkennst, ob alles logisch zusammenpasst und kannst vielleicht sogar immer wiederkehrende Strukturen erkennen, die du dir für deine Programmierarbeit zunutze machen kannst...
...so wird professionell gearbeitet: Problembeschreibung, Modell bauen, Analyse, Programmieren (,Wartung).

Genug geblubbert, ist schon spät, muss erstmal meinen Alkohol ausschlafen, cheers!

Wie die Möglichkeiten in der Story aussehen, weiß ich schon sehr genau, aber ich muss mir nur noch Möglichkeiten innerhalb der Quests ausdenken (und die Quests ansich)

@dreael:

Nungut, es soll etwa so sein, dass man immer die Möglichkeiten hat, wie man eine Sache angeht und was man anderen sagt. Das hat wiederum Auswirkungen auf die Umwelt. Beispiel:

Questgeber: "Person A hat den Schlüssel, mit dem man Gegenstand X bekommen kann."

Nun kann man entweder Person A überzeugen (indem man die richtigen Worte auswählt), oder man muss den Schlüssel klauen (wobei man die richtige Taktik aussuchen muss). Wenn man klaut, dann mag die Person einen nicht, wenn man ihn überzeugt, gibt er freiwillig und ist glücklich. Wenn man Gegenstand X aufgesammelt hat, dann geht man zu Questgeber und kann ihn entweder belügen und sagen, es sei nichts in der Truhe gewesen (Einfluss auf Stimmung). Dann kann man den Gegenstand in einer anderen Quest benutzen, was alles einfacher macht. Oder man gibt ihm den Gegenstand und er mag einen so sehr, dass er vielleicht bei einer anderen Quest eine Verstärkung mitschickt. So wird der Einfluss auf die Spielwelt immer größer, sodass die Enden immer anders sind und dementsprechend anders verlaufen.

(Deswegen ist jeder Quest anders gestrickt, da ein Quest pro "Vorgeschichte" anders verläuft.)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 395

BeitragVerfasst am: 09.12.2006, 12:58    Titel: Antworten mit Zitat

Dann hast du für jede Quest gewisse Vor- und Nachbedingungen. Das ist schon ein ziemlich umfangreiches Projekt für einen völligen Neuankömmling.
Jedenfalls könntest du für jede Quest die Auswirkungen in Variablen oder Dateien speichern. Dann kannst du die folgenden Quests mit den gespeicherten richtig starten.
Es gibt viele Möglichkeiten sowas anzugehen. Du könntest auch einfach anfangen und wenn du nicht weiterkommst nochmal fragen... So weiß ich gar nicht genau, wie man dir helfen kann. verwundert
_________________
Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
JaNg0



Anmeldungsdatum: 08.12.2006
Beiträge: 19

BeitragVerfasst am: 09.12.2006, 13:06    Titel: Antworten mit Zitat

SpionAtom hat Folgendes geschrieben:
Dann hast du für jede Quest gewisse Vor- und Nachbedingungen. Das ist schon ein ziemlich umfangreiches Projekt für einen völligen Neuankömmling.
Jedenfalls könntest du für jede Quest die Auswirkungen in Variablen oder Dateien speichern. Dann kannst du die folgenden Quests mit den gespeicherten richtig starten.
Es gibt viele Möglichkeiten sowas anzugehen. Du könntest auch einfach anfangen und wenn du nicht weiterkommst nochmal fragen... So weiß ich gar nicht genau, wie man dir helfen kann. verwundert

Ich hatte das so geplant, dass bei bestimmten Antworten eine Variable auf 1 oder 0 gebracht wird. Und wenn diese Antwort in der Zukunft in einem anderen Teil des Programms eine Rolle spielt, dann kommt:

IF x = 1 then goto ...
oder:
IF a = 0 then print "..."

Diese Ifs sollen dann überall zu finden sein.

Meine größte Sorge sind allerdings die Menüs, da ich mich mal einmal von dem 1, 2 oder 3 (und mit Enter bestätigen) loslösen wollte, um mal etwas neues zu probieren. Dabei habe ich mich nunmal für das Scrollmenü entscheiden (hoch/runter/Enter), wobei ich allerdings nicht wirklich verstanden habe, wie die funktionieren (anhand einiger Beispiele).
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 395

BeitragVerfasst am: 09.12.2006, 13:29    Titel: Antworten mit Zitat

Du willst also, dass die Antworten untereinander aufgelistet sind, so dass du mit den Pfeiltasten eine von ihnen auswählen kannst.

Um die Antworten auf dem Bildschirm zu platzieren brauchst du LOCATE und PRINT. (um eine Antwort zu markieren, ebenfalls. Du könntest zb vor die momentan ausgewählte Antwort ein * schreiben)

Um diese Markierung (*) mit den Pfeiltasten nach oben und unten zu bewegen, brauchst du eine VARIABLE, die sich merkt, wo die Markierung gerade ist und eine INKEY$-Schleife.
Die Schleife könnte so aussehen:
Code:
auswahl = 1
DO
   taste$ = INKEY$
  'Taste hoch 
  IF taste$ = CHR$(0) + "H" THEN auswahl = auswahl - 1: IF auswahl < 1 THEN auswahl = 1
  'Taste Runter
  IF taste$ = CHR$(0) + "P" THEN auswahl = auswahl + 1: IF auswahl > 3 THEN auswahl = 3
  'Taste Return
  IF taste$ = CHR$(13)  THEN EXIT DO
  'Taste Esc
  IF taste$ = CHR$(27)  THEN END
LOOP


Die Schleife ist jetzt für 3 Antwortmöglichkeiten ausgelegt. Sie ist aber noch gänzlich unvollständig. Es fehlen die Antworten und die Auswahlmarkierung.
_________________
Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
JaNg0



Anmeldungsdatum: 08.12.2006
Beiträge: 19

BeitragVerfasst am: 09.12.2006, 15:34    Titel: Antworten mit Zitat

Danke für den Code, hat mir sehr weitergeholfen. Leider habe ich dann versucht, die Antwortmöglichkeiten so hinzuschreiben, dass alles in Echtzeit abläuft, und der Spieler auch weiß, was er angewählt hat. Dabei habe ich mir folgenden Code überlegt:

Code:
SCREEN 12
WIDTH 80, 60
auswahl = 1
a:
DO
CLS
IF auswahl = 1 THEN COLOR 9 ELSE COLOR 4
PRINT "Start"
IF auswahl = 2 THEN COLOR 9 ELSE COLOR 4
PRINT "Optionen"
IF auswahl = 3 THEN COLOR 9 ELSE COLOR 4
PRINT "Beenden"

   taste$ = INKEY$
  'Taste hoch
  IF taste$ = CHR$(0) + "H" THEN auswahl = auswahl - 1: IF auswahl < 1 THEN auswahl = 1: GOTO a
  'Taste Runter
  IF taste$ = CHR$(0) + "P" THEN auswahl = auswahl + 1: IF auswahl > 3 THEN auswahl = 3: GOTO a
  'Taste Return
  GOTO a
  IF taste$ = CHR$(13) THEN EXIT DO
  GOTO a
  IF taste$ = CHR$(27) THEN END
LOOP

b:
IF auswahl = 1 THEN PRINT "Sie wollten starten"
IF auswahl = 2 THEN PRINT "Sie wollten in die Optionen gehen"
IF auswahl = 3 THEN END


Leider habe ich dabei 2 Probleme:

1. Der Spieler schafft es nicht durch die Entertaste die Schleife zu verlassen, obwohl da "EXIT DO" steht.

2. Auch ist durch das ständige CLS das Menü sehr schlecht dargestellt, schließlich wird der Text tausendemale wegradiert und wieder hingeschrieben. Da schmerzen nach kurzer Zeit die Augen missbilligen Hab auch schon fast alles ausprobiert, aber bis jetzt ohne Erfolg.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Manuel



Anmeldungsdatum: 23.10.2004
Beiträge: 1271
Wohnort: Bayern

BeitragVerfasst am: 09.12.2006, 15:46    Titel: Antworten mit Zitat

Wenn du willst, könntest du auch folgendes Unterprogramm verwenden, um ein einfaches zu scrollendes Menü zu erstellen. Damit würdest du dir das zeitaufwendige Schreiben immer gleicher "Scroll-Codes" auf das Nötigste reduzieren:
Code:
DECLARE FUNCTION MenueEngine% (y%, x%, Auswahl$)

FUNCTION MenueEngine% (y%, x%, Auswahl$)
'
' Version 1.01
'
' MenueEngine-Function... Written by Manuel Kammermeier
' please DO NOT remove this comment ;-)
'
' MenueEngine-Funktion... Erstellt von Manuel Kammermeier
' Bitte diesen Kommentar NICHT loeschen ;-)
'
DO
        temp% = INSTR(Auswahl$, ";")
                LOCATE y% + AnzahlP%, x% + 3
        IF temp% <> 0 THEN
                PRINT LEFT$(Auswahl$, temp% - 1)
                Auswahl$ = MID$(Auswahl$, temp% + 1, LEN(Auswahl$) - temp%)
        ELSE
                PRINT Auswahl$
        END IF
        AnzahlP% = AnzahlP% + 1
LOOP UNTIL temp% = 0
Auswahl% = 1
LOCATE y%, x%
PRINT "->"
DO
        DO
                SLEEP
                a$ = INKEY$
        LOOP UNTIL a$ = CHR$(0) + CHR$(80) OR a$ = CHR$(0) + CHR$(72) OR a$ = CHR$(13)
        LOCATE y% + Auswahl% - 1, x%
        PRINT "  "
        IF a$ = CHR$(13) THEN
                MenueEngine% = Auswahl%
                LOCATE y% + AnzahlP%
                EXIT FUNCTION
        ELSEIF a$ = CHR$(0) + CHR$(80) THEN
                Auswahl% = Auswahl% + 1
                IF Auswahl% > AnzahlP% THEN Auswahl% = 1
        ELSEIF a$ = CHR$(0) + CHR$(72) THEN
                Auswahl% = Auswahl% - 1
                IF Auswahl% = 0 THEN Auswahl% = AnzahlP%
        END IF
        LOCATE y% + Auswahl% - 1, x%
        PRINT "->"
LOOP
END FUNCTION
Folgendes Beispielprogramm demonstriert, wie dieses Unterprogramm genau funktioniert:
Code:
CLS
PRINT MenueEngine%(10, 10, "Du nimmst die Kerze;Du sprichst denundden an;Was anderes...") 'Neue Auswahlpunkte werden durch ein ";" getrennt, es können beliebig viele Auswahlpunkte eingestellt werden
Statt eines PRINTs kannst du die Werte auch in einer Variable speichern und diese gewohnt mit IF etc. ansprechen.

EDIT: Genau den Post vor mir meinte ich: Du würdest zumindest die Anwahlpunkte auf eine einzige Codezeile pro scrollbarem Menü reduzieren^^.
_________________
DL Walk (Denkspiel) | DL Malek (Denkspiel) | DL Warrior (ASCII-Adventure) | DL Sokodos (Sokoban-Klon)
---
www.astorek.de.vu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger
JaNg0



Anmeldungsdatum: 08.12.2006
Beiträge: 19

BeitragVerfasst am: 09.12.2006, 16:52    Titel: Antworten mit Zitat

Danke auch dafür. Leider scheine ich das wohl mit meinem bescheidenem "Wissen" garnicht zu verstehen, sorry. verlegen Dafür habe ich den von mir oben geposteten Code verbessert, sodass Problem 1 wegfällt.

Code:
SCREEN 12
WIDTH 80, 60
auswahl = 1
a:
DO
CLS
IF auswahl = 1 THEN COLOR 9 ELSE COLOR 4
PRINT "Start"
IF auswahl = 2 THEN COLOR 9 ELSE COLOR 4
PRINT "Optionen"
IF auswahl = 3 THEN COLOR 9 ELSE COLOR 4
PRINT "Beenden"
SLEEP

   taste$ = INKEY$
  'Taste hoch
  IF taste$ = CHR$(0) + "H" THEN auswahl = auswahl - 1: IF auswahl < 1 THEN auswahl = 1:
  IF taste$ = CHR$(0) + "H" THEN GOTO a
  'Taste Runter
  IF taste$ = CHR$(0) + "P" THEN auswahl = auswahl + 1: IF auswahl > 3 THEN auswahl = 3:
  IF taste$ = CHR$(0) + "p" THEN GOTO a
  'Taste Return
  IF taste$ = CHR$(13) THEN EXIT DO
  IF taste$ = CHR$(27) THEN END
LOOP

b:
IF auswahl = 1 THEN PRINT "Sie wollten starten"
IF auswahl = 2 THEN PRINT "Sie wollten in die Optionen gehen"
IF auswahl = 3 THEN END


Leider besteht immernoch das Problem mit dem CLS. Gibt es da etwas besseres?

Edit:
Danke, ich habe nur einen SLEEP vergessen, jetzt funktioniert alles wunderbar. Danke nochmal ! zwinkern Daumen rauf!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Manuel



Anmeldungsdatum: 23.10.2004
Beiträge: 1271
Wohnort: Bayern

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

Jetzt nicht falsch verstehen, du bräuchtest dieses Unterprogramm nicht mal zu verstehen. Du musst nur wissen, wie man es benutzt zwinkern . Ich habe mir erlaubt, die Stelle mit meinem Unterprogramm zu verknüpfen:
Code:
SCREEN 12
WIDTH 80, 60
CLS
auswahl = MenueEngine%(1, 1, "Start;Optionen;Beenden")
IF auswahl = 1 THEN PRINT "Sie wollten starten"
IF auswahl = 2 THEN PRINT "Sie wollten in die Optionen gehen"
IF auswahl = 3 THEN END
Zusammen mit meinem Unterprogramm (die Stelle mit dem "DECLARE SUB") in einen Quellcode kopieren, das wars^^. Und jetzt zähle mal die Zeilen, die dein Quellcode hat und die Zeilen, die meines hat zwinkern . Wenn in deinem Spiel mehr als 10 Auswahlpunkte vorkommen, sparst du dir auf Dauer viel unnützes Abtippen von der Tastatur^^.
_________________
DL Walk (Denkspiel) | DL Malek (Denkspiel) | DL Warrior (ASCII-Adventure) | DL Sokodos (Sokoban-Klon)
---
www.astorek.de.vu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger
JaNg0



Anmeldungsdatum: 08.12.2006
Beiträge: 19

BeitragVerfasst am: 10.12.2006, 21:59    Titel: Antworten mit Zitat

Aaaah, danke, danke, danke Gnade, Gnade! Yahooo!!!! zwinkern

*copy* *paste* *freu* *dank* happy

Oxxx(=====> (Funktioniert (fast) perfekt) <=====)xxxO

edit: Ich hätte da doch ein Problem:

Wenn ich das alles in mein Programm einfüge, dann steht der Text mit den Auswahlmöglichkeiten und die Überschrift (bzw. der Text, der vorher stehen müsste) übereinander. neutral Sonst funktioniert es wirklich perfekt. lächeln

Code:
DECLARE FUNCTION MenueEngine% (y%, x%, auswahl$)
Menu:
CLS
SCREEN 12
WIDTH 80, 60
CLS
COLOR 4
PRINT "^  ___    ___   ___       _     _  _   ___   _____     _     _      _____  ^ "
PRINT "^ |   \  |_ _| | __|     /_\   | \| | / __| |_   _|   /_\   | |    |_   _| ^ "
PRINT "^ | |) |  | |  | _|     / _ \  | .` | \__ \   | |    / _ \  | |__    | |   ^ "
PRINT "^ |___/  |___| |___|   /_/ \_\ |_|\_| |___/   |_|   /_/ \_\ |____|   |_|   ^ "
PRINT "^                                                                          ^ "
PRINT "^                                                                          ^"
PRINT "^ DAS Adventure der Superlative                                            ^"
PRINT "^                                                                          ^"
PRINT "\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/"
PRINT
PRINT
PRINT
PRINT
auswahl = MenueEngine%(1, 1, "Start;Optionen;Beenden")
IF auswahl = 1 THEN PRINT "Sie wollten starten"
IF auswahl = 2 THEN PRINT "Sie wollten in die Optionen gehen"
IF auswahl = 3 THEN END
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Manuel



Anmeldungsdatum: 23.10.2004
Beiträge: 1271
Wohnort: Bayern

BeitragVerfasst am: 10.12.2006, 23:10    Titel: Antworten mit Zitat

Ganz einfach: Noch eine kurze Erklärung, wie das genauer geht zwinkern :

auswahl = MenueEngine%(1, 1, "Start;Optionen;Beenden")

Der erste Parameter (die Zahl 1 in blauer Farbe) gibt an, in welcher Zeile das Scrollmenü erscheinen soll. Der zweite Parameter (die Zahl 1 in grüner Farbe) gibt an, in welcher Spalte das Menü erscheinen soll. Du kannst den Teil des Quellcodes beispielsweise in
Code:
auswahl = MenueEngine%(12, 30, "Start;Optionen;Beenden")
abändern... Damit kannst du das Scrollmenü beliebig platzieren. lächeln

Nebenbei: Du bist nicht auf drei Auswahlpunkte beschränkt, du kannst auch bspw. nur zwei oder mehr als drei Auswahlmöglichkeiten geben (das ist jetzt auf die Funktion bezogen, nicht auf das Hauptmenü zwinkern ).
Code:
auswahl = MenueEngine%(1, 1, "Auswahl 1;Auswahl 2;Und so weiter;jaja...;dummdidumm;[Ende]")
Bemerkst du, woran erkannt wird, wann eine neue Auswahl erscheint? zwinkern Jeder Strichpunkt ";" fügt im Programm einen neuen auswählbaren Punkt zu.
_________________
DL Walk (Denkspiel) | DL Malek (Denkspiel) | DL Warrior (ASCII-Adventure) | DL Sokodos (Sokoban-Klon)
---
www.astorek.de.vu
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name Yahoo Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. 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