Blitzmax Konsolenanwendungen im Fenster anzeigen? (TextAdv)

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Metamorphose

Betreff: Blitzmax Konsolenanwendungen im Fenster anzeigen? (TextAdv)

BeitragFr, Apr 10, 2009 10:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Salü.
Ich will mit BlitzMax ein Textadventure machen, hab früher in b3d programmiert und hab nu gesehn, dass alles was mit print("lala") und f$=Input("Frage") usw, halt die konsolenbefehle, in bmax einfach in der IDE ausgegeben werden, sprich man kanns nicht mehr schön wie in b3d einfach auf vollbild spielen.
Jetzt würd ich aber gerne mit den konsolenbefehlen arbeiten, da ich finde für ein einfaches textadventure bräucht man nicht irgendwelche schleifen und komplizierte befehle. eventuell täusche ich mich da ja.
gibts eine möglichkeit so zu proggen und es wird in einem fenster dargestellt/vollbild?
ich schätze nicht, wollte trotzdem nachfragen.
und wenn wir schon dabei sind: gibts ein tutorial das sich mit textadventures auseinandersetzt (nicht theoretisch oder in anderen programmiersprachen, am besten sogar ohne intepreter sondern nur im multiplechoice-verfahren)?
Was noch zu erwähnen wäre ist, dass ich blitzmax nicht "büffeln" will, eine auseinandersetzung ja - aber ich will nichts weiter damit programmieren als textadventures (da ich die einfach liebe) und keine 3d-spiele oder 2d-jumpnruns. Ich will auch nicht nichts dafür tun, sondern einfach mein wissen auf dies zentrieren und freude an der einschränkung auf textadventures haben, es liegt also auch nicht an faulheit.
Mal kucken wer sich jetzt meldet Wink Danke im voraus!

BladeRunner

Moderator

BeitragFr, Apr 10, 2009 10:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn Du die .exe als "Non-GUI-App" erstellst (siehe build options in der IDE) wird beim starten der exe ein Konsolenfenster geöffnet und dort alle Ausgaben hingeleitet. Vollbild ist ohne weiteres nicht drin.
Du wirst wenn Du aus der IDE heraus startest dennoch weiter alle Ein-Ausgaben dort haben- es funktioniert also nur wenn du die erstellte Exe startest - was ja auch der Endanwender tut.

Nebenbei erwähnt schränkst Du dich mit dem Verzicht auf einen Parser sehr ein. Ich persönlich fand multiple Choice-Advs rasch sehr ermüdend. Technisch ist es heutzutage kein Problem mehr jeden Infocom-Parser recht einfach in die Tasche zu stecken.
Viel Erfolg.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Metamorphose

BeitragFr, Apr 10, 2009 11:00
Antworten mit Zitat
Benutzer-Profile anzeigen
mir gehts eher darum, dass wenn man einen parser (ich dummerchen hab vorher intepreter geschrieben :S) drinne hat, die meisten textadventure-neulinge völlig überfordert sind, mit einem multiple-choice verfahren ist das ganze einsteigerfreundlicher.
Man kann sich auch darüber streiten ob man sowas angestaubtes und sagen wir mal "nerdiges" in der heutigen Zeit wie ein textadventure als konsolenapp einsteigerfreundlich machen kann Wink

BladeRunner

Moderator

BeitragFr, Apr 10, 2009 11:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin ein großer Freund der guten alten Textadventures, und von daher würde es mich betrüben wenn Du dich so sehr einschränkst. BMax bietet dir enorme Möglichkeiten, die du mit ein bissel Einarbeitungszeit nutzen könntest um eben Abstand von der Konsolenapp zu nehmen. Verschiedenfarbiger und formatierter Text wertet so ein Spiel enorm auf ohne vom eigentlichen Kern abzuschweifen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Metamorphose

BeitragFr, Apr 10, 2009 11:08
Antworten mit Zitat
Benutzer-Profile anzeigen
hm...
gibts da explizit ein tutorial dafür?
hab drum schon viel gegoogelt und spezifisch nichts gefunden.

