# Text Adventure programmieren



## Luchsderspieler (16. April 2014)

Hi Leute, Wie die Überschrift schon sagt möchte ich ein Text Adventure programmieren, ich kann jedoch kein Java, C, C++, ... Geplant ist in etwa so eine Oberfläche wie bei "Wer wird Millionär" nur das alle Möglichkeiten linksgebunden sind und es nur drei sind, im Hintergrund möchte ich noch ein Bild einblenden. Welche Programmiersprache soll ich nehmen? Hab schon ein bisschen mit ADRIFT experimentiert entspricht aber nicht meiner Vorstellung.


  LG Luchs


----------



## XPrototypeX (16. April 2014)

Bei soetwas bietet sich Java an. Leichte einfach zu lernende Oberflächen API wie JavaFX oder SWING. Außerdem Platform unabhängig. 

Eine alternative wäre vielleicht noch C#.

C würde ich auf gar keinen Fall für so eine Anwendung verwenden.


----------



## Multithread (16. April 2014)

Java oder C#, sehe ich genauso.

Wichtig wäre wohl auch das man es von anfang an richtig mit OOP macht.


----------



## Artschie321 (16. April 2014)

VB.Net wäre vlt auch eine Option...
Ist sehr simpel und objektorientiert


----------



## XPrototypeX (16. April 2014)

VB.net würde ich nicht nehmen. Meiner Meinung nach ist es nichts halbes und nicht ganzes. Java, C++, C# sind von der Syntax her relativ änlich. Wenn du später größere Projekte in angriff nimmst, hilft es dir enorm eine strikte OOP Sprache gelernt zu haben.
Soll heißen die 3 oben genannten Programmiersprachen machen mehr Sinn zu lernen wenn du wirklich Fuß in der Programmierung faßen willst.


----------



## XPrototypeX (16. April 2014)

-----


----------



## Paulebaer1979 (16. April 2014)

Alternativ kann man das auch mit reinem HTML und CSS machen. Bedingt halt nur sehr viele HTML-Dateien und zur Handlung passende Verweise/Links untereinander.

So in der Art: Willst du nach rechts oder links gehen an der Verzweigung? Links verweist dann auf ein anderes HTML-Dokument als rechts und gut ist. So mit allen Wahlmöglichkeiten verfahren und schon hat man einen schicken "Verzweigungsbaum".


----------



## Artschie321 (16. April 2014)

Ja wobei ich JAVA auch auf genau die "nichts halbes und nichts ganzes" Stufe stellen würde.
C++ / C# sind schon echt nice, nur die Frage ob das für so ein Vorhaben nicht schon etwas zu kompliziert ist.


----------



## Luchsderspieler (16. April 2014)

Multithread schrieb:


> Java oder C#, sehe ich genauso.  Wichtig wäre wohl auch das man es von anfang an richtig mit OOP macht.


 Danke für die vielen Antworten 
Die größte Frage die sich mir stellt ist was eine OOP Sprach ist?


----------



## Multithread (16. April 2014)

Paulebaer1979 schrieb:


> Alternativ kann man das auch mit reinem HTML und CSS machen. Bedingt halt nur sehr viele HTML-Dateien und zur Handlung passende Verweise/Links untereinander.
> 
> So in der Art: Willst du nach rechts oder links gehen an der Verzweigung? Links verweist dann auf ein anderes HTML-Dokument als rechts und gut ist. So mit allen Wahlmöglichkeiten verfahren und schon hat man einen schicken "Verzweigungsbaum".


Damit hast du im grunde genau 0 möglichkeiten wirklich was zu machen. ich habe schon mal ine 'Questengine' gemacht für solche Text adventures, da geht so unglaublich viel
Deine HTML Engine könnte in etwa so viel wie viele aktuelle Spiele.
Wenn du noch JS hinzunimmst, könnte es sogar was werden.



Luchsderspieler schrieb:


> Danke für die vielen Antworten
> Die größte Frage die sich mir stellt ist was eine OOP Sprach ist?


 OOP ist ObjektOrientierte Programmierung.

Also zb. das eine Frage und deren Antworten jewiels ein Objekt sind (Mit Frage, Antwort1, ..., Antwortn. Sowie je einer verlinkung auf das Objekt von Antwort1 bis Antwortn).
Dadurch kannst du mit einer relativ einfachen Programmlogik (Du musst immer nur das aktuelle Objekt auswerten, wo du bist spielt keine rolle) sehr komplexe Quests und Textreihenfolgen aufbauen.
Entsprechend einfach ist das ganze dann auch zu warten.
Das Laden dess Textadventures von einer Textdatei aus, oder von einer DB aus ist dadurch sehr leicht zu implementieren.

