Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

09.03.2014, 18:12

Java Einsteiger Konsolenspiel (Konsole leeren)

Hallo,
Ich bin gerade neu hier und habe mich mal an die Javaprogrammierung herangewagt. Nun bin ich soweit, dass ich weiß wie man einen Text in der Konsole ausgibt, wie ich eine .java Datei mit der Konsole compilern kann, ich weiß was Klassen, Konstruktoren und Methoden sind. Nun wollte ich mich nach den kleinen Programmen aus dem Buch "Programmieren lernen mit Java" von Habelitz mal an ein größeres Projekt wagen. Ich habe mir also überlegt, dass ich ein Schere Stein Papier Spiel in einer Konsole programmieren kann. Nun zu meinem Problem:
Es gibt eine Klasse mit der main Methode und eine Klasse mit den Methoden für die Menues. Der jetztige Code sieht so aus:

1. Klasse mit Main Methode

Zitat

package SchereSteinPapier;

import java.util.Scanner;

public class SchereSteinPapier {
public static void main(String[] args)
{
Menue m = new Menue();
m.hauptmenue();
}
}
2. Klasse mit den Menues:

Zitat

package SchereSteinPapier;

import java.util.Scanner;

public class Menue
{
void hauptmenue()
{
String eingabe;

System.out.println("---------------------------------------------------------");
System.out.println(" Schere Stein Papier ");
System.out.println("---------------------------------------------------------");

System.out.println("Druecke die Zahl hinter der Auswahl um fortzufahren: ");
System.out.println("Neues Spiel starten [1]");
System.out.println("Optionen [2]");
System.out.println("Beenden [3]\n");
System.out.print("Einagbe: ");
Scanner s = new Scanner(System.in);
eingabe = s.next();

if(eingabe.equals("1"))
{
//Text aus Konsole löschen

//starte Spiel menue
NeuesSpielSubMenue();
}
else if(eingabe.equals("2"))
{
//starte Optionen
}
else if(eingabe.equals("3"))
{
System.exit(0);
}
}

void NeuesSpielSubMenue()
{
String eingabe;
System.out.println("---------------------------------------------------------");
System.out.println(" Schere Stein Papier ");
System.out.println("---------------------------------------------------------");

System.out.println("Druecke die Zahl hinter der Auswahl um fortzufahren: ");
System.out.println("Singleplayer[1]");
System.out.println("Multiplayer[2]");
System.out.println("Zurueck[3]\n");
System.out.print("Einagbe: ");
Scanner s = new Scanner(System.in);
eingabe = s.next();

if(eingabe.equals("1"))
{
//starte Singleplayer

}
else if(eingabe.equals("2"))
{
//starte Multiplayer
}
else if(eingabe.equals("3"))
{
hauptmenue();
}
}
}
Wenn ich einen Menue Punkt z.B. "Neues Spiel starten" aufrufen will, wird der Text für die Optionen für das Neue Spiel eingeblendet. Aber der alte Text aus der hauptmenue Methode bleibt da. Wie kann ich den alten Text aus der Konsole löschen, sodass nur der neue Text angezeigt wird und nicht beide?

Ich hoffe ihr könnt mir weiterhelfen. Über tipps und Verbesserungen am Code würde ich mich freuen

Danke schonmal im voraus! :golly:

Tankard

Treue Seele

Beiträge: 192

Beruf: Student, Hardware- und Softwareentwicklung als wissenschaftliche Hilfskraft

  • Private Nachricht senden

2

09.03.2014, 18:29

Benutz für Code bitte Code-Tags und keine Zitate.

Erstmal geht das nicht so einfach.
http://www.java-forum.org/java-basics-an…ole-leeren.html

Mach einfach ein paar Leerzeilen und lass das gefummel mit Betriebssystemspezifischen Workarounds etc. weg, oder mach direkt eine richtige GUI.

3

09.03.2014, 18:54

Danke für deine schnelle Antwort :) Das mit den Zitaten werde ich fürs nächste mal beachten(war mein erster Beitrag in diesem Forum).
PS: Das ist mein erstes größeres Projekt ich wollte erstmal eine Konsolenanwendung schreiben bevor ich mich an die GUIS heranwage.

4

09.03.2014, 19:07

Leider funktioniert die in dem Link befindliche Lösung nicht habt ihr noch andere Ideen, wieich meine Konsole clearen kann ?

Tankard

Treue Seele

Beiträge: 192

Beruf: Student, Hardware- und Softwareentwicklung als wissenschaftliche Hilfskraft

  • Private Nachricht senden

5

09.03.2014, 19:17

Lass es lieber sein. Du hältst dich ewig mit irgendwelchen blöden Workarounds auf. Konzentrier dich lieber auf das Programmieren lernen.

Wenn du auf solche Funktionen wirklich nicht verzichten willst, dann guck dir eine Library für Text UIs an. Habe gehört JCurses soll ganz gut sein. Da gibt es dann bestimmt auf Funktionen zum leeren des Bildschirms. Sowas habe ich allerdigns noch nie selbst benutzt (dank GUI-Buildern ist es teilweise leichter/schneller eine GUI zu verwenden anstatt nur die Konsole).

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

6

12.03.2014, 13:46

Wie bereits geschrieben wurde solltest du dich nicht mit solchen Kleinigkeiten, wie dem Leeren der Konsole aufhalten. Ich habe schon die einen oder anderen Spielereien in der Konsole gemacht und meistens ist es nicht störend, wenn der vorherige Text einfach stehen bleibt. Wenn doch, dann sollte man sich ohnehin Gedanken machen, ob man wirklich die Konsole verwenden will oder eine grafische Oberfläche nicht besser sein könnte.

Willst du dennoch unbedingt die Konsole leeren, gibt es den unsauberen Weg über Runtime.getRuntime().exec("cls"); (auf anderen Betriebssystemen müssen andere Befehle ausgeführt werden), den ebenfalls unsauberen Weg über das Ausgeben entsprechender Zeichen (eine kurze Suche verwies auf die Zeichen \r und \b, um das nachzuprüfen müsste ich aber nicht nur den Code schreiben und ausführen, sondern dazu noch eine ausführbare Datei exporierten...) oder man könnte auf die Konsole verzichten und eine Bibliothek verwenden, die einem einen Ersatz anbietet, worauf man dann wieder mehr Zugriffsmöglichkeiten hätte.
Solltest du eine Entwicklungsumgebung verwenden, kann es durchaus sein, dass deren Ausgabe sich wieder anders verhält, als die Konsole, die auf deinem System vorhanden ist.

Meine Empfehlung bleibt also: ignorier es und beschäftige dich mit wichtigeren Dingen.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Werbeanzeige