Zufallsfarben aus Array

Cyz44

Aktives Mitglied
Hey, ich wusste nicht wo ichs hinschreiben kann also hab ich mal ein neues thema erstellt :)

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.Random.*;
import java.awt.Color.*;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 27.09.2011
  * @Cyrus Zeller
  */

public class Mastermind extends JFrame
{
  // Anfang Attribute
  private JButton btn1 = new JButton();
  private JButton btn2 = new JButton();
  private JButton btn3 = new JButton();
  private JButton btn4 = new JButton();
  private JButton btn5 = new JButton();
  private JButton btn6 = new JButton();
  private JButton btn7 = new JButton();
  private JButton btn8 = new JButton();
  private JButton btn9 = new JButton();



  String stein1;
  String stein2;
  String stein3;
  String stein4;

  String geraten1;
  String geraten2;
  String geraten3;
  String geraten4;

  int weiß = 0;
  int schwarz = 0;


  private String[] jList1Data = {};



  private JLabel jlbl1 = new JLabel();
  private JLabel jlbl2 = new JLabel();
  private JLabel jlbl3 = new JLabel();
  private JLabel jlbl4 = new JLabel();
  private JLabel jlbl5 = new JLabel();
  private JLabel jlbl6 = new JLabel();
  private JLabel jlbl7 = new JLabel();
  private JLabel jlbl8 = new JLabel();
  private JLabel jlbl9 = new JLabel();
  private JLabel jlbl10 = new JLabel();
  private JLabel jlbl11 = new JLabel();
  private JLabel jlbl12 = new JLabel();
  private JLabel jlbl13 = new JLabel();
  private JLabel jlbl14 = new JLabel();
  private JLabel jlbl15 = new JLabel();
  private JLabel jlbl16 = new JLabel();
  // Ende Attribute