Solche eine Quest klasse sähe dann etwa so aus:

```
public Class Quest{
 public Quest(){}
 public string frage="Wie geht es dir?";
 public string antwort1="gut.";
 public string antwort2="schlecht";
 public Quest antwort1Quest;
 public Quest antwort2Quest;
}
```
Die müsste man dann beim Starten des Programmes laden und die einzelnen Quests aufbauen.
Und danach anzeigen und jedesmal beim Auswählen einer Antwort die Angezeigte Quest durch die Quest der entsprechenden antwort ersetzten.


Im gegensatz dazu stehen die if Bäume die von Anfängern gerne gemacht werden: Kompliziert, fehlersuche schwer, es spielt eine rolle wo man in der Quest ist.
Versuch den If Baum mal dynamisch zu laden


----------



## Rho (16. April 2014)

Paulebaer1979 schrieb:


> Alternativ kann man das auch mit reinem HTML und CSS machen. Bedingt halt nur sehr viele HTML-Dateien und zur Handlung passende Verweise/Links untereinander.



Wäre sicher die simpelste, aber auch die unflexibelste und am schwersten zu wartende Möglichkeit das zu realisieren.



Multithread schrieb:


> Wenn du noch JS hinzunimmst, könnte es sogar was werden.



JavasScript + HTML/CSS wäre wirklich eine brauchbare Alternative, die man in Erwägung ziehen sollte. Netter Nebeneffekt wäre, dass das Spiel plattformübergreiffend läuft und auch online spielbar ist.


----------



## Luchsderspieler (16. April 2014)

Also sollte ich Java benutzen, wo soll ich den Code dann eingeben. Ich bin wirklich absoluter Anfänger


----------



## Artschie321 (16. April 2014)

Dafür brauchst du die passende Entwicklungsumgebung bzw Editor.
Ich habe vor ein Paar Jahren mal was von Eclipse für Java gehört, sollte damals wohl ganz gut gewesen sein...


----------



## Rho (16. April 2014)

Luchsderspieler schrieb:


> Also sollte ich Java benutzen, wo soll ich den Code dann eingeben. Ich bin wirklich absoluter Anfänger



Du solltest gar nichts. Das sind alles nur Vorschläge. Wofür du dich letztendlich entscheidest ist ganz dir überlassen. In jedem Fall wirst du aber einiges an Zeit investieren müssen um dich in die jeweilige Sprache einzulesen und zu üben.

Falls du dich auf die Beiträge bezüglich HTML + JavaScript beziehst, gilt es zu beachten dass JavaScript etwas völlig anderes ist als Java. Die beiden Sprachen haben abgesehen vom ähnlichen Namen rein gar nichts gemeinsam.



Artschie321 schrieb:


> Ja wobei ich JAVA auch auf genau die "nichts halbes und nichts ganzes" Stufe stellen würde.


Warum?


----------



## Laudian (16. April 2014)

Luchsderspieler schrieb:


> Also sollte ich Java benutzen, wo soll ich den Code dann eingeben. Ich bin wirklich absoluter Anfänger


 
Hier findest du das offizielle Java Tutorial: The Java™ Tutorials

Unter "Trails Covering the Basics" einfach die Liste abarbeiten, damit hast du auf jeden Fall einen guten Einstieg.


----------



## Multithread (16. April 2014)

Rho schrieb:


> JavasScript + HTML/CSS wäre wirklich eine brauchbare Alternative, die man in Erwägung ziehen sollte. Netter Nebeneffekt wäre, dass das Spiel plattformübergreiffend läuft und auch online spielbar ist.


Ist aber mit JSON und co ebenfalls relativ schwer

Für Java würde ich netbeans als IDE nehmen. die macht das relativ gut.


----------



## Rho (16. April 2014)

Multithread schrieb:


> Ist aber mit JSON und co ebenfalls relativ schwer


Weil?


----------



## Multithread (16. April 2014)

Rho schrieb:


> Weil?


 Client Serv er Kommunikation. Als Anfänger ist das schwer. 

Mit JS solch eine Kommunkation aufzubauen ist selbst dann noch schwer wenn man vorhin schon auf TCP ebene und auf DB ebene Solche Verbindungen benutzt hat.
Ich kämpfe zb. seit 2 Tagen damit. Mit Single Page Websites um genau zu sein.

