/**
*
Title: Spielfeld</p>
*
*
Beschreibung: </p>
*
*
Copyright: Copyright (c) 2005</p>
*
*
Organisation: Fachhochschule Frankfurt am Main</p>
*
* @author Christian Hoeboer & Sven Lissek & Stefan Wolf
* @version 1.0
*/
package game;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import game.Wuerfel;
import game.SpielerAnzahlDialog;
public class Spielfeld extends JPanel implements MouseListener
{
/**
* Konstruktor von Spielfeld initialisiert die 40 Felder des
* char Arrays mit 'n'
*/
private char [] Spielplan = new char[40];
// Variablen Deklaration
private GridBagConstraints gbc;
private GridBagLayout gbl;
private Wuerfel wuerfel;
public JTextField msg;
private JLabel anz,m,a,d,n,rotstart,gelbstart,grünstart, blaustart,info;
private JLabel[] normfeld, blaufeld, gelbfeld, grünfeld,rotfeld,blauhaus,rothaus,grünhaus
,gelbhaus,pfeil,stein;
/*
private int punkte;
private char Eigenschaft;
private int art;
public char Farbe[] = "wrgby".toCharArray(); // w= white; r=red; g=green; y = yellow; b=blue;
private boolean Zustand = false; // true, wenn figur auf dem Feld steht
*/
public Spielfeld()
{
gbc = new GridBagConstraints();
gbl = new GridBagLayout();
wuerfel = new Wuerfel();
for(int i=0; i < 40; i++)
{
Spielplan[i]='n';
// n steht für neutral
}
// alle, für das Spielfeld relevanten Grafiken werden geladen
//Würfelgrafiken
anz = new JLabel(new ImageIcon("würfeln.gif"));
anz.addMouseListener(this);
//Pfeile
pfeil = new JLabel[4];
pfeil[0] = new JLabel(new ImageIcon("pfeil.gif"));
pfeil[1] = new JLabel(new ImageIcon("pfeilo.gif"));
pfeil[2] = new JLabel(new ImageIcon("pfeils.gif"));
pfeil[3] = new JLabel(new ImageIcon("pfeilw.gif"));
//Texte
info = new JLabel("INFOs :");
info.setFont(new Font("Comic Sans MS", Font.BOLD, 16));
msg = new JTextField("Willkommen zu Mensch ärger Dich nicht ! ");
msg.setFont(new Font("Comic Sans MS", Font.BOLD, 14));
msg.setEditable(false);
m = new JLabel("Mensch");
m.setFont(new Font("Comic Sans MS", Font.BOLD, 24));
a = new JLabel("ärger");
a.setFont(new Font("Comic Sans MS", Font.BOLD, 24));
d = new JLabel("Dich");
d.setFont(new Font("Comic Sans MS", Font.BOLD, 24));
n = new JLabel("nicht");
n.setFont(new Font("Comic Sans MS", Font.BOLD, 24));
//alle Steine
stein = new JLabel[4];
stein[0] = new JLabel(new ImageIcon("steinblau.gif"));
stein[1] = new JLabel(new ImageIcon("steinrot.gif"));
stein[2] = new JLabel(new ImageIcon("steingelb.gif"));
stein[3] = new JLabel(new ImageIcon("steingruen.gif"));
//alle Felder
//normfelder werden in einer For- schleife mit Grafik angebunden
normfeld = new JLabel[36];
for(int i=0; i<36; i++)
{
normfeld[i] = new JLabel(new ImageIcon("normfeld.gif"));
}
//blaufelder werden mit Grafik angebunden
blaustart = new JLabel(new ImageIcon("blaufeld.gif"));
blaufeld = new JLabel[4];
blauhaus = new JLabel[4];
for(int i=0; i<4 ;i++)
{
blaufeld[i] = new JLabel(new ImageIcon("blaufeld.gif"));
}
blauhaus[0] = new JLabel(new ImageIcon("blau1.gif"));
blauhaus[1] = new JLabel(new ImageIcon("blau2.gif"));
blauhaus[2] = new JLabel(new ImageIcon("blau3.gif"));
blauhaus[3] = new JLabel(new ImageIcon("blau4.gif"));
//rotfelder werden mit Grafik angebunden
rotstart = new JLabel(new ImageIcon("rotfeld.gif"));
rotfeld = new JLabel[4];
rothaus = new JLabel[4];
for(int i=0; i<4 ;i++)
{
rotfeld[i] = new JLabel(new ImageIcon("rotfeld.gif"));
}
rothaus[0] = new JLabel(new ImageIcon("rot1.gif"));
rothaus[1] = new JLabel(new ImageIcon("rot2.gif"));
rothaus[2] = new JLabel(new ImageIcon("rot3.gif"));
rothaus[3] = new JLabel(new ImageIcon("rot4.gif"));
//gelbfelder werden mit Grafik angebunden
gelbstart = new JLabel(new ImageIcon("gelbfeld.gif"));
gelbfeld = new JLabel[4];
gelbhaus = new JLabel[4];
for(int i=0; i<4 ;i++)
{
gelbfeld[i] = new JLabel(new ImageIcon("gelbfeld.gif"));
}
gelbhaus[0] = new JLabel(new ImageIcon("gelb1.gif"));
gelbhaus[1] = new JLabel(new ImageIcon("gelb2.gif"));
gelbhaus[2] = new JLabel(new ImageIcon("gelb3.gif"));
gelbhaus[3] = new JLabel(new ImageIcon("gelb4.gif"));
//grünfelder werden mit Grafik angebunden
grünstart = new JLabel(new ImageIcon("grünfeld.gif"));
grünfeld = new JLabel[4];
grünhaus = new JLabel[4];
for(int i=0; i<4 ;i++)
{
grünfeld[i] = new JLabel(new ImageIcon("grünfeld.gif"));
}
grünhaus[0] = new JLabel(new ImageIcon("grün1.gif"));
grünhaus[1] = new JLabel(new ImageIcon("grün2.gif"));
grünhaus[2] = new JLabel(new ImageIcon("grün3.gif"));
grünhaus[3] = new JLabel(new ImageIcon("grün4.gif"));
setBackground(Color.white);
setLayout(gbl);
}//end of Spielfeld
//------Logik--------------------------------------------------------------------
public void setElementAt(char elem, int index)
{
Spielplan[index]=elem;
}
public char elementAt(int index)
{
return Spielplan[index];
}
public int getPosLast(char elem)
{
int pos = 0;
for(int i=39; i>=0; i--)
{
if (Spielplan[i] == elem)
{
pos = i;
}
else
pos = 1000;
}
return pos;
}
public void setText()
{
System.out.println("Test");
}
public void setMsg ()
{
msg.setText("Test!");
}
/*
setStein setzt für die Spieler, die bei neues Spiel starten, ausgewählt wurden,
alle Spielsteine auf ihre entsprechende Position
*/
public void setStein (int nr)
{
if(nr == 0)
{
for(int i=0; i<4; i++)
{
blaufeld[i].setIcon(new ImageIcon("steinblau.gif"));
}
}
if(nr == 1)
{
for(int i=0; i<4; i++)
{
rotfeld[i].setIcon(new ImageIcon("steinrot.gif"));
}
}
if(nr == 2)
{
for(int i=0; i<4; i++)
{
gelbfeld[i].setIcon(new ImageIcon("steingelb.gif"));
}
}
if(nr == 3)
{
for(int i=0; i<4; i++)
{
grünfeld[i].setIcon(new ImageIcon("steingruen.gif"));
}
}
}//end of setStein
//Diese Funktion ändert die angezeigte Würfelgrafik, entsprechend der gewürfelten Zahl
public void refreshWürfel (int augen)
{
switch(augen)
{
case 0: anz.setIcon(new ImageIcon("würfeln.gif"));
break;
case 1: anz.setIcon(new ImageIcon("eins.gif"));
break;
case 2: anz.setIcon(new ImageIcon("zwei.gif"));
break;
case 3: anz.setIcon(new ImageIcon("drei.gif"));
break;
case 4: anz.setIcon(new ImageIcon("vier.gif"));
break;
case 5: anz.setIcon(new ImageIcon("fünf.gif"));
break;
case 6: anz.setIcon(new ImageIcon("sechs.gif"));
break;
}
for(int i=0; i<4; i++)
{
blaufeld[i].setIcon(new ImageIcon("steinblau.gif"));
}
// System.out.println("Anz: " + anz);
}
public void addZelle(Component komp,int hoehe, int breite, int xpos, int ypos)
{
gbc.fill = GridBagConstraints.NONE;
gbc.gridwidth = breite;
gbc.gridheight = hoehe;
gbc.gridx = xpos;
gbc.gridy = ypos;
gbl.setConstraints(komp,gbc);
add(komp);
}
public void hinzufügen()
{
//Text hinzufügen
addZelle(m,1,2,1,3);
addZelle(a,1,2,8,3);
addZelle(d,1,2,1,7);
addZelle(n,1,2,8,7);
addZelle(info,1,3,0,11);
addZelle(msg,1,9,1,12);
//Würfel hinzufühgen
addZelle(anz,2,2,7,1);
//Pfeile hinzufügen
addZelle(pfeil[0],1,1,3,10);
addZelle(pfeil[1],1,1,0,3);
addZelle(pfeil[2],1,1,7,0);
addZelle(pfeil[3],1,1,10,7);
//alle Startpunkte von blau
addZelle(blaufeld[0],1,1,0,0);
addZelle(blaufeld[1],1,1,1,0);
addZelle(blaufeld[2],1,1,0,1);
addZelle(blaufeld[3],1,1,1,1);
//alle Häuschen von blau
addZelle(blauhaus[0],1,1,1,5);
addZelle(blauhaus[1],1,1,2,5);
addZelle(blauhaus[2],1,1,3,5);
addZelle(blauhaus[3],1,1,4,5);
//alle Startpunkte von rot
addZelle(rotfeld[0],1,1,9,0);
addZelle(rotfeld[1],1,1,10,0);
addZelle(rotfeld[2],1,1,9,1);
addZelle(rotfeld[3],1,1,10,1);
//alle Häuschen von rot
addZelle(rothaus[0],1,1,5,1);
addZelle(rothaus[1],1,1,5,2);
addZelle(rothaus[2],1,1,5,3);
addZelle(rothaus[3],1,1,5,4);
//alle Startpunkte von gelb
addZelle(gelbfeld[0],1,1,9,9);
addZelle(gelbfeld[1],1,1,10,9);
addZelle(gelbfeld[2],1,1,9,10);
addZelle(gelbfeld[3],1,1,10,10);
//alle Startpunkte von gelb
addZelle(gelbhaus[0],1,1,9,5);
addZelle(gelbhaus[1],1,1,8,5);
addZelle(gelbhaus[2],1,1,7,5);
addZelle(gelbhaus[3],1,1,6,5);
//alle Startpunkte von grün
addZelle(grünfeld[0],1,1,0,10);
addZelle(grünfeld[1],1,1,0,9);
addZelle(grünfeld[2],1,1,1,10);
addZelle(grünfeld[3],1,1,1,9);
//alle Startpunkte von grün
addZelle(grünhaus[0],1,1,5,9);
addZelle(grünhaus[1],1,1,5,8);
addZelle(grünhaus[2],1,1,5,7);
addZelle(grünhaus[3],1,1,5,6);
//alle Spielfelder hinzufügen
addZelle(normfeld[0],1,1,4,0);
addZelle(normfeld[1],1,1,5,0);
addZelle(rotstart,1,1,6,0);
addZelle(normfeld[2],1,1,6,1);
addZelle(normfeld[3],1,1,6,2);
addZelle(normfeld[4],1,1,6,3);
addZelle(normfeld[5],1,1,6,4);
addZelle(normfeld[6],1,1,7,4);
addZelle(normfeld[7],1,1,8,4);
addZelle(normfeld[8],1,1,9,4);
addZelle(normfeld[9],1,1,10,4);
addZelle(normfeld[10],1,1,10,5);
addZelle(gelbstart,1,1,10,6);
addZelle(normfeld[11],1,1,9,6);
addZelle(normfeld[12],1,1,8,6);
addZelle(normfeld[13],1,1,7,6);
addZelle(normfeld[14],1,1,6,6);
addZelle(normfeld[15],1,1,6,7);
addZelle(normfeld[16],1,1,6,8);
addZelle(normfeld[17],1,1,6,9);
addZelle(normfeld[18],1,1,6,10);
addZelle(normfeld[19],1,1,5,10);
addZelle(grünstart,1,1,4,10);
addZelle(normfeld[20],1,1,4,9);
addZelle(normfeld[21],1,1,4,8);
addZelle(normfeld[22],1,1,4,7);
addZelle(normfeld[23],1,1,4,6);
addZelle(normfeld[24],1,1,3,6);
addZelle(normfeld[25],1,1,2,6);
addZelle(normfeld[26],1,1,1,6);
addZelle(normfeld[27],1,1,0,6);
addZelle(normfeld[28],1,1,0,5);
addZelle(blaustart,1,1,0,4);
addZelle(normfeld[29],1,1,1,4);
addZelle(normfeld[30],1,1,2,4);
addZelle(normfeld[31],1,1,3,4);
addZelle(normfeld[32],1,1,4,4);
addZelle(normfeld[33],1,1,4,3);
addZelle(normfeld[34],1,1,4,2);
addZelle(normfeld[35],1,1,4,1);
}
/*
Wenn im Spielfeld, der Mauszeiger über den Würfel bewegt wird, verändert sich
der Zeige in eine Hand, wenn er wieder außerhalb des Würfels ist, wird er wieder zum
Zeiger
*/
public void mouseEntered(MouseEvent me)
{
me.getComponent().setCursor(new Cursor(Cursor.HAND_CURSOR));
}
public void mouseExited(MouseEvent me)
{
me.getComponent().setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
/*
Wenn man auf den Würfel klickt, wird über die Würfelklasse eine Random zahl an
die Funktion zurückgegeben. Im Massage Feld im unterem Teil des Fensters, wird erst
eine Meldung über die gewürfelte Zahl angezeigt. Danach wird die Würfelgrafik refreshed
und das Massage Feld wird nach 3 Sekunden geändert.
*/
public void mouseClicked(MouseEvent me)
{
if(me.getComponent() == anz)
{
int temp = 0;
wuerfel.wuerfeln();
temp = wuerfel.getAugenzahl();
msg.setText("Sie haben eine: " + temp + " gewürfelt");
// System.out.println("Sie haben eine: " + temp + " gewürfelt, würfel");
refreshWürfel(temp);
//msg.setText("Wählen sie nun eine Figur aus, die sie ziehen möchte !");
}
}
public void mousePressed(MouseEvent me)
{
}
public void mouseReleased(MouseEvent me)
{
}
}//end of class