  public Mastermind(String title)
  {
    // Frame-Initialisierung
    super(title);
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    int frameWidth = 549; 
    int frameHeight = 442;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    Container cp = getContentPane();
    cp.setLayout(null);




    // Anfang Komponenten

    btn1.setBounds(32, 32, 40, 40);
    btn1.setText("");
    btn1.setBackground(Color.white);
    btn1.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent evt)
      {
        btn1_ActionPerformed(evt);
        jlbl5.setBackground(Color.red);
        jlbl5.setOpaque(true);
      }
    });
    cp.add(btn1);

    btn2.setBounds(80, 32, 40, 40);
    btn2.setText("");
    btn2.setBackground(Color.yellow);
    btn2.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent evt)
      {
        btn2_ActionPerformed(evt);
      }
    });
    cp.add(btn2);

    btn3.setBounds(128, 32, 40, 40);
    btn3.setText("");
    btn3.setBackground(Color.red);
    btn3.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent evt)
      {
        btn3_ActionPerformed(evt);
      }
    });
    cp.add(btn3);

    btn4.setBounds(176, 32, 40, 40);
    btn4.setText("");
    btn4.setBackground(Color.green);
    btn4.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent evt)
      {
        btn4_ActionPerformed(evt);
      }
    });
    cp.add(btn4);

    btn5.setBounds(224, 32, 40, 40);
    btn5.setText("");
    btn5.setBackground(Color.blue);
    btn5.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent evt)
      {
        btn5_ActionPerformed(evt);
      }
    });
    cp.add(btn5);

    btn6.setBounds(272, 32, 40, 40);
    btn6.setText("");
    btn6.setBackground(Color.black);
    btn6.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent evt)
      {
        btn6_ActionPerformed(evt);
      }
    });
    cp.add(btn6);

    btn7.setBounds(352, 32, 105, 40);
    btn7.setText("Neues Spiel");
    btn7.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent evt)
      {
         btn7_ActionPerformed(evt);
[U]
         [B]Color[] Farbe = new Color[6];
         Farbe[0] = Color.white;
         Farbe[1] = Color.yellow;
         Farbe[2] = Color.red;
         Farbe[3] = Color.green;
         Farbe[4] = Color.blue;
         Farbe[5] = Color.black;[/B][/U]
         


      }
    });
    cp.add(btn7);

    btn8.setBounds(360, 80, 85, 40);
    btn8.setText("Raten");
    btn8.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent evt)
      {
        btn8_ActionPerformed(evt);
      }
    });
    cp.add(btn8);

    btn9.setBounds(360, 128, 85, 40);
    btn9.setText("Löschen");
    btn9.addActionListener(new ActionListener()
   {
      public void actionPerformed(ActionEvent evt)
      {
        btn9_ActionPerformed(evt);
      }
    });
    cp.add(btn9);


    jlbl1.setBounds(64, 96, 40, 35);
    jlbl1.setText("");
    jlbl1.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jlbl1);
    jlbl2.setBounds(120, 96, 40, 35);
    jlbl2.setText("");
    jlbl2.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jlbl2);
    jlbl3.setBounds(176, 96, 40, 35);
    jlbl3.setText("");
    jlbl3.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jlbl3);
    jlbl4.setBounds(232, 96, 40, 35);
    jlbl4.setText("");
    jlbl4.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jlbl4);

    jlbl5.setBounds(32, 352, 40, 40);
    jlbl5.setText("");
    jlbl5.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jlbl5);
    jlbl6.setBounds(88, 352, 40, 40);
    jlbl6.setText("");
    jlbl6.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jlbl6);
    jlbl7.setBounds(144, 352, 40, 40);
    jlbl7.setText("");
    jlbl7.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jlbl7);
    jlbl8.setBounds(200, 352, 40, 40);
    jlbl8.setText("");
    jlbl8.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jlbl8);

    jlbl9.setBounds(280, 352, 40, 40);
    jlbl9.setText("");
    jlbl9.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jlbl9);
    jlbl10.setBounds(336, 352, 40, 40);
    jlbl10.setText("");
    jlbl10.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jlbl10);
    jlbl11.setBounds(392, 352, 40, 40);
    jlbl11.setText("");
    jlbl11.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jlbl11);
    jlbl12.setBounds(440, 352, 40, 40);
    jlbl12.setText("");
    jlbl12.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jlbl12);

     jlbl13.setBounds(32, 296, 40, 40);
    jlbl13.setText("");
    jlbl13.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jlbl13);
    jlbl14.setBounds(88, 296, 40, 40);
    jlbl14.setText("");
    jlbl14.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jlbl14);
    jlbl15.setBounds(144, 296, 40, 40);
    jlbl15.setText("");
    jlbl15.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jlbl15);
    jlbl16.setBounds(200, 296, 40, 40);
    jlbl16.setText("");
    jlbl16.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jlbl16);
    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  // Anfang Methoden


  public void btn1_ActionPerformed(ActionEvent evt)
  {

  }

  public void btn2_ActionPerformed(ActionEvent evt)
  {


  }

  public void btn3_ActionPerformed(ActionEvent evt)
  {
    // TODO hier Quelltext einfügen
  }

  public void btn4_ActionPerformed(ActionEvent evt)
  {
    // TODO hier Quelltext einfügen
  }

  public void btn5_ActionPerformed(ActionEvent evt)
  {
    // TODO hier Quelltext einfügen
  }

  public void btn6_ActionPerformed(ActionEvent evt)
  {
    // TODO hier Quelltext einfügen
  }

  public void btn7_ActionPerformed(ActionEvent evt)
  {

  }

  public void btn8_ActionPerformed(ActionEvent evt)
  {
    // TODO hier Quelltext einfügen
  }

  public void btn9_ActionPerformed(ActionEvent evt)
  {
    // TODO hier Quelltext einfügen
  }

  // Ende Methoden

  public static void main(String[] args)
  {
    new Mastermind("Mastermind");
  }
}

Wie ihr seht, erstelle ich ein Mastermind mit GUI. Bei button 7 (fett & unterstrichen) hab ich ein array erstellt, in dem ich die 6 möglichen farben gespeichert habe. Wie kann ich es nun machen, dass ine zufallsfarbe aus diesem array erstellt wird. Oder anders gesagt: es soll eine 4er kombination aus diesen 6 farben entstehen.
Irgendwie mir random wirds glaub ich gemacht, aber ich hab keine ahnung wie...
 
G

Gast2

Gast
Java:
Color[] Farbe = new Color[6];
Variablen schreibt man klein.

Erstell dir einfach ne Zufallszahl zwischen 0 und 5, z.b. mit der Klasse Random. und lies die Farbe mit
Code:
farbe[zufallszahl]
aus.
 

Camill

Bekanntes Mitglied
So kannst du dir Zufällige Integer Werte im Bereich 0 bis 5 erstellen lassen:
Java:
static int getRandomNumber() {
	
	int number = (int) (Math.random() * 6);
	return number;
}
 

Cyz44

Aktives Mitglied
tut mir leid aber ich verstehs nicht so ganz ???:L

ich hab ja schon ein array erstellt, und die farben bereits zugeordnet, da kann ich sie doch nicht noch ein 2. mal zuordnen oder??
 

Camill

Bekanntes Mitglied
Soweit ich es verstanden habe willst du dem Button eine zufällige Farbe zuordnen, diese stehen in dem von dir angelegten Array.
So dürfte das klappen:
Java:
btn7.setBackground(Farbe[getRandomNumber]);
 

Cyz44

Aktives Mitglied
sorry dann hab ichs wohl etwas falsch erklärt.
Das Programm soll eine Kombi aus 4 Farben erstellen (aus dem array). Dafür hab ich die labels 1-4 vorgesehen. Bei einem klick auf btn 7 sollen den 4 labels die farben zugeordnet werden z.B. lbl1=grün, lbl2=gelb, lbl3=blau und lbl4=gelb, sie können also auch doppelt vorkommen (genau dafür ist auch der action listener da).

Nun war also meine frage, wie ich das hinkriege (da ich auch noch nie mit random gearbeitet habe).
 

Camill

Bekanntes Mitglied
Na dann wende das ganze doch einfach auf die Labels an, bsp.:
Java:
lbl1.setBackground(Farbe[getRandomNumber]);
lbl1.setOpaque(true);

Oder habe ich es immernoch nicht richtig verstanden? :bahnhof:
 

Michael...

Top Contributor
Zunächst einmal sind Labels transparent und müssen mit setOpaque(true) undurchsichtig gemacht werden.
Dann
- gilt Zufallszahl erzeugen (Bsp sind ja hier zu finden)
- mit setBackground(Color) die Farbe mit dem Index der Zufallszahl das Label einfärben

Das Farben Array würde ich ausserhalb des ActionListeners erzeugen, dann kann man es immer wieder verwenden.
Warum nicht mit was einfacherem anfangen nur ein Label und ein Button der bei Betätigtung dem Label eine zufällige Farbe zuweist.

Da Du Arrays schon kennst warum nicht die vielen Buttons und Labels zumindest teilweise in einem Array verwalten?
 

Cyz44

Aktives Mitglied
@Camill Doch doch, du hast es verstanden :) hast recht, man muss das mit dem getrandomnumber ja dann einfach nur auf das lbl beziehen, Danke!

@Michael Die labels will ich ja am anfang noch undurchsichtig lassen, damit der spieler die Kombination noch nicht sieht

Das was du als letztes geschrieben hast klingt interessant, weil mein Code ist halt mega lang (über 300 zeilen) und dabei ist das meiste davon bisher nur, um die oberfläche zu gestalten. Hab auch schon meinen lehrer dazu gefragt, er meinte ich solls so lassen. Ja toll, dann komm ich am ende auf über 1000 zeilen :bahnhof:
 

Andi_CH

Top Contributor
Klassen die über sagen wir mal 200 Zeilen lang sind, sind zu hinterfragen, aber dazu werde ihr ja wohl noch kommen.

Also ich hinterfrage mal ...

Java:
  private JButton btn1 = new JButton();
  private JButton btn2 = new JButton();
  private JButton btn3 = new JButton();
  private JButton btn4 = new JButton();
  private JButton btn5 = new JButton();
  private JButton btn6 = new JButton();
  private JButton btn7 = new JButton();
  private JButton btn8 = new JButton();
  private JButton btn9 = new JButton();

Würde ich schon mal ersetzen durch
Java:
private JButton[] btn;

//im Konstruktor
btn = new JBUtton[9];
for (int i=0; i<btn.length; i++) 
  btn[i] = new JButton();
}

Genau dasselbe solltest du mit den JLabel machen.

Weiter fällt auf, dass mehrfach derselbe Code vorkommt.

Java:
    btn4.setBounds(176, 32, 40, 40);
    btn4.setText("");
    btn4.setBackground(Color.green);
    btn4.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent evt)
      {
        btn4_ActionPerformed(evt);
      }
    });
    cp.add(btn4);

Da könnte man darüber nachdenken, das in einen Prozedur zu packen.

Solltest du das jetzt noch nicht verstehen, ist das nicht so wichtig, denn an der Funktion selbst ändert das nichts - es verkleinert den Code und verbessert die Wartbarkeit.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Zufallsfarben aus Array Java Basics - Anfänger-Themen 11
A Zeichenkette teilen mit Substring oder Char Array Java Basics - Anfänger-Themen 14
A 6. Element aus einem Array zurückgeben Java Basics - Anfänger-Themen 1
A Was bedeutet bei einem Array "int a [MAX][MAX];", Java Basics - Anfänger-Themen 7
T Array verkleinern Java Basics - Anfänger-Themen 2
J Array aus Numberfield Eingaben Java Basics - Anfänger-Themen 7
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
Ü Zweidimensionales Array in der ersten Zeile deklarieren Java Basics - Anfänger-Themen 13
Thomas Uppe 2D Array Reihenfolge vermischen Java Basics - Anfänger-Themen 4
T array auslesen Java Basics - Anfänger-Themen 2
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
moini Auf Array aus Superklasse zugreifen? Java Basics - Anfänger-Themen 2
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
M NullPointerException: Cannot read the array length because "this.Kinder" is null Java Basics - Anfänger-Themen 1
P Wieso kann ich als Index für einen Array einen Char angeben? Java Basics - Anfänger-Themen 3
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
Proxy Chars vor array übergabe toLowerUpcase Java Basics - Anfänger-Themen 14
iAmFaiinez Primzahlen Tester ohne Array Java Basics - Anfänger-Themen 4
S array 2 dimensional treppe Java Basics - Anfänger-Themen 3
S Array 2x2 Blöcke mit 0 und 1 Java Basics - Anfänger-Themen 10
C Array von Klassen Java Basics - Anfänger-Themen 2
julian0507 2Dim-Array Spaltensummen Java Basics - Anfänger-Themen 1
XWing Doppelte Zahlen im Array Java Basics - Anfänger-Themen 8
melisax Java 2D-Array Tabelle Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
Proxy Stack erweitern mit neuem Array falls der alte voll ist!? Java Basics - Anfänger-Themen 5
E Array, nächste Zahl zur 5 ausgeben, wie? Java Basics - Anfänger-Themen 42
J Array.list vergleichen Java Basics - Anfänger-Themen 1
W Java-Code mit Array Java Basics - Anfänger-Themen 14
D Reflections & Generisches Array Java Basics - Anfänger-Themen 4
T Array Java Basics - Anfänger-Themen 2
T Array Java Basics - Anfänger-Themen 15
T Wörteranzahl im Array zählen Java Basics - Anfänger-Themen 9
Ostkreuz Zweidimensionaler Array Index Java Basics - Anfänger-Themen 2
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
R 2d Array individuell machen Java Basics - Anfänger-Themen 4
D 2D Char Array into String Java Basics - Anfänger-Themen 2
J Array Median bestimmen Java Basics - Anfänger-Themen 6
S Array Maximum bestimmen mit for und foreach Java Basics - Anfänger-Themen 7
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
N Array Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S leeres Array statt Null Pointer Exception ausgeben Java Basics - Anfänger-Themen 20
S Inhalte aus Array vergleichen und Max ausgeben Java Basics - Anfänger-Themen 3
M 2d array ohne längen anlegen Java Basics - Anfänger-Themen 4
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
E Reihenfolge der Werte umdrehen (mittels statischem int-Array Java Basics - Anfänger-Themen 3
O 2 Dimensionales Array Java Basics - Anfänger-Themen 6
M Bubble Sort - Int[] Array sortieren Java Basics - Anfänger-Themen 2
javaBoon86 Array mehrere Dimensionen Java Basics - Anfänger-Themen 10
B Array nach Elementwerten sortieren? Java Basics - Anfänger-Themen 1
B Explizit Array definieren geht nicht? Java Basics - Anfänger-Themen 14
D Kleinste Zahl in Array finden die vorher noch errechnet werden müssen. Java Basics - Anfänger-Themen 4
L Gegebenes Array sortieren, indem zufällige Zahlenpaare aus Array ausgewählt werden Java Basics - Anfänger-Themen 14
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Array beim erstellen mit Werten füllen Java Basics - Anfänger-Themen 6
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
Temsky34 Array IndexOf nicht verfügbar Java Basics - Anfänger-Themen 18
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
E Durch Muster in Array iterieren Java Basics - Anfänger-Themen 3
L Frage zum Array Java Basics - Anfänger-Themen 1
C 2D Array Ausgabe mit for-Schleife i,j Java Basics - Anfänger-Themen 4
D Methode: Array Reihenfolge tauschen Java Basics - Anfänger-Themen 3
julian0507 Array aus Methode in anderer Methode sichtbar machen Java Basics - Anfänger-Themen 10
P Array vom Typ Klasse Java Basics - Anfänger-Themen 18
Lion.King Array deklarieren und initialisieren Java Basics - Anfänger-Themen 5
P Array-Objekte-Aufruf Java Basics - Anfänger-Themen 22
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
M Methoden Zweidimensionaler Array mit Setter Methode ändern Java Basics - Anfänger-Themen 4
AkiJou Zeile in 2d Array löschen Java Basics - Anfänger-Themen 2
LilliCherry Array in einer Zeile ausgeben Java Basics - Anfänger-Themen 6
A Elemente in einem Array Java Basics - Anfänger-Themen 5
A Vorkommende Farben ermittel und als Array zurückgeben Java Basics - Anfänger-Themen 7
AhmadSlack Array Java Basics - Anfänger-Themen 7
Jambolo Kartenhand Array Java Basics - Anfänger-Themen 14
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
krgewb byte-Array, das ein Bild repräsentiert Java Basics - Anfänger-Themen 1
1 Array rekursiv durchlaufen Java Basics - Anfänger-Themen 8
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
EykS 3D Druckdatei basierend auf 3D Array? Java Basics - Anfänger-Themen 3
sserio Array funktioniert nicht Java Basics - Anfänger-Themen 2
sserio Iterierung über ein zweidimensionales Array Java Basics - Anfänger-Themen 16
sserio Zweidimensionales Array [][] wird untereinander ausgegeben Java Basics - Anfänger-Themen 14
Chris.089 2 Werte im Array tauschen Java Basics - Anfänger-Themen 6
D EinMalEins mithilfe einer for-Schleife und Array Java Basics - Anfänger-Themen 1
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
L Gridmuster in einem Array Java Basics - Anfänger-Themen 2
sgtcoopa Array übergeben Schleife Java Basics - Anfänger-Themen 0

Ähnliche Java Themen

Neue Themen


Oben