Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Mastermind mit GUI in Java

Hallo, ich bin grade dabei Mastermind in Java zu programmieren. Nun hab ich auch schon ein funktionierendes geschafft:


import java.util.Scanner;
import java.util.Random;

enum Farbe
{
   WEISS, SCHWARZ, BLAU, ROT, GELB, GRUEN, UNBEKANNT;

   public static Farbe toFarbe(String s)
   {
      String[] farben = {"weiss", "schwarz", "blau", "rot",
                         "gelb", "gruen", "unbekannt"};
      Farbe farbe = UNBEKANNT;
      int n = 0;
     
       for(Farbe f : values())
       {
          if (s.equals(farben[n]))
          {
            farbe = f;
          }
         
         n++;
       }
     
      return farbe;
   }   
   
   public static Farbe toFarbe(int n)
   {
      Farbe farbe = UNBEKANNT;
     
      switch (n)
      {
        case 1:   farbe = WEISS;
                  break;
        case 2:   farbe = SCHWARZ;
                  break;
        case 3:   farbe = BLAU;
                  break;
        case 4:   farbe = ROT;
                  break;
        case 5:   farbe = GELB;
                  break;
        case 6:   farbe = GRUEN;
                  break;
      }
      return farbe;
   }   
   
   public String toString()
   {
      String s = "";
     
      switch (this)
      {
        case WEISS:     s = "weiss";
                        break;
        case SCHWARZ:   s = "schwarz";
                        break;
        case BLAU:      s = "blau";
                        break;
        case ROT:       s = "rot";
                        break;
        case GELB:      s = "gelb";
                        break;
        case GRUEN:     s = "gruen";
                        break;
        default:        s = "unbekannte Farbe";
                        break;
      }

      return s;
   }
}

public class MeinMastermind_v6
{
   final static int anzahlSteine = 4;
   
   static Farbe[] stein = new Farbe[anzahlSteine];
   static Farbe[] geraten = new Farbe[anzahlSteine];

   static int trefferPosUndFarbe = 0;
   static int trefferFarbe = 0;

   /* Funktion zum Einlesen einer geratenen Kombination */
   static void kombiEinlesen()
   {
      // lies den nächsten Versuch des Spielers ein
      System.out.print( " Bitte eine Kombination aus"
                      + " vier Farben eingeben: \n\n");
      Scanner sc = new Scanner(System.in);

      for (int i = 0; i < stein.length; i++)
      {
         geraten[i] = Farbe.toFarbe(sc.next());
      }
     
      for (int i = 0; i < stein.length; i++)
      {
         System.out.println(geraten[i] + " ");
      }
      System.out.println();
   }

   /* Funktion zum Auswerten einer eingelesenen Kombination */
   static void kombiAuswerten()
   {
      boolean[] ausgewertetS = {false, false, false, false};
      boolean[] ausgewertetG = {false, false, false, false};

      // zuerst feststellen, welche Steine in Farbton und Position übereinstimmen
      for (int i = 0; i < stein.length; i++)
      {
         if (stein[i].equals(geraten[i]) == true)   
         {
            trefferPosUndFarbe++;
            ausgewertetS[i] = true;
            ausgewertetG[i] = true;
         }
      }     

      // dann feststellen, welche Steine nur im Farbton übereinstimmen
      for (int i = 0; i < stein.length; i++)
      {
         if (ausgewertetS[i] == false)   
         {
            for (int j = 0; j < geraten.length; j++)
            {
               if (j == i)
                 continue;
                 
               if (ausgewertetG[j] == false && stein[i].equals(geraten[j]) == true)
               {
                 trefferFarbe++;
                 ausgewertetS[i] = true;
                 ausgewertetG[j] = true;
                 break;
               }
            }
         }
      }
   }


   /* Funktion zum Bewerten einer geratenen Kombination */
   static void kombiBewerten()
   {
      // die Bewertung der Kombination ausgeben
      if (trefferPosUndFarbe == 4)
      {
         System.out.println("\n\n Gratulation!!!"
                     + " - du hast die Kombination erraten!\n");
      }
      else
      {
         System.out.println("\n"
         + " Treffer (Position und Farbe): " + trefferPosUndFarbe + "\n"
         + " Treffer          (nur Farbe): " + trefferFarbe + "\n\n");
      }
   }

   public static void main(String[] args)
   {
      System.out.println();
      System.out.println(" ****************************** ");
      System.out.println(" Willkommen bei MeinMastermind! \n");
      System.out.println(" Wir spielen mit 6 Farben: weiss, schwarz,"
                       + " blau, rot, gelb und gruen! \n\n\n");

      // Zufallsgenerator aktivieren
      Random generator = new Random();  // (1) zum Debuggen

      // zu ratende Kombination ausdenken
      int n;

      for (int i = 0; i < stein.length; i++)
      {
         stein[i] = Farbe.toFarbe(generator.nextInt(6) + 1);
      }
      for (int i = 0; i < stein.length; i++)
      {
         System.out.println(stein[i]);
      }

      do
      {
         trefferPosUndFarbe = 0;
         trefferFarbe = 0;

         // lies den nächsten Versuch des Spielers ein
         kombiEinlesen();

         // die eingelesene Kombination mit der eigenen Kombination vergleichen
         kombiAuswerten();

         // die Bewertung der Kombination ausgeben
         kombiBewerten();
       
      } while (trefferPosUndFarbe < 4);
   }
}



Jetzt möchte ich dort gern eine GUI einfühen, also mit farben statt wörtern und allem drum und dran.