BladeRunner

Moderator

BeitragFr, Apr 10, 2009 11:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Explizit Bmax und Adventures betreffend sicher nicht, nein. Was Adventures und ihren Aufbau angeht kann ich dir ein altes c64-Sonderheft von 1987 empfehlen, welches man dann und wann bei Ebay ergattern kann, denn es beschreibt sehr anschaulich alle Voraussetzungen für einen BTBTZ-Parser (better than better than Zork)
Allerdings wäre auch das heute nur bedingt hilfreich da dank der Objektorientierung von BMax ein Parser noch einfacher zu gestalten ist.
Ich fürchte also ich kann Dir nur raten mit Bmax zu spielen und anhand normaler Programmierer-Tutorials die Fertigkeiten zum Aufbau eines Parsers zu erwerben.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Metamorphose

BeitragFr, Apr 10, 2009 11:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Da ich ein ASCII-Adventure mache und das Titelbild gerade gestaltete merkte ich, dass die Konsolenanwendung mein "bild" nicht richtig darstellte, gibts ne möglichkeit die grösse der konsolenanwendung zu definieren?
Wenn nicht, muss ich wohl ernsthaft weg vom konsolenapp :S

BladeRunner

Moderator

BeitragFr, Apr 10, 2009 11:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Da wirst Du dich wohl mit drawtext und co anfreunden müssen Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Metamorphose

BeitragFr, Apr 10, 2009 11:43
Antworten mit Zitat
Benutzer-Profile anzeigen
na gut...
ich habs vermieden da ich schleifen NIE kapiert habe.
ich meine While Not KeyHit(KEY_ESCAPE) ist für mich logisch am anfang zu setzen, doch dann wiederholt es ja alles. oder muss man alles in if's setzen... also if titelbild =1 then titelschlaufe() oder sowas... da hab ich echt probleme... gibts ein gutes einsteigertutorial zur thematik ausser https://www.blitzforum.de/foru...hp?t=19917 - das kenn ich schon.

BladeRunner

Moderator

BeitragFr, Apr 10, 2009 11:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Tja, das ist der Weg moderner Programmierung. Die Mainloop sorgt dafür dass das Programm solange läuft wie du es benötigst, und innerhalb der mainloop werden dann Funktionen aufgerufen.
Welche Funktionen vonnöten sind bestimmst du anhand von statusvariablen die du bei bedarf setzt oder löschst.

simples beispiel ohne grosse Funktionalität:

Code: [AUSKLAPPEN]
SuperStrict

'init:
Graphics 640 , 480
SeedRnd MilliSecs()
Global gamestate:Int

Const GS_MENU:Int = 0
Const GS_GAME:Int = 1
Const GS_PAUSE:Int = 2
Const GS_END:Int = 3

Repeat
   Select gamestate
      Case GS_MENU
         menu()
      Case   GS_GAME
         game()
      Case GS_PAUSE
         pause()
      Case GS_END
         End
   End Select
   
   Flip
   Cls
Forever

Function menu()
   DrawText "Menu" , 0 , 0
   DrawText "Space for game, escape to end game",0,20
   If KeyHit(Key_space) Then gamestate = GS_GAME
   If KeyHit(Key_escape) Then gamestate = GS_END
End Function

Function game()
   DrawText "game" , 0 , 0
   DrawText "P for pause, escape for menu",0,20
   If KeyHit(Key_p) Then gamestate = GS_PAUSE
   If KeyHit(Key_escape) Then gamestate = GS_MENU
End Function

Function pause()
   DrawText "-paused-" , 0 , 0
   DrawText "p for game",0,20
   If KeyHit(Key_p) Then gamestate = GS_GAME
End Function
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Metamorphose

BeitragFr, Apr 10, 2009 12:12
Antworten mit Zitat
Benutzer-Profile anzeigen
wow, cooles beispiel.
wieso deklarierst du GS_GAME als 1 usw? und warum nen rnd drin?

BladeRunner

Moderator

BeitragFr, Apr 10, 2009 12:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Das seedrnd mach ich standardmässig in der main oben damit ich es nicht vergesse. wenn zufall gebraucht wird muss er ja initialisiert sein.
Und die Festlegung welcher gamestate welchen Wert hat ist willkürlich. Nur das GS_MENU die 0 hat war Absicht, damit das Spiel im Menu startet. (aber selbst da könnte man ja durch eine simple zuweisung vor der Mainloop jeden beliebigen Startwert festlegen.)
EDIT: Wichtig ist nur dass Du für alle Zustände die dein Spiel annehmen kannst nen Wert festlegst und dann anhand dessen die passenden Werte aufrufst.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Xeres

Moderator

BeitragFr, Apr 10, 2009 12:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du dich auf's schreiben von Adventures konzentrieren möchtest, kann ich dir da TAG empfehlen; der Text Adventure Generator ist für deutschsprachige Spiele sehr gut geeignet. Natürlich mit Parser - wenn du auf Multiple Choice beharren möchtest (und Grafik & Sound willst) ist es vermutlich gar nicht schlecht dir selbst was zu schreiben.
Wollte es nur erwähnt haben...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

jsp

BeitragFr, Apr 10, 2009 13:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier mal ein Link auf das ConIO Modul von Grable:
http://www.blitzbasic.com/Comm...845#758073

ist vielleicht auch ganz interessant fuer dein Projekt. Es kann farbigen Text ueberall ins Konsolenfenster schreiben und auch das Fenster selbst vergroessern - pseudo fullscreen:)
Logic Gui Professional a Gui Designer for MaxGui
 

Metamorphose

BeitragSa, Apr 11, 2009 9:28
Antworten mit Zitat
Benutzer-Profile anzeigen
salü
kannst du mir sagen wie ich conio implementier?
ich hab die text.bmx nicht mal zum laufen gebracht, auch gegoogelt und nix gefunden.
 

jsp

BeitragSa, Apr 11, 2009 11:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Funktioniert hier ganz normal, habs auch grad noch mal mit BMax 1.32 probiert.
Nach dem entpacken solltest du das grb.mod Verzeichnis in deinen BlitzMax mod Ordner kopieren, sieht dann so aus:
BlitzMax\mod\grb.mod\conio.mod\examples

Da die Beispiele ein Konsolenfenster brauchen, darfst du nicht 'Build Gui App' angeklickt haben, sonst wird das Konsolenfenster unterdrueckt!
Also am Besten alle Build Options abwaehlen, oder vielleicht noch Debug einschalten.
Dann einfach 'Build' waehlen um die .exe zu erzeugen, kein 'Build and Run'! Es wird direkt im Konsolenfenster gearbeitet, es laeuft nicht in der IDE (steht aber auch im Beispiel ganz oben).
Nach dem Build einfach die .exe starten...
Logic Gui Professional a Gui Designer for MaxGui

Geeecko

BeitragSa, Apr 11, 2009 12:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Ooooder du suchst dir die ganzen Funktionen aus der WinAPI heraus.
Damit kann man auch solche ConsolenFenster erstellen und was hereinschreiben...
Google einfach mal.

lg MD
....

BtbN

BeitragSa, Apr 11, 2009 13:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder du benutzt einfach DrawText und ein Grafisches Fenster.
 

Metamorphose

BeitragSa, Apr 11, 2009 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
danke, ihr habt mir alle sehr geholfen!
 

Metamorphose

BeitragSo, Apr 12, 2009 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
salü nochmals
ich hab nun probiert mit conio umzugehn, doch schnall ich das syntax nicht.
leider gibts auch keine hilfefiles oder docs darüber, wie man das konsolenfenster vergrössert.
ich habs mit folgendem probiert:
Code: [AUSKLAPPEN]

Framework GRB.conio
Import BRL.Retro
 
SuperStrict

Function SetConsoleSize( width:Int,height:Int, bufferwidth:Int=-1,bufferheight:Int=-1)

und auch die width usw abgeändert, wollte wissen obs überhaupt funzt, doch hatte nur fehlermeldungen. kann mir da nochmals jemand helfen?
grüsse

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group