Hallo,
ich habe mein 4gewinnt nun fast fertig programmiert, Steine werden gesetzt etc.
Nur noch ein Problem:
Ich will, dass das Programm erkennt, wenn 4 Steine vertikal, horizontal oder diagonal in reihe sind. Dann soll eine Ausgabe erfolgen: "Spieler X hat gewonnen!"
Wäre nett wenn das jemand machen könnte, ich weiß nicht weiter und habe den Code nicht ganz selbst gemacht, habe keine Vorkentnisse!
Hier die Elemente:
SPIEL
public class SPIEL{ public LAMPE[][] spielfeld; int groesse, zaehler; public SPIEL() { groesse=20; spielfeld = new LAMPE[7][6]; for (int i = 0; i<7; i++) for (int k = 0; k<6; k++) spielfeld[k] = new LAMPE(150+2*groesse*i,120+2*groesse*k, groesse); zaehler=0; }
public void zeichne() { for (int i = 0; i<7;i++) for (int k = 0; k<6;k++) spielfeld[i][k].zeichne(); for (int i = 0; i<6;i++); } public void loeschen() { for (int i = 0; i<7; i++) for (int k = 0; k<6; k++) spielfeld[i][k].neuefarbe(7); } public int farbeholen(int posx, int posy) { return spielfeld[posx][posy].holfarbe(); } public int farbtest(int spalte) { int i =6; while (spielfeld[spalte][i].holfarbe()!=7) i--; return i; } public void allesneu() { loeschen(); } public boolean setzen(int spalte, int setzfarbe) { boolean setzja=false; int k=5; while (farbeholen(spalte,k)!=7) k--; if (k>-1) { setzja =true; zaehler++; spielfeld[spalte][k].neuefarbe(setzfarbe); } return setzja; } public int zaehlerzustand() { return zaehler; } }
LAMPE
public class LAMPE{ private int px,py; protected int radius, farbe; public LAMPE(int startx, int starty, int radiusneu) { px = startx; py = starty; farbe = 7; radius = radiusneu; }
public void zeichne() { ZEICHENFENSTER.gibFenster().zeichneRechteck(px, py, 2*radius, 2*radius); ZEICHENFENSTER.gibFenster().fuelleKreis(px+radius, py+radius, radius, farbe); } public int holfarbe() { return farbe; } public void neuefarbe(int fneu) { farbe=fneu; }
SPIELSTEUERUNG
import javax.swing.*;import java.awt.event.*;import java.util.Random;public class SPIELSTEUERUNG{ private SPIEL s; private JButton Reihe1, Reihe2, Reihe3, Reihe4, Reihe5, Reihe6, Reihe7, start; private JLabel anzeige; public int links, oben, laenge, breite, farbe, spieler, anzahl; public SPIELSTEUERUNG() { s = new SPIEL(); start = new JButton("START"); Reihe1 = new JButton(" REIHE1 "); Reihe2 = new JButton(" REIHE2 "); Reihe3 = new JButton(" REIHE3 "); Reihe4 = new JButton(" REIHE4 "); Reihe5 = new JButton(" REIHE5 "); Reihe6 = new JButton(" REIHE6 "); Reihe7 = new JButton(" REIHE7 "); s.zeichne(); start.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent st) { spielen(); } } ); ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(start,"rechts"); ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(Reihe1,"unten"); ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(Reihe2,"unten"); ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(Reihe3,"unten"); ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(Reihe4,"unten"); ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(Reihe5,"unten"); ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(Reihe6,"unten"); ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(Reihe7,"unten"); ZEICHENFENSTER.gibFenster().zeichneRechteck(links, oben, laenge, breite); ZEICHENFENSTER.gibFenster().fuelleRechteck(links, oben, laenge, breite, farbe); links = 240; oben = 30; laenge = 100; breite = 50; farbe = 2; spieler = 1; } public void spielen() { allesneu(); Reihe1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent r1) { steinesetzen(0); if (pruefen() ==true) ausgabe(); } } ); Reihe2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent r2) { steinesetzen(1); if (pruefen() ==true) ausgabe(); } } ); Reihe3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent r3) { steinesetzen(2); if (pruefen() ==true) ausgabe(); } } ); Reihe4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent r4) { steinesetzen(3); if (pruefen() ==true) ausgabe(); } } ); Reihe5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent r5) { steinesetzen(4); if (pruefen() ==true) ausgabe(); } } ); Reihe6.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent r6) { steinesetzen(5); if (pruefen() ==true) ausgabe(); } } ); Reihe7.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent r7) { steinesetzen(6); if (pruefen() ==true) ausgabe(); } } ); } public void ausgabe() { if (spieler==1) System.out.println("Spieler 1 hat gewonnen"); else System.out.println("Spieler 2 hat gewonnen");
} public void steinesetzen(int spalte) { anzahl=s.zaehlerzustand(); if (spieler==1) { if (s.setzen(spalte,4)==true) { s.zeichne(); spieler=2; } } else { if (s.setzen(spalte,6)==true) { s.zeichne(); spieler=1; } } } public void allesneu() { s.allesneu(); spieler=1; s.zeichne(); } public boolean pruefen() { boolean gewonnen = false; for(int i=0;i<6;i++) { for (int k=0;k<4;k++) { if ((s.farbeholen(i,k)==s.farbeholen(i,k+1))&&(s.farbeholen(i,k+1)==s.farbeholen(i,k+2))&&(s.farbeholen(i,k+2)==s.farbeholen(i,k+3))) gewonnen = true;
}} for(int i=0;i<7;i++) for (int k=0;k<4;k++) if ((s.farbeholen(i,k)==s.farbeholen(i,k+1))&&(s.farbeholen(i,k+1)==s.farbeholen(i,k+2))&&(s.farbeholen(i,k+2)==s.farbeholen(i,k+3))) gewonnen = true; // Überprüfeung der gesetzten Steine return gewonnen; }}
ich habe mein 4gewinnt nun fast fertig programmiert, Steine werden gesetzt etc.
Nur noch ein Problem:
Ich will, dass das Programm erkennt, wenn 4 Steine vertikal, horizontal oder diagonal in reihe sind. Dann soll eine Ausgabe erfolgen: "Spieler X hat gewonnen!"
Wäre nett wenn das jemand machen könnte, ich weiß nicht weiter und habe den Code nicht ganz selbst gemacht, habe keine Vorkentnisse!
Hier die Elemente:
SPIEL
public class SPIEL{ public LAMPE[][] spielfeld; int groesse, zaehler; public SPIEL() { groesse=20; spielfeld = new LAMPE[7][6]; for (int i = 0; i<7; i++) for (int k = 0; k<6; k++) spielfeld[k] = new LAMPE(150+2*groesse*i,120+2*groesse*k, groesse); zaehler=0; }
public void zeichne() { for (int i = 0; i<7;i++) for (int k = 0; k<6;k++) spielfeld[i][k].zeichne(); for (int i = 0; i<6;i++); } public void loeschen() { for (int i = 0; i<7; i++) for (int k = 0; k<6; k++) spielfeld[i][k].neuefarbe(7); } public int farbeholen(int posx, int posy) { return spielfeld[posx][posy].holfarbe(); } public int farbtest(int spalte) { int i =6; while (spielfeld[spalte][i].holfarbe()!=7) i--; return i; } public void allesneu() { loeschen(); } public boolean setzen(int spalte, int setzfarbe) { boolean setzja=false; int k=5; while (farbeholen(spalte,k)!=7) k--; if (k>-1) { setzja =true; zaehler++; spielfeld[spalte][k].neuefarbe(setzfarbe); } return setzja; } public int zaehlerzustand() { return zaehler; } }
LAMPE
public class LAMPE{ private int px,py; protected int radius, farbe; public LAMPE(int startx, int starty, int radiusneu) { px = startx; py = starty; farbe = 7; radius = radiusneu; }
public void zeichne() { ZEICHENFENSTER.gibFenster().zeichneRechteck(px, py, 2*radius, 2*radius); ZEICHENFENSTER.gibFenster().fuelleKreis(px+radius, py+radius, radius, farbe); } public int holfarbe() { return farbe; } public void neuefarbe(int fneu) { farbe=fneu; }
SPIELSTEUERUNG
import javax.swing.*;import java.awt.event.*;import java.util.Random;public class SPIELSTEUERUNG{ private SPIEL s; private JButton Reihe1, Reihe2, Reihe3, Reihe4, Reihe5, Reihe6, Reihe7, start; private JLabel anzeige; public int links, oben, laenge, breite, farbe, spieler, anzahl; public SPIELSTEUERUNG() { s = new SPIEL(); start = new JButton("START"); Reihe1 = new JButton(" REIHE1 "); Reihe2 = new JButton(" REIHE2 "); Reihe3 = new JButton(" REIHE3 "); Reihe4 = new JButton(" REIHE4 "); Reihe5 = new JButton(" REIHE5 "); Reihe6 = new JButton(" REIHE6 "); Reihe7 = new JButton(" REIHE7 "); s.zeichne(); start.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent st) { spielen(); } } ); ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(start,"rechts"); ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(Reihe1,"unten"); ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(Reihe2,"unten"); ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(Reihe3,"unten"); ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(Reihe4,"unten"); ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(Reihe5,"unten"); ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(Reihe6,"unten"); ZEICHENFENSTER.gibFenster().komponenteHinzufuegen(Reihe7,"unten"); ZEICHENFENSTER.gibFenster().zeichneRechteck(links, oben, laenge, breite); ZEICHENFENSTER.gibFenster().fuelleRechteck(links, oben, laenge, breite, farbe); links = 240; oben = 30; laenge = 100; breite = 50; farbe = 2; spieler = 1; } public void spielen() { allesneu(); Reihe1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent r1) { steinesetzen(0); if (pruefen() ==true) ausgabe(); } } ); Reihe2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent r2) { steinesetzen(1); if (pruefen() ==true) ausgabe(); } } ); Reihe3.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent r3) { steinesetzen(2); if (pruefen() ==true) ausgabe(); } } ); Reihe4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent r4) { steinesetzen(3); if (pruefen() ==true) ausgabe(); } } ); Reihe5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent r5) { steinesetzen(4); if (pruefen() ==true) ausgabe(); } } ); Reihe6.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent r6) { steinesetzen(5); if (pruefen() ==true) ausgabe(); } } ); Reihe7.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent r7) { steinesetzen(6); if (pruefen() ==true) ausgabe(); } } ); } public void ausgabe() { if (spieler==1) System.out.println("Spieler 1 hat gewonnen"); else System.out.println("Spieler 2 hat gewonnen");
} public void steinesetzen(int spalte) { anzahl=s.zaehlerzustand(); if (spieler==1) { if (s.setzen(spalte,4)==true) { s.zeichne(); spieler=2; } } else { if (s.setzen(spalte,6)==true) { s.zeichne(); spieler=1; } } } public void allesneu() { s.allesneu(); spieler=1; s.zeichne(); } public boolean pruefen() { boolean gewonnen = false; for(int i=0;i<6;i++) { for (int k=0;k<4;k++) { if ((s.farbeholen(i,k)==s.farbeholen(i,k+1))&&(s.farbeholen(i,k+1)==s.farbeholen(i,k+2))&&(s.farbeholen(i,k+2)==s.farbeholen(i,k+3))) gewonnen = true;
}} for(int i=0;i<7;i++) for (int k=0;k<4;k++) if ((s.farbeholen(i,k)==s.farbeholen(i,k+1))&&(s.farbeholen(i,k+1)==s.farbeholen(i,k+2))&&(s.farbeholen(i,k+2)==s.farbeholen(i,k+3))) gewonnen = true; // Überprüfeung der gesetzten Steine return gewonnen; }}