Ich weiss nicht wie viel einfacher das wird, wenn man Javascript effektiv spricht und nicht nur lesen kann.


----------



## Luchsderspieler (16. April 2014)

Kennt jemand Inform7 oder was es genau kann?


----------



## Rho (16. April 2014)

Multithread schrieb:


> Client Serv er Kommunikation. Als Anfänger ist das schwer.
> 
> Mit JS solch eine Kommunkation aufzubauen ist selbst dann noch schwer wenn man vorhin schon auf TCP ebene und auf DB ebene Solche Verbindungen benutzt hat.
> Ich kämpfe zb. seit 2 Tagen damit. Mit Single Page Websites um genau zu sein.



Du verkomplizierst das Ganze wohl auch etwas. Per JavaScript Daten nachzuladen, die auf dem gleichen Server liegen, ist denkbar einfach.
Abgesehen davon sollte es aber in seinem Fall nicht mal notwendig sein, Daten dynamisch nachzuladen.



Multithread schrieb:


> Ich weiss nicht wie viel einfacher das wird, wenn man Javascript effektiv spricht und nicht nur lesen kann.


?


----------



## Multithread (16. April 2014)

Luchsderspieler schrieb:


> Kennt jemand Inform7 oder was es genau kann?


 Sieht nach Single page Website aus.

Was die aber sonst so machen: keine Ahnung.




Rho schrieb:


> Du verkomplizierst das Ganze wohl auch etwas. Per JavaScript Daten nachzuladen, die auf dem gleichen Server liegen, ist denkbar einfach.
> Abgesehen davon sollte es aber in seinem Fall nicht mal notwendig sein, Daten dynamisch nachzuladen.


Was heisst auf dem gleichen Server? Sicher das wir beide vom Gleichen reden? Ich sehe das so das das JS auf dem Client läuft und die daten vom Server hohlt.

 Mag sein, aber auch ohne das nachladen von daten ist es mMn mit JS komplizierter als mit Java oder C#. 
Und die Dynaik geht mit JS ohne einen Server zum Daten 'nachladen' auch verloren.

Wenn du so gut mit JS bist, kannst du mir eventuel ja bei meinem problem helfen, ich habe eine Asynchrone Server Client mit knockout und einen IIS auf C# basis als Server. Der Client ist eine SPA und macht nicht was ich will.
zb. wenn ich meine Eigene Seite aufrufe, wird die zuletzt angezeigte nicht sauber ausgeblendet.

EDIT:


Rho schrieb:


> ?


Ich spreche kein javascript. habs bisher nie gelernt. Ich spreche genau Java und C#


----------



## XPrototypeX (16. April 2014)

Ich dachte es soll keine Webanwendung werden? Wenn doch einfach mal nach GWT suchen. Übersetzt java auf der Client seite nach Javascript. Benötigt allerdings für den Server einen Tomcat. Die Client / server kommunikation übernimmt dabei GWT für dich. 

Ein Hexenwerk ist das überhaupt nicht.


----------



## Rho (16. April 2014)

Multithread schrieb:


> Was heisst auf dem gleichen Server? Sicher das wir beide vom Gleichen reden? Ich sehe das so das das JS auf dem Client läuft und die daten vom Server hohlt.


Damit meine ich, dass Website und nachzuladende Daten von der gleichen Quelle kommen und es zu keinen Komplikationen bezüglich Same-Origin-Policy kommt.



Multithread schrieb:


> Mag sein, aber auch ohne das nachladen von daten ist es mMn mit JS komplizierter als mit Java oder C#.


Das würde ich so pauschal nicht sagen.



Multithread schrieb:


> Und die Dynaik geht mit JS ohne einen Server zum Daten 'nachladen' auch verloren.


Nein, die "Quests" ändern sich ja nicht während des Spielens plötzlich und es werden wohl auch nicht so viele sein, dass man sie nicht auf einmal beim Start des Spiels laden kann.



Multithread schrieb:


> Wenn du so gut mit JS bist, kannst du mir eventuel ja bei meinem problem helfen


Dass ich so "gut" sein soll, was JS angeht, halte ich für übertrieben. Falls ich versuchen soll, dir zu helfe, geht das aber wohl kaum, ohne den betreffenden Code gesehen zu haben.


----------



## Multithread (16. April 2014)

Rho schrieb:


> Nein, die "Quests" ändern sich ja nicht während des Spielens plötzlich und es werden wohl auch nicht so viele sein, dass man sie nicht auf einmal beim Start des Spiels laden kann.


