package classes;
/**
* @(#)GrafikFrame.java
*
*
* @author
* @version 1.00 2011/4/1
*/
import java.awt.*;
import java.awt.event.*;
import java.awt.Color.*;
import java.io.*;
import java.net.*;
import javax.imageio.ImageIO;
import java.util.*;
import javax.swing.*;
import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.plaf.metal.MetalIconFactory;
public class GrafikFrame extends Frame{
Label player1 = new Label("Spieler X");
TextField player1ein = new TextField("Bitte Namen eingeben");
Label player2 = new Label("Spieler O");
TextField player2ein = new TextField("Bitte Namen eingeben");
Label status = new Label("Willkommen bei 4 Gewinnt");
Button help = new Button("Hilfe");
Button add1 = new Button("add");
Button add2 = new Button("add");
Button wurf[] = new Button[7];
JButton[][] feldButton = new JButton[ROWS][COLS];
JLabel[][] feldLabel = new JLabel[ROWS][COLS];
ImageIcon feldGrafik;
Panel player = new Panel();
Panel feld1 = new Panel();
Panel status1 = new Panel();
static final int ROWS = 6;
static final int COLS = 7;
String name1;
String name2;
String palyer1bereit="false";
String palyer2bereit="false";
public String sieger;
public String Gewinner;
public int siegerdurch=0;
public int id=0;
int feldauswahl=1;//Auswahl zwischen 2 Spielfeldern.
int spalte1=5;
int spalte2=5;
int spalte3=5;
int spalte4=5;
int spalte5=5;
int spalte6=5;
int spalte7=5;
String zeichen="X";
String farbe;
public GrafikFrame() {
setLayout(new BorderLayout()); //setzt das Layout in den übergebenden Frame
feld1.setLayout(new GridLayout(7,1));
player.setLayout(new GridLayout(2,3));
status1.setLayout(new GridLayout(1,2));
player.add(player1);
player.add(player1ein);
player.add(add1);
player.add(player2);
player.add(player2ein);
player.add(add2);
// Button Erstellung zum Einwurf
for(int i=0; i<wurf.length; i++){
feld1.add(wurf[i] = new Button("V"));
wurf[i].setEnabled(false);
}
// Feld Erstellung
for(int row=0; row<ROWS; row++){
for(int col=0; col<COLS;col++) {//Auswahl zwischen 2 Spielfeldern
if(feldauswahl==0){//ButtonFeld
feld1.add(feldButton[row][col]=new JButton());
feldButton[row][col].setBackground(new Color(227,227,227));
}
if(feldauswahl==1){//GrafikFeld
// feld1.add(feldLabel[row][col]=new JLabel(new ImageIcon("img\\feld1.gif")));
feldGrafik=new ImageIcon("img\\feld1.gif");
feldGrafik.setDescription("leer");
feld1.add(feldLabel[row][col]=new JLabel(feldGrafik));
//System.out.println(feldLabel[row][col].getDescription());
}
}
}
status1.add(status);
status1.add(help);
add(player, BorderLayout.NORTH);
add(feld1, BorderLayout.CENTER);
add(status1, BorderLayout.SOUTH);
setVisible(true);
setSize(700,800);
setLocationRelativeTo(null); //setzt den Frame in die Mitte des Desktops
//============================================Mouse-Over-Effekt==========================================
//Textfeldeingabe von Namen des Player 1 löschen
player1ein.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
if(player1ein.getText().equals("Bitte Namen eingeben")) //nimmt den Text "Bitte eingeben"
player1ein.setText(""); //setzt den Text "" also nichts an die stelle
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
//Textfeldeingabe von Namen des Player 2 löschen
player2ein.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
if(player2ein.getText().equals("Bitte Namen eingeben")) //nimmt den Text "Bitte eingeben"
player2ein.setText(""); //setzt den Text "" also nichts an die stelle
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
//===========================================Buttenfunktionen============================================
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent event){
System.exit(0);
}
});
add1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event){
name1 = player1ein.getText();
player1ein.setEnabled(false);
add1.setEnabled(false);
System.out.println("name1: "+ name1);
controllname1();
System.out.println("bereit1: "+palyer1bereit );
startgame();
}});
add2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event){
name2 = player2ein.getText();
player2ein.setEnabled(false);
add2.setEnabled(false);
System.out.println("name2: "+ name2);
controllname2();
System.out.println("bereit2: "+palyer2bereit );
startgame();
}});
help.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event){
AnzeigeHelpFrame F6 = new AnzeigeHelpFrame();
}});
wurf[0].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
System.out.println("Button 1");
if(spalte1<0){
status.setText("Spalte1 voll");
}
if(spalte1>=0){
if (feldauswahl==0){
feldButton[spalte1][0].setText(zeichen);
spalte1--;
switchplayer(spalte1,0);
}
if (feldauswahl==1){
spalte1--;
switchplayer(spalte1,0);
System.out.println(feldGrafik.getDescription());
}
}
}});
wurf[1].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
System.out.println("Button 2");
if(spalte2<0){
status.setText("Spalte2 voll");
}
if(spalte2>=0){
if (feldauswahl==0){
feldButton[spalte2][1].setText(zeichen);
spalte2--;
switchplayer(spalte2,1);
}
if (feldauswahl==1){
spalte2--;
switchplayer(spalte2,1);
}
}
}});
wurf[2].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
System.out.println("Button3");
if(spalte3<0){
status.setText("Spalte3 voll");
}
if(spalte3>=0){
if (feldauswahl==0){
feldButton[spalte3][2].setText(zeichen);
spalte3--;
switchplayer(spalte3,2);
}
if (feldauswahl==1){
spalte3--;
switchplayer(spalte3,2);
}
}
}});
wurf[3].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
System.out.println("Button4");
if(spalte4<0){
status.setText("Spalte4 voll");
}
if(spalte4>=0){
if (feldauswahl==0){
feldButton[spalte4][3].setText(zeichen);
spalte4--;
switchplayer(spalte4,3);
}
if (feldauswahl==1){
spalte4--;
switchplayer(spalte4,3);
}
}
}});
wurf[4].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
System.out.println("Button5");
if(spalte5<0){
status.setText("Spalte5 voll");
}
if(spalte5>=0){
if (feldauswahl==0){
feldButton[spalte5][4].setText(zeichen);
spalte5--;
switchplayer(spalte5,4);
}
if (feldauswahl==1){
spalte5--;
switchplayer(spalte5,4);
}
}
}});
wurf[5].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
System.out.println("Button 6");
if(spalte6<0){
status.setText("Spalte6 voll");
}
if(spalte6>=0){
if (feldauswahl==0){
feldButton[spalte6][5].setText(zeichen);
spalte6--;
switchplayer(spalte6,5);
}
if (feldauswahl==1){
spalte6--;
switchplayer(spalte6,5);
}
}
}});
wurf[6].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
System.out.println("Button 7");
if(spalte7<0){
status.setText("Spalte7 voll");
}
if(spalte7>=0){
if (feldauswahl==0){
feldButton[spalte7][6].setText(zeichen);
spalte7--;
switchplayer(spalte7,6);
}
if (feldauswahl==1){
spalte7--;
switchplayer(spalte7,6);
}
}
}});
}
//================================================Methoden===============================================
public void controllname1(){
if(name1.equals(name2))
{
player1ein.setEnabled(true);
add1.setEnabled(true);
status.setText("Spieler X bitte einen anderer Name");
palyer1bereit="false";
}
else if(name1.equals("Bitte Namen eingeben")){
player1ein.setEnabled(true);
add1.setEnabled(true);
status.setText("Spieler X bitte anmelden");
palyer1bereit="false";
}
else if(name1.equals("")){
player1ein.setEnabled(true);
add1.setEnabled(true);
status.setText("Spieler X hat keinen Namen angegeben");
palyer1bereit="false";
}
else{
palyer1bereit="true";
}
}
public void controllname2(){
if(name2.equals(name1))
{
player2ein.setEnabled(true);
add2.setEnabled(true);
status.setText("Spieler O bitte einen anderer Name");
}
else if(name2.equals("Bitte Namen eingeben")){
player2ein.setEnabled(true);
add2.setEnabled(true);
status.setText("Spieler O bitte anmelden");
}
else if(name2.equals("")){
player2ein.setEnabled(true);
add2.setEnabled(true);
status.setText("Spieler O hat keinen Namen angegeben");
}
else {
palyer2bereit="true";
}
}
public void startgame(){
if(palyer1bereit.equals("true")&&palyer2bereit.equals("true")){
status.setText("Spiel gestarten");
try{
Thread.sleep(1000);
status.setText("Spiel startet in 3");
Thread.sleep(1000);
status.setText("Spiel startet in 2");
Thread.sleep(1000);
status.setText("Spiel startet in 1");
Thread.sleep(1000);
status.setText(name1+" ist an der Reihe");
for(int i=0; i<wurf.length; i++){
wurf[i].setEnabled(true);
}
}
catch(InterruptedException e){
}
}
}
public void switchplayer(int spalte, int zeile){
if(id==1){
if (feldauswahl==0){
player1Button(spalte,zeile);
}
if (feldauswahl==1){
player1Grafik(spalte,zeile);
}
}
else{
if (feldauswahl==0){
player2Button(spalte,zeile);
}
if (feldauswahl==1){
player2Grafik(spalte,zeile);
}
}
if (feldauswahl==0){
IsGameOverButton();
}
if (feldauswahl==1){
IsGameOverGrafik();
}
System.out.println(feldLabel[0][0]);
// feldLabel[zeile+1][spalte].setText("red");
}
//Setzt die Eingaben der Spieler beim ButtonFeld
public void player1Button(int spalte, int zeile){
zeichen="X";
spalte++;
feldButton[spalte][zeile].setBackground(new Color(0,0,205));
status.setText(name1+" ist an der Reihe");
id=0;
}
public void player2Button(int spalte, int zeile){
zeichen="O";
spalte++;
feldButton[spalte][zeile].setBackground(new Color(255,69,0));
status.setText(name2+" ist an der Reihe");
id=1;
}
//Setzt die Eingaben der Spieler beim GrafikFeld
public void player1Grafik(int spalte, int zeile){
zeichen="X";
spalte++;
//feldLabel[spalte][zeile].setIcon(redButton);
feldGrafik = new ImageIcon("img\\Buttonred.gif");
feldLabel[spalte][zeile].setIcon(feldGrafik);
feldGrafik.setDescription("redButton");
//System.out.println(""+redButton.getDescription());
status.setText(name1+" ist an der Reihe");
id=0;
// System.out.println(feldLabel[spalte][zeile].getIcon(feldGrafik.getDescription());
}
public void player2Grafik(int spalte, int zeile){
spalte++;
// feldLabel[spalte][zeile].setIcon(yellowButton);
feldGrafik = new ImageIcon("img\\Buttonyellow.gif");
feldGrafik.setDescription("yellowButton");
feldLabel[spalte][zeile].setIcon(feldGrafik);
status.setText(name2+" ist an der Reihe");
id=1;
// System.out.println(feldGrafik.getDescription());
}
//Siegerfunktion des GrafikFelds
public void IsGameOverGrafik(){
//Hier benötige ich eine Funktion wo ich die Icons überprüfe
}
//Siegerfunktion des ButtonFelds
public void IsGameOverButton(){
System.out.println("IsGameOver");
//Zeilenüberprüfung
for(int zeile = 0; zeile < 3;zeile++){ //feld[6][7]
for(int spalte = 0; spalte < 7; spalte++){
//System.out.println("Zeilenüberprüfung");
if(feldButton[zeile][spalte].getText()=="X" && feldButton[zeile+1][spalte].getText()=="X" &&
feldButton[zeile+2][spalte].getText()=="X" && feldButton[zeile+3][spalte].getText()=="X")
{
status.setText(name1+" hat 4 in einer Zeile");
siegerdurch=1;
playerXwin();
}
if(feldButton[zeile][spalte].getText()=="O" && feldButton[zeile+1][spalte].getText()=="O" &&
feldButton[zeile+2][spalte].getText()=="O" && feldButton[zeile+3][spalte].getText()=="O")
{
status.setText(name2+" hat 4 in einer Zeile");
siegerdurch=1;
playerOwin();
}
}
}
//Spaltenüberprüfung
for(int zeilesp = 0; zeilesp < 6;zeilesp++){ //feld[6][7]
for(int spaltesp = 0; spaltesp < 4; spaltesp++){ //-den 4 spalten sonst geht er aus dem array
// System.out.println("spaltenüberprüfung");
if(feldButton[zeilesp][spaltesp].getText()=="X" && feldButton[zeilesp][spaltesp+1].getText()=="X" &&
feldButton[zeilesp][spaltesp+2].getText()=="X" && feldButton[zeilesp][spaltesp+3].getText()=="X")
{
status.setText(name1+" hat 4 in einer Spalte");
siegerdurch=2;
playerXwin();
}
if(feldButton[zeilesp][spaltesp].getText()=="O" && feldButton[zeilesp][spaltesp+1].getText()=="O" &&
feldButton[zeilesp][spaltesp+2].getText()=="O" && feldButton[zeilesp][spaltesp+3].getText()=="O")
{
status.setText(name2+" hat 4 in einer Spalte");
siegerdurch=2;
playerOwin();
}
}
}
//Diagonalüberprüfung ObenLinks->UntenRechts
for(int zeiledia1 = 0; zeiledia1 < 3;zeiledia1++){ //feld[6][7]
for(int spaltedia1 = 0; spaltedia1 < 4; spaltedia1++){
//System.out.println("diagonalüberprüfung");
if(feldButton[zeiledia1][spaltedia1].getText()=="X" && feldButton[zeiledia1+1][spaltedia1+1].getText()=="X" &&
feldButton[zeiledia1+2][spaltedia1+2].getText()=="X" && feldButton[zeiledia1+3][spaltedia1+3].getText()=="X")
{
status.setText(name1+" hat 4 in der diagonale ObenLinks->UntenRechts");
siegerdurch=3;
playerXwin();
}
if(feldButton[zeiledia1][spaltedia1].getText()=="O" && feldButton[zeiledia1+1][spaltedia1+1].getText()=="O" &&
feldButton[zeiledia1+2][spaltedia1+2].getText()=="O" && feldButton[zeiledia1+3][spaltedia1+3].getText()=="O")
{
status.setText(name2+" hat 4 in der diagonale ObenLinks->UntenRechts");
siegerdurch=3;
playerOwin();
}
}
}
//Diagonalüberprüfung UntenLinks->ObenRechts
for(int zeiledia2 = 0; zeiledia2 < 3;zeiledia2++){ //feld[6][7]
for(int spaltedia2 = 0; spaltedia2 < 6; spaltedia2++){
//System.out.println("diagonalüberprüfung");
if(feldButton[zeiledia2+3][spaltedia2].getText()=="X" && feldButton[zeiledia2+2][spaltedia2+1].getText()=="X" &&
feldButton[zeiledia2+1][spaltedia2+2].getText()=="X" && feldButton[zeiledia2][spaltedia2+3].getText()=="X")
{
status.setText(name1+" hat 4 in der diagonale UntenLinks->ObenRechts");
siegerdurch=4;
playerXwin();
}
if(feldButton[zeiledia2+3][spaltedia2].getText()=="O" && feldButton[zeiledia2+2][spaltedia2+1].getText()=="O" &&
feldButton[zeiledia2+1][spaltedia2+2].getText()=="O" && feldButton[zeiledia2][spaltedia2+3].getText()=="O")
{
status.setText(name2+" hat 4 in der diagonale UntenLinks->ObenRechts");
siegerdurch=4;
playerOwin();
}
}
}
}
private void playerXwin(){
for(int i=0; i<wurf.length; i++){
wurf[i].setEnabled(false);
}
sieger=name1;
GameOver();
}
private void playerOwin(){
for(int i=0; i<wurf.length; i++){
wurf[i].setEnabled(false);
}
GameOver();
sieger=name2;
}
public void spielfeld(){
}
public void GameOver(){
try{
Thread.sleep(5000);
SiegerFrame F3 = new SiegerFrame();
}
catch (InterruptedException e){
}
}
//================================================Klassen===============================================
class SiegerFrame extends Frame{
Label oben = new Label("Game Over");
Label leer = new Label();
Label sieger1 = new Label("Sieger ist:");
Label sieger2 = new Label();
Label durch1 = new Label("Gewonnen durch:");
Label durch2 = new Label();
Button main = new Button("Hauptmenu");
Button newgame = new Button("neues Spiel");
Button exit = new Button("Ende");
Panel p5 = new Panel();
Panel p6 = new Panel();
Panel p7 = new Panel();
JFrame applikation;
Container container;
public SiegerFrame(){
applikation = new JFrame("Sieger");
container = applikation.getContentPane();
applikation.setLayout(new BorderLayout()); //setzt das Layout in den übergebenden Frame
p5.setLayout(new GridLayout(1,1));
p6.setLayout(new GridLayout(2,2));
p7.setLayout(new GridLayout(3,1));
applikation.add(p5, BorderLayout.NORTH);
applikation.add(p6, BorderLayout.CENTER);
applikation.add(p7, BorderLayout.SOUTH);
p5.add(oben);
p6.add(sieger1);
p6.add(sieger2);
p6.add(durch1);
SiegerdurchMethode();
p6.add(durch2);
p7.add(main);
p7.add(newgame);
p7.add(exit);
applikation.setUndecorated(true); //obere Leiste mit X ausschalten
applikation.pack();
//applikation.setContentPane(new BackgroundPanel());
applikation.setVisible(true);
applikation.setLocationRelativeTo(null); //setzt den Frame in die Mitte des Desktops
sieger2.setText(""+sieger);
main.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent f) {
AnzeigeMenuFrame F1 = new AnzeigeMenuFrame();
}
});
newgame.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent f) {
clear();
applikation.setVisible(false);
}
});
exit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent f) {
System.exit(0);
}
});
}
public void SiegerdurchMethode(){
if(siegerdurch==1){
durch2.setText("4 in einer Zeile");
}
if(siegerdurch==2){
durch2.setText("4 in einer Spalte");
}
if(siegerdurch==3){
durch2.setText("4 in der diagonale ObenLinks->UntenRechts");
}
if(siegerdurch==4){
durch2.setText("4 in der diagonale UntenLinks->ObenRechts");
}
}
}
public void clear(){
for(int row=0; row<ROWS; row++){
for(int col=0; col<COLS;col++) {
feldButton[row][col].setBackground(new Color(227,227,227));
feldButton[row][col].setText("");
}
}
for(int i=0; i<wurf.length; i++){
wurf[i].setEnabled(false);
}
player1ein.setEnabled(true);
player2ein.setEnabled(true);
add1.setEnabled(true);
add2.setEnabled(true);
spalte1=5;
spalte2=5;
spalte3=5;
spalte4=5;
spalte5=5;
spalte6=5;
spalte7=5;
player1ein.setText("Bitte Namen eingeben");
player2ein.setText("Bitte Namen eingeben");
palyer1bereit="false";
palyer2bereit="false";
siegerdurch=0;
id=0;
zeichen="X";
status.setText("Neues Spiel geladen");
}
}