Textadventure mit Grafiken - Möglich?



  • Hallo Leute!
    Mein erster Beitrag hier *trommelwirbel* 😃
    Und gleich die erste Frage:

    Ist es mit meinen Kenntnissen (programmiere seit einem Jahr schulisch (bin in der 10.Klasse) C++, dürfte Grundlagenkenntnisse haben (Bildschirmein- und ausgabe,Schleifen, if-Bedingungen, switch, Klassen)) möglich, ein Textadventure im Vollbildmodus mit ein paar Grafiken oder zumindest einer veränderten Hintergrundfarbe und Schriftart zu programmieren?

    Die Konsole nervt mich schön langsam und ist auch ziemlich langweilig (will mein Textadventure ein wenig aufpeppen)...

    Ich habe mir bereits SDL angesehen, hab jedoch keinen Befehl gefunden, mit dem man einen Text ausgeben könnte (man kann nur mit z.B. Photoshop einen "Button" erstellen und den dann in SDL einfügen, ist jedoch ziemlich kompliziert).

    Brauche nun eure Ratschläge, soll ich am Textadventure in der Konsole weitermachen, oder gibt es eine Alternative zur Konsole?

    MfG,
    AltesTestament 🤡 (bin übrigens nicht streng gläubig, meine Initialen sind nur AT, deswegen der Name 😉 )



  • Schau dir mal SDL_ttf an. Das rendert Texte in beliebiger Größe aus einer TTF-Datei wahlweise in UTF-8 ( http://www.unicode.org ) auch antialiased auf ein SDL_Surface. Aber ein Textadventure ist doch ein Textadventure und kein Graphikadventure 😕 Sollte ein Textadventure also wo anders laufen als in der Konsole? SDL_ttf scheint auf jeden Fall nicht schlecht zu sein.
    geloescht



  • geloescht schrieb:

    Aber ein Textadventure ist doch ein Textadventure und kein Graphikadventure 😕 Sollte ein Textadventure also wo anders laufen als in der Konsole?

    Ja, wie gesagt, ein paar Bilder, eine andere Hintergrundfarbe, andere Schriftarten und Vollbildmodus würden sowas ein wenig "aufpeppen" und auch interessanter zum Spielen machen.
    Deswegen ja meine Frage, ob man das ohne großen zusätzlichen Aufwand (siehe 4-seitenlanger Quelltext für ein einfaches Menü ^^) möglich ist.
    MfG,
    AT



  • Ohne großen zusätzlichen Aufwand wird schwer machbar sein. Graphikprogrammierung ist ein ganz anderes Kapitel als die Konsole. Höchstwahrscheinlich würde es darauf hinauslaufen, einen mehr oder weniger großen Teil komplett umzuschreiben, je nach dem, wie alles gekapselt ist. Vielleicht wärst du mit einer Lib, die auf der Konsole aufbaut besser beraten. Ich kenne leider da nix, aber Marc++us hat mal "ImprovedConsole" geschrieben. Damit kann man zumindest farbige Ausgabe machen. Habe ich selbst noch nie probiert.
    geloescht



  • Es ist halt so, dass ich mit meinen Textadventure noch nicht sehr weit bin (für einen geübten Programmierer ca. 3 Stunden Aufwand), könnte daher sogar das ganze neu schreiben und anpassen.

    Aber allein die Farbe vom Text verändern, wär schon ein Hit! 😃

    <edit>
    Hab mir jetzt das mit der "Improved Console" durchgelesen. Klingt schonmal interessant, nur müsste ich dafür wohl alles umschreiben... 😞
    Verwende nämlich printf(), anstatt von cout... (hat mir mein Lehrer so beigebracht, aber der nächste Jahrgang arbeitet seltsamerweise mit cout)
    Aber wenn ich mich hier allgemein umsehe, glaube ich, dass das Programmieren mit printf() altmodisch ist...
    </edit>

    MfG,
    AT



  • Textadventure mit Grafik geht nicht. Ist ja dann kein Textadventure mehr...

    BTW: XGameSDK und Dus-Framework können Text ausgeben.

    Bye, TGGC (Demo or Die)



  • Gut, dann erfinden wir jetzt hier ein neues Genre!

    Textgraphicsadventure [Text·graph·ics·ad·ven·ture]
    das; -s
    beinhaltet als Basis ein Textadventure, das durch Grafiken, Animationen und Buttons, die durch die Maus betätigt werden, unterstützt und bereichert wird

    Ich hoffe jetzt wissen alle, was ich programmieren möchte, wie ich dort hinkomme ist mir eigentlich egal. Sollte halt für mein junges Gemüt verständlich sein 😉

    <edit>
    Woher bekomme ich XGameSDK oder Dus-Framework?
    Bei XGameSDK gibts im Google zwar was, aber die Seiten sind alle nicht mehr aktiv...
    </edit>

    MfG,
    AT



  • Mit dem XGamesSDK wird es das selbe Problem sein wie mit SDL (Und außerdem ist es garnicht mehr portabel, da XGamesSDK direkt auf DirectX aufsetzt): Man muss es neu schreiben. Wenn du printf verwendest ist es sogar noch schwieriger. Mit cout hätte man vielleicht noch ne neue Streamklasse erfinden können. Ich denke, ohne Umformung wirst du das nciht hinbringen.
    Mit printf gibt man in C Texte aus. In C++ verwendet man Streams. Cout steht dabei für die Standardausgabe. printf funktioniert in C++ zwar, hat aber viele Nachteile gegenüber Streams.
    geloescht



  • AltesTestament schrieb:

    <edit>
    Woher bekomme ich XGameSDK oder Dus-Framework?
    Bei XGameSDK gibts im Google zwar was, aber die Seiten sind alle nicht mehr aktiv...
    </edit>

    http://tggc.tg.funpic.de/index.php?cat=5

    Bye, TGGC (Demo or Die)



  • Früher auf dem good old c64 gabs jede Menge solcher Adventures mit einem Bild und Beschreibung und dazu halt die Parser-Eingabe. Zum Beispiel "Asylum", "Space Quest" (teilweise), "Drachental" etc. (Vermutlich gehts hier aber wieder nur um die Definition des Wortes 🙄 )

    Ich würde dafür vielleicht mit WinAPI anfangen. Ein Bitmap in ein Fenster zeichnen und ein bissel Text dazu dürfte nicht sooo schwer für dich sein.



  • falls du WinAPI tutorials suchst kannst du dich hier mal umschaun:
    http://www.robsite.de/tutorials.php?tut=windows

    Aber meines wissens ist mit WinAPI nur ein maximiertes Fenster möglich kein richtiger FullScreen Modus. Sollte dir ein maximiertes Fenster allerdings reichen würd ich dir auch WinAPI empfehlen.

    Oder wers Plattformunabhängig will wxWidgets (kenn ich aber atm nur vom namen 🙄 )



  • Von mir aus würde ich mein Programm auch auf cout umschreiben, wenn das mit der Streamklasse besser funktioniert als ImprovedConsole...
    Hätte für so eine Streamklasse vielleicht jemand ein Programm zum Testen oder würde sich jemand die Mühe machen soetwas zu schreiben?



  • Nein, auf cout umschreiben lohnt sich nicht. Ich wollte nur andeuten, dass es einfacher wäre, das ganze z.B. auf SDL umzuschreiben, wäre es mit Streams geschrieben.
    geloescht



  • Das es einfacher ist, heißt nicht, dass es unmöglich ist!
    Wäre nett, wenn mir jemand dabei helfen könnte, das auf SDL umzuschreiben, bzw. mir helfen könnte, SDL zu begreifen... 🙄
    Was ich bisher von SDL so gesehen hab, ist es ja nicht dafür gedacht unter anderem auch Text auszugeben. Für jeden Text, den ich schreiben will, eine Bitmap einladen, wäre natürlich etwas viel Arbeit und wie ich das mit den Spielereingaben in SDL mache, ist mir dann auch ein Rätsel.

    Ich bitte daher höflichst um eine kleine Hilfe dabei...

    MfG,
    AT



  • Es gibt verschiedene Lösungsansätze. EInmal kannst du dir ne Zusatz-Lib besorgen, wie SDL_ttf. Oder du machst dir einmal ne Bitmap, die alle Zeichen in deinem Zeichensatz enthält (wahrscheinlich latin1). Das sing ja insgesamt 256 Zeichen, also machst du dir eine Bitmap mit b = 8*breite_eines_buchstaben und l = 8*hoehe_eines_buchstaben. Da malst du die Zeichen rein (gibt wahrscheinlich Programme, die das für dich machen). Wenn du jetzt ein C ausgeben willst, hat das den Index: 67. Daraus kannst du jetzt rechnen, wo dein Buchstabe im Bitmap liegt udn dann diesen Teil der Bitmap blitten. Für diese Vorgehensweise findest du viel im Internet.
    geloescht



  • Einfach printf() selber definieren. 🤡 👍

    Taelan schrieb:

    Aber meines wissens ist mit WinAPI nur ein maximiertes Fenster möglich kein richtiger FullScreen Modus. Sollte dir ein maximiertes Fenster allerdings reichen würd ich dir auch WinAPI empfehlen.

    Doch, natürlich. Oder wie denkst Du geht das mit OpenGL?

    Cpp_Junky schrieb:

    Früher auf dem good old c64 gabs jede Menge solcher Adventures mit einem Bild und Beschreibung und dazu halt die Parser-Eingabe. Zum Beispiel "Asylum", "Space Quest" (teilweise), "Drachental" etc. (Vermutlich gehts hier aber wieder nur um die Definition des Wortes 🙄 )

    Yo, und Brubaker! Schade, daß ich immer von den Robotern abgeschossen wurde... 😡


Anmelden zum Antworten