 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
JaNg0

Anmeldungsdatum: 08.12.2006 Beiträge: 19
|
Verfasst am: 08.12.2006, 22:05 Titel: Scrollmenüs und Irrenanstalten |
|
|
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 ) 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.
PS: Und was haltet ihr sonst von der Idee? |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 08.12.2006, 23:00 Titel: |
|
|
Textadventures sind immer gut.
Hm, hab im Moment leider keine Zeit, jetzt die Frage mit dem Menü zu beantworten, sorry.
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.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
|
Nach oben |
|
 |
JaNg0

Anmeldungsdatum: 08.12.2006 Beiträge: 19
|
Verfasst am: 08.12.2006, 23:33 Titel: |
|
|
Also, ich glaube, ich erkläre mal, wie mein Spiel aufgebaut werden soll (ist nämlich nicht ganz das, was du da gepostet hast )
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" )
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.
PS: Ich weiß nicht, ob es das war, was ihr meint, oder nicht, deswegen habe ich nur nochmal zur Sicherheit gepostet.  |
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 395
|
Verfasst am: 09.12.2006, 04:51 Titel: |
|
|
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 |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 09.12.2006, 11:32 Titel: |
|
|
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 |
|
 |
JaNg0

Anmeldungsdatum: 08.12.2006 Beiträge: 19
|
Verfasst am: 09.12.2006, 12:13 Titel: |
|
|
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 |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 395
|
Verfasst am: 09.12.2006, 12:58 Titel: |
|
|
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.  _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
JaNg0

Anmeldungsdatum: 08.12.2006 Beiträge: 19
|
Verfasst am: 09.12.2006, 13:06 Titel: |
|
|
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.  |
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 |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 395
|
Verfasst am: 09.12.2006, 13:29 Titel: |
|
|
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 |
|
 |
JaNg0

Anmeldungsdatum: 08.12.2006 Beiträge: 19
|
Verfasst am: 09.12.2006, 15:34 Titel: |
|
|
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 Hab auch schon fast alles ausprobiert, aber bis jetzt ohne Erfolg. |
|
Nach oben |
|
 |
Manuel

Anmeldungsdatum: 23.10.2004 Beiträge: 1271 Wohnort: Bayern
|
Verfasst am: 09.12.2006, 15:46 Titel: |
|
|
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 |
|
 |
JaNg0

Anmeldungsdatum: 08.12.2006 Beiträge: 19
|
Verfasst am: 09.12.2006, 16:52 Titel: |
|
|
Danke auch dafür. Leider scheine ich das wohl mit meinem bescheidenem "Wissen" garnicht zu verstehen, sorry. 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 !  |
|
Nach oben |
|
 |
Manuel

Anmeldungsdatum: 23.10.2004 Beiträge: 1271 Wohnort: Bayern
|
Verfasst am: 09.12.2006, 17:21 Titel: |
|
|
Jetzt nicht falsch verstehen, du bräuchtest dieses Unterprogramm nicht mal zu verstehen. Du musst nur wissen, wie man es benutzt . 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 . 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 |
|
 |
JaNg0

Anmeldungsdatum: 08.12.2006 Beiträge: 19
|
Verfasst am: 10.12.2006, 21:59 Titel: |
|
|
Aaaah, danke, danke, danke
*copy* *paste* *freu* *dank*
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. Sonst funktioniert es wirklich perfekt.
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 |
|
 |
Manuel

Anmeldungsdatum: 23.10.2004 Beiträge: 1271 Wohnort: Bayern
|
Verfasst am: 10.12.2006, 23:10 Titel: |
|
|
Ganz einfach: Noch eine kurze Erklärung, wie das genauer geht :
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.
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ü ). 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? 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 |
|
 |
|
|
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.
|
|