Die Oberfläche an sich ist ja kein problem, aber dann muss man halt das ganze Programm iwie anpassen so dass es auch funzt. Ich hab kein Ahnung wie das geht und ich muss es auch noch bis übermorgen fertig haben..
Könnt ihr mir helfen?

Antworten zu Mastermind mit GUI in Java:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
1 Leser hat sich bedankt

 

Zitat
Ich hab kein Ahnung wie das geht und ich muss es auch noch bis übermorgen fertig haben..
 
Ui, ui, ui...

 
Zitat
Könnt ihr mir helfen?
Ja klar. Machen wir. Kein Problem. Bitte sehr, bitte gleich. Wir schließen Dich heute in unser Nachtgebet ein und drücken Dir ganz doll die Daumen.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Ähm ok und wieso muss jetzt so eine antwort kommen??
Ich habe eine ernsthafte frage gestellt und eig auch eine ernsthafte antwort erwartet (dafür ist das Forum doch da oder? um fragen zu beantworten oder etwa nicht?).
Ich hab ja jetzt nicht danach gefragt das fertige programm zu schicken...

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

 

Zitat
Ich hab ja jetzt nicht danach gefragt das fertige programm zu schicken...
Nein?? Was denn?? 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

 

Zitat
wieso muss jetzt so eine antwort kommen

... weil Du, wenn Du das Programm wirklich selbst geschrieben hast, wenigstens wissen müsstest, das es GUI-Builder für JAVA gibt und Du dann

Zitat
Ich hab kein Ahnung wie das geht 

nicht geschrieben hättest  ;D

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Lösungsansatz, Denkanstoß, nenn es wie du willst.
aber ok vlt sollte ich lieber konkretere fragen stellen, also:

1.) statt dass die zahlen eingelesen werden, müssen ja jetze die farben ausgewählt werden. Muss ich das mit den jeweiligen Actionlistenern machen?

2.)Wie kann ich die Trefferabfrage bewerkstelligen?

So ich hoffe die Fragen sind jetzt verständlich und konkret genug, würde mich sehr über eine antwort freuen ;)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

@hugenyn ich weiss was ein GUI-Builder ist und wie schon gesagt, mein Problem ist nicht dass ich keine buttons oder labels oder was auch immer erstellen kann, sondern wie ich es schaffe diese mit dem programm zu verknüpfen. Ich kann ja jetzt z.B keine strings mehr verwenden um die Kombi einzulesen, da keine wörter mehr sondern farben zur auswahl stehen.
Und da komm ich halt grad nicht weiter wie ich diese beiden sachen verknüpfen kann (Programmieren ist jetzt auch nicht grad mein Spezialgebiet).

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

@Cyz44

... das ist jetzt schon konkreter, aber es wäre eine Aufgabe für einen Java-Programmierer, der ich nicht bin ...

Ok ist ja kein problem  ;)
Und PWT was ist mit dir? Ich meine, dafür das du so schnell warst dich hier über mich lustig zu machen, brauchst du ganz schön lang für eine antwort...

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

... Nachtrag: Kenn'se den -> Swing (Java)  :)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Vergeude nicht meine zeit bitte -.-
Und was ist das eig für ein Forum, in dem bei einer java frage die ich stelle nur ein typ antwortet, der nicht programmieren kann? xD

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Zitat
in dem bei einer java frage die ich stelle nur ein typ antwortet, der nicht programmieren kann?
keine Sorge - der "Typ" kann programmieren, er muß sich auch nicht fremde Programme/Scripte von anderen ändern und anpassen lassen.
 >:(

BTW: den richtigen Hinweis hat er Dir gegeben.

In diesem Sinne:
Vergeude nicht meine zeit bitte -.-

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Das war so nicht gemeint, ich meinte dass er kein JAVA kann, aber hey, wieso musst du mir jetzt so antworten!?
Allgemein fällt mir nur ein tag nach meiner anmeldung hier auf, dass man einfach keine vernünftige antwort auf seine fragen bekommt sondern nur sinnlose kommentare so wie deinem.
das zitierte ist aus dem kontext gerissen, du hast den smiley "vergessen" allein dadurch solltge doch klar werden das das spaß war oder??
UND ich hab nie gesagt ihr sollt mir den fertigen code schicken, sag mal hast du außer diesen beiden sätzen überhaupt noch was hier gelesen? anscheinden nicht  ::)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Geh mal davon aus, dass ich den gesamten Thread mehrfach gelesen habe. Den Quellcode sogar ein paarmal mehr.  ;)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

...Und schon wieder eine kommentar einzig und allein um sich zu rechtfertigen. Also gut, wenn du den thread mehrmnals gelesen hast, wozu war dann der erste kommentar von dir da?

Aber ok ist mir auch egal, wenn hier jmd noch etwas zum THEMA beitragen möchte kann er das gerne tun, ich würde mich sehr freuen  :)


« Windows XP: Titel:Wie schreibe ich ein Programm?Tic Tac Toe C# »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Java
Java ist eine von der Firma SUN entwickelte Programmiersprache. Da Java unabhängig vom Betriebssystem läuft, kann ein einmal geschriebenes Programm auf allen Ja...

Javascript
Javascript ist eine von Netscape entwickelte Skriptsprache für den Einsatz für DOM-Scripting auf Webseiten. Nahezu alle Browser- und Webseiten-Elemente lassen s...

Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet einen unkompilierten Programm-Code einer Software. Der Quellcode ist meist in einer der verbreiteten Programmierspra...