Bei eingeben von Zahlen den Zeilensprung vermeiden

Dude!

Mitglied
Hallo,

ich habe gestern das Spiel Mastermind mit Java programmiert (Mastermind ? Wikipedia).

Das Spiel klappt auch und es macht eine Menge Spaß. Jedoch finde ich es sehr umständlich, dass nach jeder Eingabe von mir in der Konsole (die ich mit Enter abschließe), ich in die nächste Zeile springe.

Java:
import java.util.Scanner;
import java.util.Random;
class Mastermind {
  public static void main (String[]args) {
    Scanner tastatur=new Scanner(System.in);
    Random generator=new Random();
    int a,b,c,d,e,f,g,h,i,j,u,x,y,z;
    int s=0;
    do {
      x=0;
      a=generator.nextInt(8)+1; 
      b=generator.nextInt(8)+1;
      c=generator.nextInt(8)+1;
      d=generator.nextInt(8)+1;
      e=generator.nextInt(8)+1;
      if (a==b) x=1;
      if (a==c) x=1;
      if (a==d) x=1;
      if (a==e) x=1;
      if (b==c) x=1;
      if (b==d) x=1;
      if (b==e) x=1;
      if (c==d) x=1;
      if (c==e) x=1;
      if (d==e) x=1;
    } while (x==1);
    System.out.println("Hallo und viel Glueck");
    do {
      s++;
      u=0;
      y=0;
      z=0;
      System.out.print(s+":  A:"); f=tastatur.nextInt();
      System.out.print("B:"); g=tastatur.nextInt();
      System.out.print("C:"); h=tastatur.nextInt();
      System.out.print("D:"); i=tastatur.nextInt();
      System.out.print("E:"); j=tastatur.nextInt();
      if (a==f & b==g & c==h & d==i & e==j) {
        u=1;
        System.out.println("GLUECKWUNSCH!!!");
      } else {
        if (a==f) y++;
        if (b==g) y++;
        if (c==h) y++;
        if (d==i) y++;
        if (e==j) y++;
        if (a==g | a==h | a==i | a==j) z++;
        if (b==f | b==h | b==i | b==j) z++;
        if (c==g | c==f | c==i | c==j) z++;
        if (d==g | d==h | d==f | d==j) z++;
        if (e==g | e==h | e==i | e==f) z++;
        System.out.println("Du hast "+y+" Farben auf der richtigen Position und "+z+" Farben generell richtig.");
      }
    } while (u==0);
  }
}

Die Ausgabe sieht dann in etwa so aus:

Hallo und viel Glueck
1: A:1
B:2
C:3
D:4
E:6
Du hast 1 Farben auf der richtigen Position und 2 Farben generell richtig.
2: A:1
B:4
C:2
D:6
E:7
Du hast 0 Farben auf der richtigen Position und 3 Farben generell richtig.



Ich fände es aber besser wenn es so aus sähe:

Hallo und viel Glueck
1: A:1 B:2 C:3 D:4 E:6 Du hast 1 Farben auf der richtigen Position und 2 Farben generell richtig.
2: A:1 B:4 C:2 D:6 E:7 Du hast 0 Farben auf der richtigen Position und 3 Farben generell richtig.


Wie kann ich das bewerkstelligen, damit es klappt?


Gruße Dude!
 
Uff, das ist jetzt aber eher eine Eigenart der Shell, dass dort nach einem Druck auf Enter in die nächste Zeile gesprungen wird, und weniger ein Java-Problem, wie mir scheint…
Du könntest schauen, ob du die Shell dahingehend umkonfigurieren kannst, aber… ähm, das halte ich ehrlich gesagt für ganz und gar keine gute Idee (systemweite Änderungen, nur damit es für dieses eine Programm besser aussieht? Nein nein, nicht gut). Oder hab ich dich da jetzt falsch verstanden?

Alternative: Sobald du anfängst, dich mit graphischen Oberflächen vertraut zu machen, bau auf das Programm eine GUI drauf und benutz da ein JLabel mit einem String, an den du die neuen Infos einfach nur dranhängst, dann kannst du es alles in einer Zeile lassen.
 
Zuletzt bearbeitet:
Vielen Dank für die schnelle Antwort.
Dass das etwas mit der Taste Enter zutun hat, hatte ich auch vermutet, aber ich hatte noch gehofft, dass java sowas vllt doch umgehen kann. Naja, es ist auch nicht so wichtig um jetzt dort das System zu ändern. Mit graphischen Oberflächen kenne ich mich leider jedoch nicht aus, aber das kommt schon.

Danke nochmals


mfg Dude!
 
Ich habe leider keine Lösung für dein Problem.
Aber ein Hinweis zum Mastermind Game.

Die Ausgabe ob Richtig getroffen und/oder Richtige Farbe hast du nicht ganz wie das Original umgesetzt (So wie du es umgesetzt hast, ist es echt schwer >.< ). Die Summe der richtigen Treffer und der richtigen Farben aber falschen Position kann nicht größer sein als die Anzahl der Positionen die erraten werden müssen.

Bsp:
Gesuchter Code : Rot / Blau / Grün
Rateversuch : Rot / Grün / Blau

Antwort : 1 Richtig / 2 Richtige Farbe aber falsche Position
Antwort mit deinem Code : 1 Richtig / 3 Farbe aber falsche Position

Eine Lösung dafür wäre z.B. :
[Java]
if (a==f & b==g & c==h & d==i & e==j) {
u=1;
System.out.println("GLUECKWUNSCH!!!");
}
else {
if (a==f){
y++;
}
else {
if (a==g | a==h | a==i | a==j) {
z++;
}
}

if (b==g) {
y++;
}
else {
if (b==f | b==h | b==i | b==j) {
z++;
}
}

if (c==h) {
y++;
}
else {
if (c==g | c==f | c==i | c==j) {
z++;
}
}

if (d==i) {
y++;
}
else {
if (d==g | d==h | d==f | d==j) {
z++;
}
}

if (e==j) {
y++;
}
else {
if (e==g | e==h | e==i | e==f) {
z++;
}
}
System.out.println("Du hast "+y+" Farben auf der richtigen Position und "+z+" Farben generell richtig.");
}
[/Java]

PS: ich sehe nur noch a,b,c,e,z,u richtige namen zu vergeben macht es sehr sehr viel einfacher :toll:
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben