Hallo,
ivh bin Umschüler und in den Anfängen der Java-Programmierung, für ein Projekt brauche ich Hilfe, da ich mich irgendwie festgefahren haben :-(
Beschreibung: Als Projekt soll ein einfaches Mastermind in einem JFrame erstellt werden hierzu verwende ich drei Dateien Start, Haupt, Auswertung.
das Programm ist fast fertig ich habe die Überprüfung, ob die Farbe (eine von sechs) an der richtigen Position ist fertig leider komme ich nicht weiter, wo nicht überprüft werden soll ob Farbe und Pos. richtig ist, sondern ob eine der getippten Farben vorhanden ist, dieses soll im Code bei Frichtige ermittelt werden, die farben werden mit code per zufall erzeugt 4 von 6, die Eingabe werden per klick auf das Farbige Button erzeugt.
Wenn einer sich mal den Code anschauen kann wäre ich glücklich, wahrscheinlich sehe ich den Wald vor Bäimen nicht :-(
Start
Frame
Auswertung
Schon mal vielen Dank!!!!
ivh bin Umschüler und in den Anfängen der Java-Programmierung, für ein Projekt brauche ich Hilfe, da ich mich irgendwie festgefahren haben :-(
Beschreibung: Als Projekt soll ein einfaches Mastermind in einem JFrame erstellt werden hierzu verwende ich drei Dateien Start, Haupt, Auswertung.
das Programm ist fast fertig ich habe die Überprüfung, ob die Farbe (eine von sechs) an der richtigen Position ist fertig leider komme ich nicht weiter, wo nicht überprüft werden soll ob Farbe und Pos. richtig ist, sondern ob eine der getippten Farben vorhanden ist, dieses soll im Code bei Frichtige ermittelt werden, die farben werden mit code per zufall erzeugt 4 von 6, die Eingabe werden per klick auf das Farbige Button erzeugt.
Wenn einer sich mal den Code anschauen kann wäre ich glücklich, wahrscheinlich sehe ich den Wald vor Bäimen nicht :-(
Start
Code:
public class MastermindStart {
public static void main(String[] args) {
new MastermindFrame();
}
}
Code:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class MastermindFrame extends JFrame implements ActionListener {
private JButton bNeu;
private JButton bVerwerfen;
private JButton []b;
private JButton bAuswerten;
private JPanel po;
private JPanel pb;
private JPanel p;
private JPanel jb;
// private PlayButton[] b;
private JLabel l;
private JLabel lleer;
private JLabel lv;
private int n; //zähler
private int z;
private int kugeln;
private Auswertung aus;
public MastermindFrame (){
super("Mastermind Layoutvorschlag");
po=new JPanel();
po.setLayout(new GridLayout(1,4));
po.setBorder(BorderFactory.createLineBorder(Color.black,4));
add(po,BorderLayout.NORTH);
bAuswerten=new JButton("Auswerten");
bAuswerten.addActionListener(this);
bAuswerten.setEnabled(false);
po.add(bAuswerten);
bVerwerfen=new JButton("Auswahl verwerfen");
bVerwerfen.addActionListener(this);
po.add(bVerwerfen);
lleer=new JLabel("");
po.add(lleer);
bNeu=new JButton("Neues Spiel");
bNeu.addActionListener(this);
po.add(bNeu);
p=new JPanel();
n=1;
kugeln=0;
// Felder erzeugen
aus = new Auswertung();
z=0;
neueZeile();
// Farbige Buttons
jb=new JPanel();
jb.setLayout(new GridLayout(1,6));
jb.setBorder(BorderFactory.createLineBorder(Color.red,4));
add(jb,BorderLayout.SOUTH);
b=new JButton[6];
ImageIcon rot=new ImageIcon("rot.gif");
b[0]=new JButton(rot);
b[0].addActionListener(this);
b[0].setEnabled(true);
jb.add(b[0]);
ImageIcon blau=new ImageIcon("blau.gif");
b[1]=new JButton(blau);
b[1].addActionListener(this);
b[1].setEnabled(true);
jb.add(b[1]);
ImageIcon gruen=new ImageIcon("gruen.gif");
b[3]=new JButton(gruen);
b[3].addActionListener(this);
b[3].setEnabled(true);
jb.add(b[3]);
ImageIcon lila=new ImageIcon("lila.gif");
b[2]=new JButton(lila);
b[2].addActionListener(this);
b[2].setEnabled(true);
jb.add(b[2]);
ImageIcon schwarz=new ImageIcon("schwarz.gif");
b[4]=new JButton(schwarz);
b[4].addActionListener(this);
b[4].setEnabled(true);
jb.add(b[4]);
ImageIcon gelb=new ImageIcon("gelb.gif");
b[5]=new JButton(gelb);
b[5].addActionListener(this);
b[5].setEnabled(true);
jb.add(b[5]);
// Farbige Buttons ENDE
pack();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void neueZeile() {
// neueFarben();
p.setLayout(new GridLayout(n,2));// Zeilen mit Farbfeldern, 2 Spalten
p.setBorder(BorderFactory.createLineBorder(Color.yellow,4));
pb=new JPanel();
// panel im panel. 1 panel und der button-teil ist wieder im panel
pb.setLayout(new GridLayout(1,4));
pb.setBorder(BorderFactory.createLineBorder(Color.blue,4));
lv=new JLabel(n+". Versuch:");
pb.add(lv);
for (int i = 0; i < 4; i++) {
switch (aus.getEingabe(i)){
case 0:
ImageIcon ROT=new ImageIcon("rot.gif");
JLabel lrot=new JLabel(ROT);
lrot.setIcon(ROT);
lrot.setBorder(BorderFactory.createLineBorder(Color.CYAN));
pb.add(lrot);
break;
case 1:
ImageIcon BLAU=new ImageIcon("blau.gif");
JLabel lblau=new JLabel(BLAU);
lblau.setIcon(BLAU);
pb.add(lblau);
break;
case 2:
ImageIcon LILA=new ImageIcon("lila.gif");
JLabel llila=new JLabel(LILA);
llila.setIcon(LILA);
pb.add(llila);
break;
case 3:
ImageIcon GRUEN=new ImageIcon("gruen.gif");
JLabel lgruen=new JLabel(GRUEN);
lgruen.setIcon(GRUEN);
pb.add(lgruen);
break;
case 4:
ImageIcon SCHWARZ=new ImageIcon("schwarz.gif");
JLabel lschwarz=new JLabel(SCHWARZ);
lschwarz.setIcon(SCHWARZ);
pb.add(lschwarz);
break;
case 5:
ImageIcon GELB=new ImageIcon("gelb.gif");
JLabel lgelb=new JLabel(GELB);
lgelb.setIcon(GELB);
pb.add(lgelb);
break;
}
}
p.add(pb);
l = new JLabel("Kommentar");
// nachfolgend muss panel 30*5 sein, damit es genauso groß ist wie die
// 5 buttons zusammen. die 2 spalten müssen im grid-layout gleich groß sein
l.setPreferredSize(new Dimension(30*4,30));
p.add(l);
add(p,BorderLayout.CENTER);
}
public void actionPerformed(ActionEvent e) {
b[0].setEnabled(true);
b[1].setEnabled(true);
b[2].setEnabled(true);
b[3].setEnabled(true);
b[4].setEnabled(true);
b[5].setEnabled(true);
bAuswerten.setEnabled(false);
lv.setText(n+". Versuch:");
if(e.getSource()==bAuswerten){
if(n<8){
n++;
neueZeile();
pack();
kugeln=0;
l.setText(" Richtige "+aus.Richtige());
}
else{
l.setText("Sie haben keinen weiteren Versuch");
}
}
if(e.getSource()==b[1]){
aus.setEingabe(kugeln,1);
kugeln++;
}
if(e.getSource()==b[5]){
aus.setEingabe(kugeln,5);
kugeln++;
}
if(e.getSource()==b[0]){
aus.setEingabe(kugeln,0);
kugeln++;
}
if(e.getSource()==b[3]){
aus.setEingabe(kugeln,3);
kugeln++;
}
if(e.getSource()==b[2]){
aus.setEingabe(kugeln,2);
kugeln++;
}
if(e.getSource()==b[4]){
aus.setEingabe(kugeln,4);
kugeln++;
}
if(e.getSource()==bVerwerfen){
kugeln=0;
// pb.removeAll();
lv.setText(n+". Versuch:");
}
System.out.println("kugeln="+kugeln);
if(kugeln>=4){
b[0].setEnabled(false);
b[1].setEnabled(false);
b[2].setEnabled(false);
b[3].setEnabled(false);
b[4].setEnabled(false);
b[5].setEnabled(false);
bAuswerten.setEnabled(true);
}
}
}
Auswertung
Code:
public class Auswertung {
//Zufallszahlen
private int[] code;
// erfolgter Tipp
private int[] eingaben;
// Prüfung ob richtige Farbe und Position
private int richtige;
// Prüfung ob nur Farbe richttig ist
private int frichtige;
public Auswertung() {
super();
code = new int[4];
eingaben = new int[4];
neuesSpiel();
}
// Zufälliger Code (Zahlen die erreaten werden müssen
public void neuesSpiel(){
for (int i = 0; i < code.length; i++) {
code[i]= (int) (0+Math.random()*5);
System.out.println("Code"+code[i]);
}
}
public void setEingabe(int i,int farbe){
eingaben[i]=farbe;
System.out.println("set eingaben:"+eingaben[i]);
}
public int getEingabe(int i){
return eingaben[i];
}
public int Frichtige() {
frichtige=0;
for (int i = 0; i < eingaben.length; i++) {
if (eingaben[i] ==code[i]) {
frichtige=frichtige+1;
System.out.println("FRICHTIGE: "+frichtige);
}
}
return richtige;
}
public int Richtige() {
richtige=0;
for (int i = 0; i < eingaben.length; i++) {
if (eingaben[i]==code [i]) {
richtige=richtige+1;
System.out.println("richtige: "+richtige);
}
}
return richtige;
}
}
Schon mal vielen Dank!!!!