shaluniska
Grünschnabel
Hallo erstmal !
Ich hab ein Problem... Ich habe ne Aufgabe, Damenspiel zu programmieren. Alles läuft zwar gut, aber wenn ich Computer gegen Computer spielen lasse, dann sieht man nur das Ergebniss.
Ich hab das nicht mit sleeps hingekriegt. Sleep(1000). es geht... aber -> ich sehe trozdem nicht wie sich da was bewegt. Wieder nur das Ergebniss.
Mit den Threads hab ich auch versucht. Klappts nicht. Programmiere in Java nur eine Woche. Bis dahin in Visual Basic. Da gibts es ne schöne:
"Doevents" anweisung, was ich eigentlich brauche.
Ich bitte um Hilfe, da ich schon mehr als 48St. nach einer Lösung suche... ((
Hab nur 3 klassen:
Danke im Voraus !
Mfg Alex
Ich hab ein Problem... Ich habe ne Aufgabe, Damenspiel zu programmieren. Alles läuft zwar gut, aber wenn ich Computer gegen Computer spielen lasse, dann sieht man nur das Ergebniss.
Ich hab das nicht mit sleeps hingekriegt. Sleep(1000). es geht... aber -> ich sehe trozdem nicht wie sich da was bewegt. Wieder nur das Ergebniss.
Mit den Threads hab ich auch versucht. Klappts nicht. Programmiere in Java nur eine Woche. Bis dahin in Visual Basic. Da gibts es ne schöne:
"Doevents" anweisung, was ich eigentlich brauche.
Ich bitte um Hilfe, da ich schon mehr als 48St. nach einer Lösung suche... ((
Hab nur 3 klassen:
Code:
import java.awt.*;
import java.awt.event.ActionEvent;
import javax.swing.*;
import javax.swing.border.*;
import java.util.Scanner;
import java.awt.event.*;
import javax.swing.JOptionPane;
public class Buttontester
{
static boolean move=false;
static int a, b,x,y;
static boolean geklickt=false;
static boolean erstesmal=true;
static int Anzahlrot=12;
static int Anzahlgelb=12;
static JButton[][] myBtns = new JButton[8][8];
static JFrame frm = new JFrame("Damenspiel");
static JLabel l = new JLabel();
static JPanel pane = new JPanel();
static JButton btn = new JButton();
static String spieler1="";
static String spieler2="";
static String computer1="";
static String computer2="";
static boolean zwang=false;
static Icon damerot = new ImageIcon("damerot.gif");
static Icon rot = new ImageIcon("rot.gif");
static Icon damegelb = new ImageIcon("damegelb.gif");
static Icon gelb = new ImageIcon("gelb.gif");
static void ergebnis(){
if (Anzahlgelb==0) JOptionPane.showMessageDialog(null, "ROT GEWINNT !", "Damenspiel", 1);
else JOptionPane.showMessageDialog(null, "GELB GEWINNT !", "Damenspiel", 1);
}
static void waechseln(){
if (spieler1=="Ja") spieler1="Nein";
else if (spieler1=="Nein") spieler1="Ja";
if (spieler2=="Ja") spieler2="Nein";
else if (spieler2=="Nein") spieler2="Ja";
if (computer1=="Ja") computer1="Nein";
else if (computer1=="Nein"){
computer1="Ja";
Computer.moegliche_schlaege();
}
if (computer2=="Ja") computer2="Nein";
else if (computer2=="Nein"){
computer2="Ja";
Computer.moegliche_schlaege();
}
move=false;
}
static boolean richtung(){
if (myBtns[x][y].getIcon()==damerot || myBtns[x][y].getIcon()==damegelb){
if (Spieler.pruefen()==false) move=false;
}else{
if (myBtns[x][y].getIcon()==rot){
if (b>x){ if (Spieler.pruefen()==false)move=false;
}else move=false;
}else if (myBtns[x][y].getIcon()==gelb){
if (x>b){
if (Spieler.pruefen()==false)move=false;
}else move=false;
}
}
return true;
}
static void bewegen(){
if (move){
if (((spieler1=="Ja" || spieler2=="Ja"))){
if (Spieler.zwangfalse==true){
if (zwang==false){
int altex=a, altey=b, altea=x,alteb=y;
Computer.moegliche_schlaege();
if (zwang){
if (Computer.r1==b && Computer.r2==a && Spieler.pruefen()){
x=altex;y=altey;
move=true;
zwang=false;
}
}
x=altea;y=alteb;
}
}
Spieler.zwangfalse=true;
}
if (zwang==false && (spieler1!="Ja" || spieler2!="Ja")){
if (myBtns[x][y].getIcon()!=null )
myBtns[b][a].setIcon(myBtns[x][y].getIcon());
if (myBtns[b][a].getIcon()== rot && b==7 && myBtns[x][y].getIcon() != damerot)
myBtns[b][a].setIcon(damerot);
else if( myBtns[b][a].getIcon()== gelb && b==0 && myBtns[x][y].getIcon() != damegelb)
myBtns[b][a].setIcon(damegelb);
if (((x%2)+y)%2 == 0)
myBtns[x][y].setIcon(null);
geklickt=false;
frm.setFocusable(true);
}else if (geklickt==false && zwang) JOptionPane.showMessageDialog(null, "Zwangsprung wurde nicht beachtet !", "Damenspiel", 2);
}
if (Anzahlgelb!=0 && Anzahlrot!=0){
if (geklickt==false){
if ((spieler1=="Ja" || spieler2=="Ja") && (zwang==false && geklickt==false && move==true )&& Anzahlgelb>0 && Anzahlrot >0){
waechseln();
move=false;
}
}
}else ergebnis();
}
static void click(){
if ((spieler1=="Ja" && (btn.getIcon()==rot || btn.getIcon()==damerot)) || (spieler2=="Ja" && (btn.getIcon()==gelb || btn.getIcon()==damegelb)) || (btn.getIcon()==null && ((spieler1=="Ja" && (myBtns[x][y].getIcon()==rot ||myBtns[x][y].getIcon()==damerot)) || (spieler2=="Ja" && (myBtns[x][y].getIcon()==gelb || myBtns[x][y].getIcon()==damegelb))))){
if (((b%2)+a)%2 == 0 ){
//wenn es diagonal geht...
if ( Math.abs(x-b)==Math.abs(y-a) ){
// Wenn das neu feld gleich null und das vorherrige geklick wurde
if (btn.getIcon()==null && geklickt){
if (((myBtns[x][y].getIcon()==rot || myBtns[x][y].getIcon()==gelb || myBtns[x][y].getIcon()==damegelb || myBtns[x][y].getIcon()==damerot))){
move=true;
// Züruck gehen verbieten ausser der Dame
if (myBtns[x][y].getIcon() == damegelb || myBtns[x][y].getIcon() == damerot){
if (Spieler.pruefen()==false) move =false;
}else richtung();
geklickt=false;
}
}else{
if (btn.getIcon()!=null)
btn.setBorder( new LineBorder(Color.green,3, true));
geklickt=true;
}
//-else hat gefehlt!
}else {
//neu damit keine Schwarze Felder angeklickt werden und normale schon...
if (btn.getIcon()!=null)
btn.setBorder( new LineBorder(Color.green,3, true));
geklickt=true;
}
}else{
if (btn.getIcon()!=null)
btn.setBorder( new LineBorder(Color.green,3, true));
geklickt=true;
}
btn.setFocusable(false);
bewegen();
}else{
if (btn.getIcon()!=null)
if (spieler1=="Ja") JOptionPane.showMessageDialog(null, "Spieler 1 ist jetzt dran !", "Damenspiel", 1);
else if (spieler2=="Ja") JOptionPane.showMessageDialog(null, "Spieler 2 ist jetzt dran !", "Damenspiel", 1);
else if (computer1=="Ja") JOptionPane.showMessageDialog(null, "Computer 2 ist jetzt dran !", "Damenspiel", 1);
else if (computer2=="Ja") JOptionPane.showMessageDialog(null, "Computer 2 ist jetzt dran !", "Damenspiel", 1);
}
}
//Spiel neu laden
static void spiel_neu_laden(){
Anzahlgelb=12;
Anzahlrot=12;
zwang=false;
l.setVisible(false);
for (int indy =0; indy< 8; indy++)
for (int indx = 0; indx < 8; indx++)
{
if (erstesmal){
myBtns[indy][indx] = new JButton();
myBtns[indy][indx].setBounds(20, 20, 90, 90);
}
if (((indy%2)+indx)%2 == 0){
myBtns[indy][indx].setBackground(Color.black);
if (indy <3) myBtns[indy][indx].setIcon(rot);
else if (indy >4) myBtns[indy][indx].setIcon(gelb);
else myBtns[indy][indx].setIcon(null);
} else myBtns[indy][indx].setBackground(Color.gray );
myBtns[indy][indx].setFocusable(false);
// nur beim Ersten Mal werden die Buttons hinzugefügt und mit den weiteren Eigenschaften gesetzt.
if (erstesmal){
myBtns[indy][indx].setName(Integer.toString(indx+1)+" "+Integer.toString(indy+1));
myBtns[indy][indx].setBorder( new LineBorder(myBtns[indy][indx].getBackground(),3, true) );
myBtns[indy][indx].addMouseListener
(
new MouseAdapter(){
public void mouseClicked( MouseEvent e ) {
if ( e.getClickCount() > 1 )
myBtns[5][3].setIcon(damegelb);
}
public void mousePressed( MouseEvent e ) {
btn = (JButton)e.getSource();
l.setBackground(btn.getBackground());
btn.setEnabled(false);
btn.setBackground(l.getBackground());
btn.setEnabled(true);
myBtns[b][a].setBorder( new LineBorder(myBtns[b][a].getBackground(),3, true) );
x=b;
y=a;
Scanner scanner = new Scanner(btn.getName());
a=scanner.nextInt()-1;
b=scanner.nextInt()-1;
// Schwarzes feld?
click();
}
}
);
}
if (erstesmal)
pane.add(myBtns[indy][indx]);
}
if (erstesmal){
pane.setBackground(Color.gray);
frm.getContentPane().add(pane);
frm.setSize(700, 700);
//frm.pack();
}
erstesmal=false;
if (computer1=="Ja" || computer2=="Ja"){
System.out.println("he");
Computer.moegliche_schlaege();
}
}
static void frame_erstellen()
{
GridLayout gl = new GridLayout(0, 8);
pane.setLayout(gl);
frm.addKeyListener(new KeyListener()
{
public void keyTyped( KeyEvent e ) {}
public void keyReleased( KeyEvent e ) {}
public void keyPressed( KeyEvent e ) {
// if(e.getKeyCode()==32)waechseln();
}
}
);
// Spielerauswahl - Form erstellen
final JFrame sp_ausw = new JFrame("Spieler - Auswahl");
sp_ausw.setDefaultCloseOperation(sp_ausw.EXIT_ON_CLOSE);
GridBagConstraints constraints =
new GridBagConstraints();
constraints.gridwidth=3;
sp_ausw.setLayout(new GridBagLayout());
Component c;
final JRadioButton rb1 = new JRadioButton();
final JRadioButton rb2 = new JRadioButton();
final JRadioButton rb3 = new JRadioButton();
final JRadioButton rb4 = new JRadioButton();
ButtonGroup gr = new ButtonGroup();
gr.add(rb1);
gr.add(rb3);
ButtonGroup gr2 = new ButtonGroup();
gr2.add(rb2);
gr2.add(rb4);
constraints.gridwidth = GridBagConstraints.RELATIVE;
constraints.insets = new Insets(-90, -130, -5, 0);
constraints.anchor = GridBagConstraints.WEST;
rb1.setSelected(true);
sp_ausw.add(rb1, constraints);
constraints.fill = GridBagConstraints.REMAINDER;
constraints.insets = new Insets(-85, -105, 0, 5);
TextField text1 = new TextField("Spieler1");
sp_ausw.add(text1, constraints);
constraints.gridwidth = GridBagConstraints.RELATIVE;
constraints.insets = new Insets(-95,0, -10,0);
constraints.fill = GridBagConstraints.RELATIVE;
rb2.setSelected(true);
sp_ausw.add(rb2, constraints);
constraints.gridwidth = GridBagConstraints.RELATIVE;
constraints.fill = GridBagConstraints.RELATIVE;
constraints.insets = new Insets(-85, 5, 0, 5);
TextField text2 = new TextField("Spieler2");
sp_ausw.add(text2, constraints);
constraints.gridwidth = GridBagConstraints.RELATIVE;
constraints.anchor = GridBagConstraints.WEST;
constraints.insets = new Insets(-35, -242, -20, 5);
sp_ausw.add(rb3,constraints);
constraints.fill = GridBagConstraints.RELATIVE;
constraints.insets = new Insets(-17, -217, 0, 5);
c = new Button("Computer1 ");
sp_ausw.add(c, constraints);
constraints.anchor = GridBagConstraints.WEST;
constraints.insets = new Insets(-35, -110, -20, 5);
sp_ausw.add(rb4,constraints);
constraints.gridwidth = GridBagConstraints.RELATIVE;
constraints.fill = GridBagConstraints.RELATIVE;
constraints.insets = new Insets(-17, -85, 0, 5);
c = new Button("Computer2 ");
sp_ausw.add(c, constraints);
constraints.fill = GridBagConstraints.RELATIVE;
constraints.insets = new Insets(70, -238, 0, 5);
c = new JButton("Spiel starten");
c.addMouseListener
(
new MouseAdapter(){
public void mouseClicked( MouseEvent e ) {
boolean select =false;
sp_ausw.setAlwaysOnTop(false);
if (rb1.isSelected()){
if (select) spieler1="Nein";
else spieler1="Ja";
select=true;
}else spieler1="";
if (rb3.isSelected()){
if (select)computer1="Nein";
else computer1="Ja";
select=true;
}else computer1="";
if (rb2.isSelected()){
if (select) spieler2="Nein";
else spieler2="Ja";
select=true;
}else spieler2="";
if (rb4.isSelected()){
if (select) computer2="Nein";
else computer2="Ja";
select=true;
} else computer2="";
sp_ausw.setVisible(false);
spiel_neu_laden();
}
}
);
sp_ausw.add(c, constraints);
constraints.fill = GridBagConstraints.RELATIVE;
constraints.insets = new Insets(70, -108, 0, 5);
c = new JButton("Abbrechen");
sp_ausw.add(c, constraints);
final Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
sp_ausw.setAlwaysOnTop(true);
sp_ausw.setSize(300, 200);
sp_ausw.setVisible(false);
sp_ausw.setResizable(false);
// Menu erstellen
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu( "Spiel" );
JMenu fileMenu2 = new JMenu("Einstellungen");
menuBar.add( fileMenu );
menuBar.add(fileMenu2);
frm.setJMenuBar(menuBar);
Action exitAction1 = new AbstractAction( "Neues Spiel" ) {
public void actionPerformed( ActionEvent e ) {
spiel_neu_laden();
}
};
Action exitAction = new AbstractAction( "Beenden" ) {
public void actionPerformed( ActionEvent e ) {
System.exit( 0 );
}
};
Action exitAction3 = new AbstractAction( "Spieler Auswahl" ) {
public void actionPerformed( ActionEvent e ) {
sp_ausw.setLocation((int)(screen.getWidth()/2-sp_ausw.getWidth()/2),(int)(screen.getHeight()/2-sp_ausw.getHeight()/2));
sp_ausw.setVisible(true);
}
};
fileMenu.add(exitAction3);
fileMenu.addSeparator();
fileMenu.add(exitAction1);
fileMenu.add(exitAction);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setSize(650, 650);
frm.setLocation((int) screen.getWidth()/2-(frm.getWidth()/2),(int)(screen.getHeight()/2-frm.getHeight()/2));
frm.setVisible(true);
}
public static void main(String[] args)
{
frame_erstellen();
}
}
****************************************
import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Timer;
import java.util.TimerTask;
public class Computer extends Buttontester{
static boolean gefunden=false,ergebnis=false;
static int r1=x,r2=y,anz;
static String[] speichern=new String [100];
static boolean schritte_suchen=false;
static boolean gefahr =false;
static boolean schritt=false;
static int zaehler=0;
static boolean gegner_finden(){
int vertikal=0,horizontal=0,f=0,g=0;
if (schritte_suchen==false) zaehler=0;
else schritt=false;
if (myBtns[x][y].getIcon()!=damegelb && myBtns[x][y].getIcon()!=damerot){
for(f=x-1;f<=x+1;f++)
for(g=y-1; g<=y+1;g++){
if (f>=0 && f<=7 && g>=0 && g<=7 && ((f%2)+g)%2 == 0){
if (((myBtns[f][g].getIcon()==gelb || myBtns[f][g].getIcon()==damegelb) &&(myBtns[x][y].getIcon()==rot || myBtns[x][y].getIcon()==damerot)) || ((myBtns[f][g].getIcon()==rot || myBtns[f][g].getIcon()==damerot)&& (myBtns[x][y].getIcon()==gelb || myBtns[x][y].getIcon()==damegelb))){
//Wenn was zum Schlagen gesucht wird, wird weiter gemacht...
if (schritte_suchen==false){
if ( ((myBtns[f][g].getIcon()==gelb || myBtns[f][g].getIcon()==damegelb) && f>x) ||((myBtns[f][g].getIcon()==damerot || myBtns[f][g].getIcon()==rot) && f<x)){
if(x<f) vertikal=1; //unten
else vertikal=-1; // oben
if (y<g) horizontal=1; //rechts
else horizontal=-1; //links
if ((f+vertikal)>=0 && (f+vertikal)<=7 && (g+horizontal)>=0 && (g+horizontal)<=7 && ((f+vertikal%2)+(g+horizontal))%2 == 0){
if (myBtns[f+vertikal][g+horizontal].getIcon()==null){
if (computer1=="Ja" || computer2=="Ja"){
speichern[zaehler++]=Integer.toString(f+vertikal)+" "+Integer.toString(g+horizontal);
}else return true;
}
}
}
}
// Wenn das Feld leer ist und nach weiteren Schritten gesucht wird...
}else{
if (schritte_suchen && (myBtns[f][g].getIcon()==null)){
// System.out.println("x="+x+ " y="+y+" f="+f+" g="+g);
if ( (myBtns[x][y].getIcon()==gelb && f<x) ||(myBtns[x][y].getIcon()==rot && f>x)){
speichern[zaehler]=Integer.toString(f)+" "+Integer.toString(g)+" "+
Integer.toString(x)+" "+Integer.toString(y);
schritt=true;
// Prüfen auf Gefahr... - > Vor dir....
if(x<f) vertikal=1; //unten
else vertikal=-1; // oben
if (y<g) horizontal=1; //rechts
else horizontal=-1; //links
if ((f+vertikal)>=0 && (f+vertikal)<=7 && (g+horizontal)>=0 && (g+horizontal)<=7 && ((f+vertikal%2)+(g+horizontal))%2 == 0)
if (((myBtns[f+vertikal][g+horizontal].getIcon()==gelb || myBtns[f+vertikal][g+horizontal].getIcon()==damegelb) &&(myBtns[x][y].getIcon()==rot || myBtns[x][y].getIcon()==damerot)) || ((myBtns[f+vertikal][g+horizontal].getIcon()==rot || myBtns[f+vertikal][g+horizontal].getIcon()==damerot)&& (myBtns[x][y].getIcon()==gelb || myBtns[x][y].getIcon()==damegelb)))
speichern[zaehler]=speichern[zaehler]+" g";
// Prüfen von der anderen Seite...
if (horizontal==1) horizontal=-1;
else horizontal=1;
if ((f+vertikal)>=0 && (f+vertikal)<=7 && (g+horizontal)>=0 && (g+horizontal)<=7 && ((f+vertikal%2)+(g+horizontal))%2 == 0)
if (((myBtns[f+vertikal][g+horizontal].getIcon()==gelb || myBtns[f+vertikal][g+horizontal].getIcon()==damegelb) &&(myBtns[x][y].getIcon()==rot || myBtns[x][y].getIcon()==damerot)) || ((myBtns[f+vertikal][g+horizontal].getIcon()==rot || myBtns[f+vertikal][g+horizontal].getIcon()==damerot)&& (myBtns[x][y].getIcon()==gelb || myBtns[x][y].getIcon()==damegelb))){
if (horizontal==1) horizontal=-1;
else horizontal=1;
if (vertikal==1) vertikal=-1;
else vertikal=1;
if ((f+vertikal)>=0 && (f+vertikal)<=7 && (g+horizontal)>=0 && (g+horizontal)<=7 && ((f+vertikal%2)+(g+horizontal))%2 == 0)
if (myBtns[f+vertikal][g+horizontal].getIcon()==null)
speichern[zaehler]=speichern[zaehler]+" g";
}
zaehler++;
}
}
}
}
}
if (computer1=="Ja" || computer2=="Ja"){
if (zaehler>0 && schritte_suchen==false) return entscheiden();
else if (schritt && schritte_suchen==true) return true;
else return false;
}else return false;
//Wenn es die Dame ist...
//Funktioniert alles wunderbar
}else{
f=-1;
g=-1;
vertikal=-1;
horizontal=-1;
gefunden=true;
int anzahl=0;
if (schritte_suchen==false)
zaehler=0;
anzahl=0;
while (gefunden){
if (x+f>=0 && x+f<=7 && y+g>=0 && y+g<=7){
if (myBtns[x+f][y+g].getIcon()!=null && ((myBtns[x+f][y+g].getIcon()!= gelb && myBtns[x+f][y+g].getIcon()!= damegelb && myBtns[x][y].getIcon()==damegelb)||(myBtns[x+f][y+g].getIcon()!= damerot && myBtns[x+f][y+g].getIcon()!= rot && myBtns[x][y].getIcon()==damerot))){
anzahl++;
if (x+f+vertikal>=0 && x+f+vertikal<=7 && y+g+horizontal>=0 && y+g+horizontal<=7){
if (myBtns[x+f+vertikal][y+g+horizontal].getIcon()==null){
if (schritte_suchen==false){
if (anzahl==1){
if (spieler1=="Ja" || spieler2=="Ja") return true;
else speichern[zaehler++]=Integer.toString(f+x+vertikal)+" "+Integer.toString(g+y+horizontal);
}
}
}
}
}else{
if (myBtns[x+f][y+g].getIcon()==null){
if (schritte_suchen){
if (anzahl==0){
speichern[zaehler++]=Integer.toString(f+x)+" "+Integer.toString(g+y)+" "+Integer.toString(x)+" "+Integer.toString(y);
}
}
}
}
}else{
anzahl=0;
f=0;
g=0;
if (horizontal==-1 && vertikal==-1){
horizontal=1;
}else if (horizontal==1 && vertikal==-1){
vertikal=1;
}else if(horizontal ==1 && vertikal==1){
horizontal=-1;
}else if (horizontal==-1) gefunden = false;
}
f=f+vertikal;
g=g+horizontal;
}
if (zaehler==0) return false;
else if (schritte_suchen==false)
return entscheiden();
else return true;
}
}
static void moegliche_schlaege(){
ergebnis=true;
boolean schlagen=false;
boolean weiter=true;
schritte_suchen=false;
for (int indy =0; indy< 8 && weiter; indy++)
for (int indx = 0; indx < 8 && weiter; indx++)
{
if ((computer2=="Ja" && (myBtns[indy][indx].getIcon()==gelb || myBtns[indy][indx].getIcon()==damegelb)) || (computer1=="Ja" && (myBtns[indy][indx].getIcon()==rot || myBtns[indy][indx].getIcon()==damerot))|| (spieler1=="Ja" && (myBtns[indy][indx].getIcon()==rot || myBtns[indy][indx].getIcon()==damerot))||(spieler2=="Ja" && (myBtns[indy][indx].getIcon()==gelb || myBtns[indy][indx].getIcon()==damegelb))){
x=indy;
y=indx;
// Den ersten gefundenen gegner Schlagen !:) so weit es geht...
if (gegner_finden()){
schlagen=true;
ergebnis=true;
if ((spieler1=="Ja" || spieler2=="Ja")){
if (schritte_suchen==false)
zwang=true;
weiter=false;
}else{
while (ergebnis)
{
b=r1;
a=r2;
// **************************************
// **************************************
// **************************************
if ( (myBtns[x][y].getIcon()==rot && b>x) ||(myBtns[x][y].getIcon()==gelb && x>b) || (myBtns[x][y].getIcon()==damegelb || myBtns[x][y].getIcon()==damerot) ){
if (move=richtung()){
bewegen();
//Hier würde sehr gerne doevents haben :((((( HILFE !!
}
weiter=false;
}else ergebnis =false;
x=b;
y=a;
ergebnis=gegner_finden();
}
}
}
}
}
if (schlagen==false &&(computer1=="Ja" || computer2=="Ja")){ // wenn nichts zum Schalgen gibts
schritte_suchen=true;
for (int indy =0; indy< 8; indy++)
for (int indx = 0; indx < 8; indx++)
{
if ((computer2=="Ja" && (myBtns[indy][indx].getIcon()==gelb || myBtns[indy][indx].getIcon()==damegelb)) || (computer1=="Ja" && (myBtns[indy][indx].getIcon()==rot || myBtns[indy][indx].getIcon()==damerot))){
x=indy;
y=indx;
// System.out.println("x = "+x+"y ="+y);
if(ergebnis=gegner_finden()){
schlagen=true;
move=true;
}
}
}
if (schlagen==false){
if (computer2=="Ja") Anzahlgelb=0;
else Anzahlrot=0;
ergebnis();
}else{
entscheiden();
bewegen();
}
}
if (schlagen &&(computer1=="Ja" || computer2=="Ja")&&Anzahlrot>0 &&Anzahlgelb>0){
waechseln();
}
}
static boolean entscheiden(){
int i=0;
int richtige=0;
String[] loeschen=new String[100];
Scanner scanner=new Scanner("");
while (speichern[i]!=null && speichern[i]!=""){
if (schritte_suchen)
if (speichern[i].length()==7) loeschen[richtige++]=speichern[i];
i++;
}
if (schritte_suchen){
if (richtige>1){
i=(int)Math.round(Math.random()*(richtige-1));
scanner= new Scanner(loeschen[i]);
r1=scanner.nextInt();
r2=scanner.nextInt();
}else{
if (i>1) i=(int)Math.round(Math.random()*(i-1));
else i=0;
scanner= new Scanner(speichern[i]);
r1=scanner.nextInt();
r2=scanner.nextInt();
}
}else {
if (i>1) i=(int)Math.round(Math.random()*(i-1));
else i=0;
scanner= new Scanner(speichern[i]);
r1=scanner.nextInt();
r2=scanner.nextInt();
}
if (schritte_suchen){
x=scanner.nextInt();
y=scanner.nextInt();
System.out.println("x= "+x+" y="+y);
b=r1;
a=r2;
}
i=0;
while(speichern[i]!=null){
speichern[i]=null;
i++;
}
i=0;
while(loeschen[i]!=null){
loeschen[i]=null;
i++;
}
zaehler=0;
schritte_suchen=false;
return true;
}
}
import javax.swing.JOptionPane;
public class Spieler extends Buttontester {
static boolean zwangfalse=true;
static boolean pruefen(){
if (myBtns[x][y].getIcon()!= damegelb && myBtns[x][y].getIcon()!= damerot){
// Wenn es nicht die Dame ist...
if (Math.abs(a-y)==2 ){
if (myBtns[(x+b)/2][(y+a)/2].getIcon()!=null){
if (myBtns[(x+b)/2][(y+a)/2].getIcon()!=myBtns[x][y].getIcon()){
//Falls geschlagen wird, wirden gelben bzw Roten runtergezaehlt...
if (myBtns[(x+b)/2][(y+a)/2].getIcon()==gelb || myBtns[(x+b)/2][(y+a)/2].getIcon()==damegelb)
Anzahlgelb--;
else Anzahlrot--;
myBtns[(x+b)/2][(y+a)/2].setIcon(null);
// Zwangssprung?
if (spieler1=="Ja" || spieler2=="Ja")
zwangfalse=false;
if (zwang) zwang=false;
System.out.println("gelb ="+Anzahlgelb+"rot ="+Anzahlrot);
return true;
//Wenn es sich beim Springen um die gleich Farbe handelt..
}else return false;
//Wenn das Feld, wo gesprungen wird nicht leer ist...
}return false;
// Wenn das Feld grösser ist als Math.abs(2)
}else
// Wenn es nur um ein Feld bewegt wird...
if (Math.abs(a-y)==1) return true;
else return false;
}else{
// Hier wird geguckt, in welche Richtung wir uns mit der Dame bewegen
int zaehlervertik=0;
int zaehlerhoriz=0;
if(x<b) zaehlervertik=1; //unten
else zaehlervertik=-1; // oben
if (a>y) zaehlerhoriz=1; //rechts
else zaehlerhoriz=-1; //links
//Fängt an von dem nächsten Feld zu überprüfen.
int horizontal=y+zaehlerhoriz;
int vertikal=x+zaehlervertik;
// Anzahl an Gelb und Rot
int anzahl=0;
int ax=0;
int ay=0;
// Bewegen bis zu dem angeklickten Feld...
while(a!=horizontal && b!=vertikal){
if (myBtns[vertikal][horizontal].getIcon()!=null)
if( (myBtns[x][y].getIcon()==damegelb && (myBtns[vertikal][horizontal].getIcon()!=gelb && myBtns[vertikal][horizontal].getIcon()!=damegelb)) || (myBtns[x][y].getIcon()==damerot &&(myBtns[vertikal][horizontal].getIcon()!=rot && myBtns[vertikal][horizontal].getIcon()!=damerot))){
anzahl++;
if (anzahl>1)
return false;
// Beim ersten Auftrette der gegnerischen Farbe.. werde seine Koordinaten gespeichert..
ax=vertikal;
ay=horizontal;
//Wenn irgeneine Farbe ungleich der Damenfarbe auf dem Weg auftritt, wird false zurückgegeben
}else return false;
vertikal=vertikal+zaehlervertik;
horizontal=horizontal +zaehlerhoriz;
}
//wenn die Schleife ohne Störungen bis zum Ende durchläuft, sind die Felder entweder leer oder ein Gegner vorhanden
if ( Math.abs(ax-b)==Math.abs(ay-a)){
if (anzahl==1){
// Runterzaelen
if (myBtns[ax][ay].getIcon()==gelb || myBtns[ax][ay].getIcon()==damegelb)
Anzahlgelb--;
else Anzahlrot--;
myBtns[ax][ay].setIcon(null);
System.out.println("gelb ="+Anzahlgelb+"rot ="+Anzahlrot);
if (spieler1=="Ja" || spieler2=="Ja")
zwangfalse=false;
if (zwang) zwang=false;
}
return true;
//Falls das Feld nicht in der Damen - Diagonale liegt
}else
if (anzahl==0) return true;
else return false;
}
}
}
Danke im Voraus !
Mfg Alex