import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Dame extends Frame {
Canvas cv=new Canvas();
Panel pan1=new Panel();
Panel pan=new Panel();
Graphics g;
Label lb=new Label();
int[][] figur=new int[8][8];
int[][] feldfarbe=new int[8][8];
int[] auswahl=new int[2];
int spieler=-1;
Button start=new Button("Neues Spiel");
boolean win=false;
public Dame (){
//Aufbau
setBackground(new Color(220,220,220));
setLayout(null);
start.setBounds(100,530,90,30);
cv.setBounds(10,10,400,400);
pan1.setBounds(10,10,420,420);
pan.setLayout(null);
pan1.setLayout(null);
pan.setBounds(50,50,442,470);
cv.setBackground(Color.lightGray);
pan1.setBackground(new Color(90,90,90));
pan.setBackground(new Color(170,170,170));
add(start);
add(pan);
pan.add(pan1);
pan1.add(cv);
lb.setText("Weiß ist am Zug!!!");
lb.setBounds(50,435,150,30);
lb.setForeground(Color.red);
pan.add(lb);
cv.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e0){
int x=(e0.getX()-10)/50;
int y=(e0.getY()-10)/50;
if(figur[x][y]==spieler&&win==false){
auswahl[0]=-1;
auswahl[1]=-1;
auswahl[0]=x;
auswahl[1]=y;
zeichBrett();
auswahlfeldMarkieren();
}
if(auswahl[0]!=-1&&auswahl[1]!=-1&&win==false&&figur[x][y]==0){
if((x)+1==auswahl[0]&&(y)-(1*spieler)==auswahl[1]){
figur[x][y]=spieler;
figur[auswahl[0]][auswahl[1]]=0;
zeichBrett();
spielerwechsen();
}
else if((x)-1==auswahl[0]&&(y)-(1*spieler)==auswahl[1]){
figur[x][y]=spieler;
figur[auswahl[0]][auswahl[1]]=0;
zeichBrett();
spielerwechsen();
}
if((x)+2==auswahl[0]&&(y)-(2*spieler)==auswahl[1]){
if(figur[(x)+1][(y)-(1*spieler)]==-1*spieler){
figur[x][y]=spieler;
figur[auswahl[0]][auswahl[1]]=0;
gegLösch(auswahl[0]-1);
zeichBrett();
spielerwechsen();
}
}
else if((x)-2==auswahl[0]&&(y)-(2*spieler)==auswahl[1]){
if(figur[(x)-1][(y)-(1*spieler)]==-1*spieler){
figur[x][y]=spieler;
figur[auswahl[0]][auswahl[1]]=0;
gegLösch(auswahl[0]+1);
zeichBrett();
spielerwechsen();
}
}
}
actionanzeige();
}
});
//Action bei drücken von Start
start.addActionListener(new ActionListener(){
public void actionPerformed (ActionEvent e){
spieler=-1; //Spieler weiß beginnt
actionanzeige(); // "Spieler weiß beginnt" wird angezeigt
win=false;
aufstellBegin(); //Aufstellung erstellen
zeichBrett(); //Aufstellung zeichnen
}
});
addWindowListener (new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void gegLösch(int x){//Überspringender Stein wird gelöscht
int y;
if(spieler==1){
y=1+auswahl[1];
}
else{
y=auswahl[1]-1;
}
figur[x][y]=0;
}
public void auswahlfeldMarkieren() {//Das ausgewählte Feld für den Zug wird markiert
g=cv.getGraphics();
g.setColor(Color.red);
g.fillRect(auswahl[0]*50+40,auswahl[1]*50+5,5,5);
}
public String abfragewin() {//Abfrage ob Spielende
String sieger;
for(int i=0;i<7;i++){
if(figur[i][7]==1){
sieger="schwarz";
return sieger;
}
else if(figur[i][0]==-1){
sieger="weiß";
return sieger;
}
}
sieger="weiter";
return sieger;
}
public void zeichBrett(){//Brett wird neu gezeichnet
g=cv.getGraphics();
for(int s=0;s<=7;s++){
for(int z=0;z<=7;z++){
if(s%2==0){
if(z%2!=0){
feldfarbe[s][z]=1;//1=Schwarz
g.setColor(Color.gray);
g.fillRect(s*50,z*50,50,50);
}
}
else{
if(z%2==0){
feldfarbe[s][z]=1;//1=Schwarz
g.setColor(Color.gray);
g.fillRect(s*50,z*50,50,50);
}
}
}
}
for(int s=0;s<8;s++){
for(int z=0;z<8;z++){
switch(figur[s][z]){
case 0:
break;
case 1:g.setColor(Color.DARK_GRAY);
g.fillOval(6+s*50,6+z*50,40,40);
break;
case -1:g.setColor(Color.white);
g.fillOval(6+s*50,6+z*50,40,40);
break;
}
}
}
}
public void aufstellBegin(){//Anfangsaufstellung wird erstellt
for(int s=0;s<8;s++){
for(int z=0;z<8;z++){
figur[z][s]=0;
switch(s){
case 0:case 2:case 6:
if(z%2==1){
if(s==0||s==1||s==2){
figur[z][s]=1;//Dark_gray
}
if(s==5||s==6||s==7){
figur[z][s]=-1;//white
}
}
break;
case 1:case 5:case 7:
if(z%2==0){
if(s==0||s==1||s==2){
figur[z][s]=1;//Dark_gray
}
if(s==5||s==6||s==7){
figur[z][s]=-1;//white
}
}
}
}
}
}
public static void main(String[] args) {
Dame brett= new Dame();
brett.setSize(542,600);
brett.setVisible(true);
try{Thread.sleep(50);}
catch(Exception e){}
brett.aufstellBegin();
brett.zeichBrett();
}
private void spielerwechsen() {
switch(spieler){
case -1:
spieler=1;
break;
case 1:
spieler=-1;
break;
}
}
public void actionanzeige(){//Spielerinfo wird angezeigt
if(abfragewin()!="weiter"){
win=true;
if(abfragewin()=="weiß"){
lb.setText("Weiß hat gewonnen");
}
else{
lb.setText("Schwarz hat gewonnen");
}
}
else{
if(spieler==-1){
lb.setText("Weiß ist am Zug!!!");
}
else{
lb.setText("Schwarz ist am Zug!!!");
}
}
}
}