Reine Java-text-Schnittstelle für ein lustiges Spiel
OK, das hört sich wie eine verrückte Idee - aber ich bin interessiert in der Emulation eines 1980er-Jahre-Stil lustiges Spiel text-interface in Java, also mit Swing oder ähnliches.
Hier ist ungefähr das, was es tun muss:
- Bieten eine Feste Größe Rasters fester Größe Zeichen als der "Bildschirm" (z.B. 100*75)
- Verwenden Sie eine entsprechende nicht-proportional-Schrift, idealerweise mit vielen interessanten Symbole
- Ermöglichen die Einstellung von Vorder-und hintergrund, Charakter, Farben für jedes Zeichen an der position individuell
- Damit das drucken von strings oder einzelne Zeichen an einer beliebigen Stelle in den Bildschirm (das überschreiben sollen, was bereits in den screen-buffer an diesen Standorten)
Wer kennt eine funktionierende Lösung würde es ermöglichen, dass dieser? Oder bin ich stecken mit hacken zusammen von Grund auf neu?
p.s. der Grund ich will reines Java ist, so dass es ausführen kann, in einer Sandbox-applet. So JNI-Lösungen wie jcurses sind leider ausgeschlossen.....
- mögliche Duplikate von Java/swing: - Konsole-Komponente?
- Ich erinnere mich, als ich zum ersten mal Angband, es war so lange her, die Menschen nicht-auch nur einen Blick auf mich, als sei ich verrückt. 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht verrückt, das ist der Ansatz, den ich umgesetzt in Taschenspielertricks:http://roguelikefiction.com
Habe ich eine zwei-dimensionales array von Zeichen (char[][]) mit einem entsprechenden array von java.das awt.Color [] [] - Objekte zu verfolgen, die Farben. Sie können schieben, diese arrays in einer Klasse, die erbt von JPanel (die wiederum ist Teil eines JFrame) und nicht alle der Zeichnung in der Systemsteuerung die paintComponent () - callback.
Nichts falsch mit der Curses/JNI-Ansatz, obwohl Sie alle Arten von großen Unicode-Glyphen, wenn Sie gehen, der Swing-route. Taschenspielertricks verwendet, die fünf oder sechs hundert von Ihnen.
Für Projekte dieser Art, ich fand es unerlässlich, konsequent zu trennen, die Spiel-Modell und Ansicht. Diese einfache Beispiel schlage vor, die gesamte Architektur, und diese immer komplexer Spiel erweitert auf den Begriff. Der Vorteil ist, dass die Ansicht entstehen kann separat aus dem Spiel selbst, der kümmert sich nicht, was die hören view(s) Aussehen.
Für Symbole, Unicode-Symbole kann eine attraktive option, wie vorgeschlagen, in diesem Beispiel.
string[] Bildschirm = new string[75], dann füllen Sie einfach alle mit 100 Räumen :).
Siehe diese links für ein paar gute: http://cg.scs.carleton.ca/~luc/mono.html
Haben, könnten Sie diesen text-Effekte durch eine Steuerung, die erlaubt, dass das rendering von HTML-wie der JEditorPane. So könnte man einfach definieren, spezielle keywords wie "besonderes Schlüsselwort". (Ok, dass ist ein bisschen veraltet, aber sollte funktionieren gut für Ihren Fall. Es wäre am einfachsten, wenn Sie speichern Ihre "Spiel-Status" als nur eine normale string (array), aber die html gerendert, kurz bevor Sie ausgegeben werden.
Wenn Sie befolgt meinen Rat in der vorherigen Frage haben, als Sie Ihre gamestate als ein normales string-array, dann müssen Sie nur die Zeichenfolge für Ihre Linie finden, verwenden Sie string.substring(Länge) + "A" + string.substring(startindex: Länge + 2, string.Länge (Länge + 2)); zum Bau des neuen gamestate.
Ich habe einmal (vor Jahren) begonnen, um code so etwas wie dieses (ein terminal-Implementierung in Swing).
Ich kam zu dem Punkt, ich könnte die Anzeige von text mit ANSI-escape-Sequenzen für die cursor-Bewegung und Farben in es, aber nicht umsetzen Eingang. Wenn Sie interessiert sind, ich werde Graben Sie es aus.
Da sprichst du Schurke und Charakter-basierte Schnittstellen, um die Reise in die Vergangenheit abzuschließen, warum nicht Sie google für eine Curses-C-Implementierung und tun, den Blick mit JNI. Ihre Model-und Controller sind reguläre Java. Es ist ein Flüche Implementierung für fast jede Plattform.
Landete ich implementieren einen einfachen Swing-Konsole inspiriert durch viele der Antworten hier (danke an alle!)
Für diejenigen, die es interessiert, es ist hier verfügbar:
Swing-basierte Java-text-Konsole