Game-Konzept

Java-Insel

Aktives Mitglied
Hi, ich möchte ein kleines Spiel gestalten. Das ist ganz einfach aufgebaut: ohne Grafik, Singleplayer und auch ansonsten nicht viel. Allerdings brauche ich ein Konzept, um die einzelnen Texte richtig abzuspielen, sodass ich unter den (vielen) if-Schnittstellen herumwechseln kann und so einerseits einen "Entscheidungsbaum" habe, andererseits auch beliebig zwischen den einzelnen Ästen herumwechseln kann, damit ich auch, falls der Charakter einfach ein bisschen zurücklaufen sollte, dies bewerkstelligen kann.
Ich hoffe, ihr habt verstanden, was ich meinte.

Danke schon mal im voraus.
 
S

Spacerat

Gast
Marcineks Frage war durchaus berechtigt. Du hast doch dein Spielkonzept im Prinzip schon (klingt nach 'nem simplen Textadventure). In so einem hat man Orte (Tree-Nodes) in denen Optionen zu anderen Orten führen. Damit legt sich eine gewisse Programmstruktur doch eigentlich schon fast von alleine fest und wartet nur darauf umgesetzt zu werden.
 

Java-Insel

Aktives Mitglied
Hmm... Also, meinst du das ungefähr so:
Java:
public void Spiel(boolean[] zahl) {
     System.out.println("blalblablalblalb");
     Scanner sc = new Scanner(System.in);
     String antwort = sc.nextLine();
     if(antwort.equals("Antwort 1") || zahl[1] == 1) {
          System.out.println("Blablabla... Blablabl?");
          antwort = sc.nextLine();
          if(antwort.equals("Antwort 1") || zahl[2] == 1) {
               [nächste Entscheidung]
          }
          else if(antwort.equals("Antwort 2") || zahl[2] == 0) {
               [nächste Entscheidung]
          }
     }
     else if(antwort.equals("Antwort 2") || zahl[1] == 0) {
          [nächste Entscheidung]
     }
}
?

Ich habe übrigens nur Java 6, deswegen kann ich mit String keine switch-case-Bedingungen machen.
 
Zuletzt bearbeitet:

Pentalon

Bekanntes Mitglied
Hi JAVA Insel

Hast Du das gleichnamige Buch gelesen ?
Ein Konzept sollte man selber erarbeiten. Deine Vorstellungen zum Spiel sind so etwas in grob.
Allerdings gehören zur Umsetzung auch gute Programmierkenntnisse.

Ich würde Dir das Buch
Java will nur Spielen
empfehlen.

Es fängt bei den Grundlagen an und gegen Ende programmiert man einen einfachen Frogger.

Pentalon
 

Landei

Top Contributor
Zuerst einmal der Hinweis, dass so ein Spiel ziemlich nah an einem endlichen Automaten ist: Eine Menge Zustände, und eine Menge "Übergangsregeln" zwischen den Zuständen.

Nun wird man so etwas kaum mit eine if-else-Kaskade umsetzen. Du solltest dir überlegen, das Spielgeschehen irgenwie (am besten in einem strukturierten Format wie XML, JSON oder so) in einer Datei abzubilden, ganz grob etwa so:

Code:
<game start="before_the_castle" end="room_of_the_princess">
  <room name="before_the_castle" description="You stand in front of a mighty castle with two statues next to the front door">
    <var name="front_door" state="locked"> 
    <var name="has_key" state="false"> 
    <move direction="south">Your way is blocked by rocks</move>
    <move direction="north">Your way is blocked by a river</move>
    <move direction="east">You don't want to go back where you came from</move>
    <move direction="west" condition="front_door=locked">The front door of the castle is locked</move>
    <move direction="west" condition="front_door=unlocked" next_room="entrance">You proceed to the entrance</move>
    <action name="Unlock front door" condition="has_key=true" result="front_door=unlocked">You have unlocked the door</action>
    <action name="Investigate left statue">You find nothing</action>
    <action name="investigate right statue" condition="has_key=false" result="has_key=true">You find a key!</action>
    <action name="investigate right statue" condition="has_key=true">You have already found the key</action>
  </room>
  ...
</game>

Es ist wichtig, möglichst von Anfang an ein Format zu finden, das alle gewünschten Möglichkeiten bietet, also überlege dir genau, was alles möglich sein soll, bevor du weitermachst. Soll z.B. alles fest vorgegeben sein, oder sollen manche Ereignisse nur mit einer bestimmten Wahrscheinlichkeit auftreten?

Der nächste Schritt ist, den Inhalt dieser Date nach Java zu bekommen. JAXB nimmt dir hier die Arbeit ab: Du schreibst Klassen wie Move, Action, Room, Game u.s.w., und mit ein paar Annotationen bekommst du alles eingelesen.

Dann überlegst du dir, wie du in deiner Game-Loop mit diesen Modell-Klassen das Spiel steuerst.
 
Zuletzt bearbeitet:
S

Spacerat

Gast
Hmm... Also, meinst du das ungefähr so:
Java:
public void Spiel(boolean[] zahl) {
     System.out.println("blalblablalblalb");
     Scanner sc = new Scanner(System.in);
     String antwort = sc.nextLine();
     if(antwort.equals("Antwort 1") || zahl[1] == 1) {
          System.out.println("Blablabla... Blablabl?");
          antwort = sc.nextLine();
          if(antwort.equals("Antwort 1") || zahl[2] == 1) {
               [nächste Entscheidung]
          }
          else if(antwort.equals("Antwort 2") || zahl[2] == 0) {
               [nächste Entscheidung]
          }
     }
     else if(antwort.equals("Antwort 2") || zahl[1] == 0) {
          [nächste Entscheidung]
     }
}
?

Ich habe übrigens nur Java 6, deswegen kann ich mit String keine switch-case-Bedingungen machen.

Nein, keinesfalls, eher so:
Java:
public void Spiel() {
  Stage ort = Game.loadFirstStage();
  Scanner sc = new Scanner(System.in);
  while(true) {
    System.out.println(ort.describe());
    ort = ort.doAction(sc.nextLine());
    if(Spiel.checkFinish()) {
      break;
    }
  }
}
Ob nun mit oder ohne besagtem switch-case, die ifs lassen sich so schon mal ortsabhängig unterteilen. Man benötigt dazu noch ein entsprechendes Interface "Stage" welches die Methoden "describe" und "doAction" deklariert. Einzelne konkrete Orte müssen diese dann nur noch individuell implementieren. Ganz zu Anfang der "doAction"-Methode dabei evtl. ortsunabhängige Actions (Richtungen usw.) auswerten, das lässt sich ebenfalls noch mal wunderbar kapseln.
[EDIT]@All: Ich habe mir dieses "Konzept" grad' selber aus dem Ärmel geschüttelt, aber so ungefähr würd' ich's machen. Ist hoffentlich nicht verwerflich, wenn man die Orte in einer entsprechenden Collection, Map oder Tree verwaltet.[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:

Java-Insel

Aktives Mitglied
Danke erstmal. Jetzt habe ich endlich einen Ansatz, mit dem ich weiterarbeiten kann. Denn das war genau das, wonach ich suchte. Danke!!!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Wizzard-Game Java Basics - Anfänger-Themen 3
Jxhnny.lpz bouncing Ball (Brick-Breaker-Game) Java Basics - Anfänger-Themen 1
V Probleme Guessing Game Java Basics - Anfänger-Themen 8
X Game of Life Nachbarn zählen Java Basics - Anfänger-Themen 20
P Moore Nachbarschaft-Game of Life Java Basics - Anfänger-Themen 1
P 2D Game Java Basics - Anfänger-Themen 6
B Verwirrender Game Loop Java Basics - Anfänger-Themen 6
L Conways Game of Life Java Basics - Anfänger-Themen 4
J Game of life Java Basics - Anfänger-Themen 3
B "Snake"-Game verbuggt Java Basics - Anfänger-Themen 0
K Game of live Java Basics - Anfänger-Themen 4
F Java Collectors Game Hilfe Java Basics - Anfänger-Themen 4
C Wie kann ich jetzt von der Game.java auf die Timer.java zugreifen? Java Basics - Anfänger-Themen 6
E Belebeste Area im Game of Life suchen Java Basics - Anfänger-Themen 0
B Wer kennt einen Link für vollständiges, leichtverständliches "Game of Life"? Java Basics - Anfänger-Themen 1
F Game-Engine für textbasierendes Spiel: Architektur? Java Basics - Anfänger-Themen 9
D Textfield im Game ,Problem: while-Schleife Java Basics - Anfänger-Themen 1
C Game of life Java Basics - Anfänger-Themen 14
K Gutes Java 3D Game Tutorial gesucht Java Basics - Anfänger-Themen 6
G Game Loop Problem Java Basics - Anfänger-Themen 9
T Kleines Game mit Kollision Java Basics - Anfänger-Themen 2
V Start ins Java Game Development Java Basics - Anfänger-Themen 22
I Programm Game & AR Java Basics - Anfänger-Themen 13
P Game of Life Java Basics - Anfänger-Themen 18
C Conways Game of Life / "Waldbrandsimulation": wieso temporäres Hilfs-Array?! Java Basics - Anfänger-Themen 8
K Game of Life Implementierung Java Basics - Anfänger-Themen 30
D Game of Life - Nachbarn zählen Java Basics - Anfänger-Themen 8
Developer_X Game of Life Java Basics - Anfänger-Themen 10
L Game of life in einem FensterVisualisieren Java Basics - Anfänger-Themen 2
D Game of Life Java Basics - Anfänger-Themen 14
T Anagram Game - warum ist es auf 2 Packages aufgeteilt? Java Basics - Anfänger-Themen 3
S 3d-game java3d/eigene API Java Basics - Anfänger-Themen 4
C Pong Game Java Basics - Anfänger-Themen 2
L Konzept für Quiz Java Basics - Anfänger-Themen 33
Zrebna Frage zum "Referenzen-konzept" in Java Java Basics - Anfänger-Themen 8
B Enum innerhalb einer Klasse / anderes Konzept Java Basics - Anfänger-Themen 8
B Limitierungs - Klassse (Restriction).... Konzept so OK? Java Basics - Anfänger-Themen 0
Spin Objektorientierung . Konzept Java Basics - Anfänger-Themen 4
Ollek Projektplanung - Konzept - Wie geht ihr dort vor? Java Basics - Anfänger-Themen 2
O OOP Problem - Konzept Falsch? Java Basics - Anfänger-Themen 7
rambozola Konzept Webentwicklung mit J2EE Java Basics - Anfänger-Themen 3
S Model-View-Controller Konzept Beispiel Java Basics - Anfänger-Themen 11
C Stream-Konzept Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben