import java.applet.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
/**
* Schiebung ist ein Spiel, bei dem 2 Spieler, mit jeweils unterschiedlich gefärbten Steinen, gegeneinander antreten und abwechselnd ihre eigenen Steine bewegen
* Die Steine können wie die Dame beim Schach bewegt werden und es können entweder 1 Stein oder 2 Steine bewegt werden.
* Sollen 2 Steine bewegt werden, dann müssen sie beide in die gleiche Richtung und um die gleiche Felderzahl verschoben bewegt werden.
* Gewonnen hat derjenige Spieler, der zuerst ein Quadrat aus seinen Steinen bilden kann.
* @author (Dennis Birke und Lisa Bayer)
* @version (2.9)
*/
public class SCHIEBUNG extends JApplet implements MouseListener, ActionListener // Das Applet wird Deklariert und mit einem MouseListener und einem ActionListener versehen
{
SCORE score; // score ist ein Referenzattribut zur Klasse Score, welches dazu dient den Spielstand, also die Anzahl der Siege der jeweiligen Spieler, anzuzeigen
FELD [][] feld = new FELD [8][8]; // Die Felder des Spielfelds setzen sich aus jeweils einzelnen Objekten der Klasse Feld zusammen, für die hier ein Array angelegt wird
FELD [] array = new FELD [4]; // ein weiterer Array für die Objekte der Klasse Feld wird angelegt. Er dient nur zur kurzweiligen Abspeicherung bestimmter Felder die für das Ziehen benötigt werden
int xpos,ypos,z,xplus,yplus; // Integer deren Verwendung noch erläutert wird
boolean gewonnen; // wird auf true gesetzt, wenn ein Spieler die Siegesbedingung erfüllt hat
TextField nameField;
Button move, start, neu; // diverse Buttons
CheckboxGroup radioGroup;
Checkbox radio1; // Radiobutton für das ziehen mit einem Spielstein
Checkbox radio2; // Radiobutton für das ziehen mit zwei Spielsteinen
public static Image red_stone = null;
public static Image black_stone = null;
public void init()
{
z = 0; // Zeigt an welcher Spieler am Zug ist
red_stone = getImage(getCodeBase(), "rot.png"); // eigens entworfene Spielsteine werden aus dem Ordnerpfad importiert; hier rot
black_stone = getImage(getCodeBase(), "schwarz.png"); // hier schwarz
score = new SCORE();
gewonnen = false;
setLayout(null); // es wrd kein bestimmtes Layout verwendet
nameField = new TextField("die grau eingefärbten Felder zeigen für das Ziehen mögliche Felder bzw Steine an",80);
nameField.setBounds(140,500,240,40);
move = new Button("bewegen"); //Button der für die Bestigung eines Spielzuges nötig ist
start = new Button("Spiel starten"); // Button der das Spiel Startet
neu = new Button("neues Spiel"); // Button für ein erneutes Spielen (erst möglich wenn ein Spieler gewonnen hat)
radioGroup = new CheckboxGroup();
radio1 = new Checkbox("Radio1", radioGroup,true); // Es wird zunächst davon ausgegangen dass der Spieler einen Stein bewegen möchte
radio2 = new Checkbox("Radio2", radioGroup,false);
move.setBounds(475,180,100,30); // Positionen und Maße der Buttons werden festgelegt
start.setBounds(210,450,100,30);
neu.setBounds(600,180,100,30);
radio1.setBounds(450,120,10,10);
radio2.setBounds(450,150,10,10);
/* Buttons und Textfeld werden letzlich zur Verfügung gestellt */
add(move);
add(start);
add(neu);
add(radio1);
add(radio2);
add(nameField);
/* diverse Listener werden hinzugefügt*/
move.addActionListener(this);
start.addActionListener(this);
neu.addActionListener(this);
addMouseListener(this);
/* nur für die Verwendung in Browsern nötig*/
JRootPane rootPane = this.getRootPane();
rootPane.putClientProperty("defeatSystemEventQueueCheck", Boolean.TRUE);
radio1.addActionListener(this);