Wieso nicht? wenn du jemanden Tötest, dann kannst du mit dem nicht mehr reden. Dies kann wiederum auf andere Quests auswirkungen haben. 


Lad dir mal Visual Studio 2013 Express for web runter und mach ein neues C# projekt als SPA, dann weisst du wie ich mich in etwa fühle
Ich bin irgendwo zwischen Knockout und Javascript gefangen und habe keine Ahnung wie die Sprache geht.

Für den Anfang würde ich aber weiterhin irgendwas mit einer IDE Empfehlen, eben C# oder Java. Dort findet man im netzt auch für fast jedes erdenkliche Problem eine Lösung.


----------



## Rho (16. April 2014)

Multithread schrieb:


> Wieso nicht? wenn du jemanden Tötest, dann kannst du mit dem nicht mehr reden. Dies kann wiederum auf andere Quests auswirkungen haben.


Die Menge aller Quests so wie deren Verknüpfung ändert sich nicht, es sei denn man ändert/erweitert das Spiel selbst. Es besteht also keine notwendigkeit während des Spielens einzelne Quests dynamisch nachzuladen.




Multithread schrieb:


> Lad dir mal Visual Studio 2013 Express for web runter und mach ein neues C# projekt als SPA, dann weisst du wie ich mich in etwa fühle


Habe bereits VS Ultimate 2013 installiert. Wie du dich fühlst, weiß ich leider trotzdem nicht. Das Angebot, den Versuch zu starten, dir bei deinem Problem zu helfen, steht aber nach wie vor. Dazu bräuchte ich aber entsprechenden Beispielcode, der dein Problem veranschaulicht und nachvollziehbar macht. Alternativ kannst du mir aber auch deine Anforderungen nennen, dann kann ich mich daran versuchen eine funktionsfähiges Beispielprojekt zusammenzustellen.



Multithread schrieb:


> Für den Anfang würde ich aber weiterhin irgendwas mit einer IDE Empfehlen, eben C# oder Java. Dort findet man im netzt auch für fast jedes erdenkliche Problem eine Lösung.


Wie gesagt, so pauschal kann man das wirklich nicht sagen. Das hängt zum einen davon ab, was man machen will, aber noch viel stärker davon, welche Sprachen und Technologien man bisher genutzt hat, also ob man in eine bestimmte Richtung vorbelastet ist. Ich persönlich fühle mich in C# auch heimischer und hatte bis vor ca. einem Jahr diverse Vorbehalte gegenüber JavaScript. Das änderte sich aber recht schnell, nachdem ich mich eine Weile ernsthaft damit auseinandergesetzt hatte.


----------



## Luchsderspieler (16. April 2014)

Ich werde mich morgen mal im heimischen Bücherregal umsehen ob ich noch ein Java Buch habe. Werde mich als erstes durch Tutorials und son zeug lesen und schauen und etwas üben mit weniger komplexen dingen. Was für Editoren kommen für Java in Frage (am liebsten Freeware)

LG Luchs


----------



## okeanos7 (17. April 2014)

Also als klassisches natürlich eclipse. Netbeans gibt es auch. Sind eigentlich die zwei großen. Sonst wäre mir nur noch bluej bekannt  

Aber ne ide ist erstmal nicht so wichtig, kann man auh mehrere ausprobieren..


----------



## XPrototypeX (17. April 2014)

Netbean gibt es in deutsch allerdings werden es die meisten Tutorials mit englischer Sprache ansprechen. Ansonsten gängig sind Eclipse (auch für andere Programmiersprache geeignet) oder IntelliJ. Eclipse ist free und open source und IntelliJ hat zumidestens eine Community Edition. Ich bevorzuge Eclipse. Wenn du auf deren Seite bist am besten einfach nur die Standart Edition runterladen. Das reicht für den Anfang vollkommen. Außerdem brauchst du noch von Oracle das OpenJDK. Am besten dort das aktuellste verwenden (8er Version)


----------



## SebastianB-Photo (1. Mai 2014)

Und, wofür hast du dich Entschieden? Java oder bist du doch zu was anderem gegangen?


----------



## Luchsderspieler (1. Mai 2014)

Habe mich entschieden das Projekt vorerst zu stornieren und eventuell erst mal grundlegende Sachen in HTML und Java zu erlernen. Ihr habt mir auf jeden Fall sehr gut geholfen.

Danke und liebe Grüße,
Luchs


----------

