hallo leutz,
wir haben es geschafft eine Offlinevariante des Brettspiels Mühle zu proggen...nun sollen wir es noch hier und da verfeinern und ein Onlinespiel (Server-Client) basteln...ich denke mal das bekommen wir hin...
unsere Problem ist derzeit aber, das Spiel neu zu starten ,also innerhalb des Applets.
Was wir haben ist zwar ein Spielneustart ( neues Applet) aber kein Spielabbruch des alten.Ich hoffe das versteht jemand das Problem...wir sind keine Javameister, angehende Lehrer, das wird wohl unsere letztes Projekt sein und danach , so Gott will, unterrichten wir Struktogramme und eventuell lassen wir mal nen Progrämmchen proggen zur Berechnung der Fakultät....
man wird wohl den Spielzustand auf Null oder Anfang setzen müssen...die Methode initialisieren sorgt ja dafür...aber halt nur für den start eines neuen Spiels und nicht zum start im Spiel ... !!!????
hier der Code der Klasse Mühle:
wir haben es geschafft eine Offlinevariante des Brettspiels Mühle zu proggen...nun sollen wir es noch hier und da verfeinern und ein Onlinespiel (Server-Client) basteln...ich denke mal das bekommen wir hin...
unsere Problem ist derzeit aber, das Spiel neu zu starten ,also innerhalb des Applets.
Was wir haben ist zwar ein Spielneustart ( neues Applet) aber kein Spielabbruch des alten.Ich hoffe das versteht jemand das Problem...wir sind keine Javameister, angehende Lehrer, das wird wohl unsere letztes Projekt sein und danach , so Gott will, unterrichten wir Struktogramme und eventuell lassen wir mal nen Progrämmchen proggen zur Berechnung der Fakultät....
man wird wohl den Spielzustand auf Null oder Anfang setzen müssen...die Methode initialisieren sorgt ja dafür...aber halt nur für den start eines neuen Spiels und nicht zum start im Spiel ... !!!????
hier der Code der Klasse Mühle:
Java:
import java.awt.BorderLayout;
import java.awt.GridLayout;
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;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
public class Mühle extends MouseAdapter implements ActionListener {
int Pos1;
int Pos2;
int AktSpieler;
String[] SpielZustand;
int[] SteineAufBrett;
int[] SteineImPool;
String Regel;
boolean SpielBeendet;
boolean SpielGestartet;
boolean weiter;
static JFrame f;
static Spielbrett SB;
static Steinpool SP;
static JPanel pnlMain;
static JPanel pnlLinks;
static JPanel pnlRechts;
static JLabel lPlayer;
static JLabel lAktion;
static JMenuBar MB;
static JMenu MSpiel;
static JMenu MOptionen;
static JMenuItem MINeu;
static JMenuItem MIExit;
public Mühle(){
while(true){
initialisieren();
berechneZustand();
while(SpielBeendet==false){
if(weiter==true){
berechneZustand();
RegelnPrüfen();
wechsleSpieler();
weiter=false;
}
f.repaint();
f.pack();
}
if(SpielBeendet==true)break;
}
}
public void initialisieren(){
Pos1=26;
Pos2=26;
Regel="keine";
SpielGestartet=true;
weiter=false;
SpielZustand=new String[3];
SteineAufBrett=new int[3];
SteineImPool=new int[3];
SB=new Spielbrett(300,300);
SP=new Steinpool(300,100);
lPlayer=new JLabel("",0);
lAktion=new JLabel("",0);
MB=new JMenuBar();
MSpiel=new JMenu("Spiel");
MOptionen=new JMenu("Optionen");
MINeu=new JMenuItem("Neues Spiel");
MIExit=new JMenuItem("Spiel Beenden");
MSpiel.add(MINeu);
MSpiel.add(MIExit);
MB.add(MSpiel);
MB.add(MOptionen);
MIExit.addActionListener(this);
MINeu.addActionListener(this);
Random rnd=new Random();
AktSpieler=rnd.nextInt(2)+1;
if(AktSpieler==1){
SpielZustand[1]="SteineSetzen";
SpielZustand[2]="SteineSetzen";
SpielBeendet=false;
lPlayer.setText("Spieler 1 ist dran.");
SteineAufBrett[1]=0;
SteineImPool[1]=9;
SteineAufBrett[2]=0;
SteineImPool[2]=9;
SB.Spieler=1;
lAktion.setText(SpielZustand[1]);
}
else{
SpielZustand[2]="SteineSetzen";
SpielZustand[1]="SteineSetzen";
SpielBeendet=false;
lPlayer.setText("Spieler 2 ist dran.");
SteineAufBrett[2]=0;
SteineImPool[2]=9;
SteineAufBrett[1]=0;
SteineImPool[1]=9;
SB.Spieler=2;
lAktion.setText(SpielZustand[2]);
}
f=new JFrame();
f.addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent arg0) {
System.exit(0);
}
});
pnlMain=new JPanel();
pnlLinks=new JPanel();
pnlRechts=new JPanel();
pnlMain.setLayout(new BorderLayout());
pnlLinks.setLayout(new BorderLayout());
pnlRechts.setLayout(new GridLayout(2,0));
SB.addMouseListener(this);
pnlLinks.add("North",SB);
pnlLinks.add("South",SP);
pnlRechts.add(lPlayer);
pnlRechts.add(lAktion);
pnlMain.add("Center",pnlLinks);
pnlMain.add("East",pnlRechts);
pnlMain.add("North",MB);
f.add(pnlMain);
f.pack();
f.setVisible(true);
}
public void berechneZustand(){
if(SteineImPool[AktSpieler]==0){
if(SteineAufBrett[AktSpieler]>3){
SpielZustand[AktSpieler]="SteineSchieben";
if(!SB.kannNochBewegen(AktSpieler)){
SpielZustand[AktSpieler]="verloren";
}
}
else if(SteineAufBrett[AktSpieler]==3){
SpielZustand[AktSpieler]="SteineSpringen";
}
else{
SpielZustand[AktSpieler]="verloren";
}
}
else if(SteineImPool[AktSpieler]>0){
SpielZustand[AktSpieler]="SteineSetzen";
}
if(SteineImPool[AndererSpieler()]==0){
if(SteineAufBrett[AndererSpieler()]>3){
SpielZustand[AndererSpieler()]="SteineSchieben";
if(!SB.kannNochBewegen(AndererSpieler())){
SpielZustand[AndererSpieler()]="verloren";
}
}
else if(SteineAufBrett[AndererSpieler()]==3){
SpielZustand[AndererSpieler()]="SteineSpringen";
}
else{
SpielZustand[AndererSpieler()]="verloren";
}
}
else if(SteineImPool[AndererSpieler()]>0){
SpielZustand[AndererSpieler()]="SteineSetzen";
}
}
public void RegelnPrüfen(){
}
public void wechsleSpieler(){
if(AktSpieler==1){
AktSpieler=2;
SB.Spieler=2;
lPlayer.setText("Schwarz ist am Zug");
lAktion.setText(SpielZustand[2]);
}
else{
AktSpieler=1;
SB.Spieler=1;
lPlayer.setText("Weiss ist am Zug.");
lAktion.setText(SpielZustand[1]);
}
}
public int andererSpieler(){
if(AktSpieler==1)return 2;
else return 1;
}
public static void main(String[] args) {
@SuppressWarnings("unused")
Mühle m=new Mühle();
}
@Override
public void mouseClicked(MouseEvent m) {
if(SpielGestartet){
if(SpielZustand[AktSpieler].equals("SteineSetzen")){
if(SB.getBelegung(SB.AufWelcherPos(m.getX(), m.getY())).equals("frei")){
SB.SteinSetzen(SB.AufWelcherPos(m.getX(), m.getY()));
if(AktSpieler==1)SP.entnehme("weiß");
else SP.entnehme("schwarz");
SteineAufBrett[AktSpieler]+=1;
SteineImPool[AktSpieler]-=1;
if(SB.mühleGebildet(AktSpieler,SB.AufWelcherPos(m.getX(), m.getY()))){
Regel="MühleGebaut";
}
else weiter=true;
}
}
else if(SpielZustand[AktSpieler].equals("SteineSchieben")){
String Farbe="weiß";
if(AktSpieler==2)Farbe="schwarz";
if(Pos1>23){
if(SB.getBelegung(SB.AufWelcherPos(m.getX(), m.getY())).equals(Farbe) && SB.kannSteinBewegen(SB.AufWelcherPos(m.getX(), m.getY()), AktSpieler)){
Pos1=SB.AufWelcherPos(m.getX(), m.getY());
}
}
else if(Pos2>23){
if(!SB.getBelegung(SB.AufWelcherPos(m.getX(), m.getY())).equals("frei")){
}
if(!SB.istNachbarVon(Pos1,Pos2)){
}
if(SB.getBelegung(SB.AufWelcherPos(m.getX(), m.getY())).equals("frei") && SB.istNachbarVon(Pos1,SB.AufWelcherPos(m.getX(), m.getY()))){
Pos2=SB.AufWelcherPos(m.getX(), m.getY());
}
}
if(Pos1<=23&Pos2<=23){
SB.bewege(Pos1,Pos2);
if(SB.mühleGebildet(AktSpieler,Pos2)){
Regel="MühleGebaut";
}
else weiter=true;
Pos1=26;
Pos2=26;
}
}
else if(SpielZustand[AktSpieler].equals("SteineSpringen")){
String Farbe="weiß";
if(AktSpieler==2)Farbe="schwarz";
if(Pos1>23){
if(SB.getBelegung(SB.AufWelcherPos(m.getX(), m.getY())).equals(Farbe)){
Pos1=SB.AufWelcherPos(m.getX(), m.getY());
}
}
else if(Pos2>23){
if(!SB.getBelegung(SB.AufWelcherPos(m.getX(), m.getY())).equals("frei")){
}
if(SB.getBelegung(SB.AufWelcherPos(m.getX(), m.getY())).equals("frei")){
Pos2=SB.AufWelcherPos(m.getX(), m.getY());
}
}
if(Pos1<=23&Pos2<=23){
SB.bewege(Pos1,Pos2);
if(SB.mühleGebildet(AktSpieler,Pos2)){
Regel="MühleGebaut";
}
else weiter=true;
Pos1=26;
Pos2=26;
}
}
else if(SpielZustand[AktSpieler].equals("verloren")){
}
if(Regel.equals("MühleGebaut")){
SpielZustand[AktSpieler]="";
String Farbe="";
if(AktSpieler==1)Farbe="schwarz";
else Farbe="weiß";
lAktion.setText("MÜHLE!!! Lösche einen Stein!");
f.repaint();
f.pack();
if(SB.getBelegung(SB.AufWelcherPos(m.getX(), m.getY())).equals(Farbe)&& !SB.mühleGebildet(andererSpieler(), SB.AufWelcherPos(m.getX(), m.getY()))){
SB.SteinLöschen(SB.AufWelcherPos(m.getX(), m.getY()));
SteineAufBrett[andererSpieler()]-=1;
Regel="";
weiter=true;
berechneZustand();
}
else if(SB.getBelegung(SB.AufWelcherPos(m.getX(), m.getY())).equals(Farbe)&& SB.alleInMühle(andererSpieler())){
SB.SteinLöschen(SB.AufWelcherPos(m.getX(), m.getY()));
SteineAufBrett[andererSpieler()]-=1;
Regel="";
weiter=true;
berechneZustand();
}
}
}
if(Regel.equals("verloren")){
}
SB.repaint();
SP.repaint();
}
public int AndererSpieler(){
if(AktSpieler==1)return 2;
return 1;
}
@Override
public void mousePressed(MouseEvent arg0) {}
@Override
public void mouseReleased(MouseEvent arg0) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
@Override
public void actionPerformed(ActionEvent a) {
Object obj=a.getSource();
if(obj==MIExit){
System.exit(0);
}
if(obj==MINeu){
initialisieren(); //hier wird wohl der Hund begraben sein
}
}
}