Swing Problem bei Java-Schachprogramm

Status
Nicht offen für weitere Antworten.

bonzenbauer

Mitglied
Hallo,

Ich bin zur Zeit mit einem Kollegen an einem Mini Schachspiel, welches ein 4x4 Brett ist am coden. Es gibt 4 weiße und 4 schwarze Figuren. Wir haben jede Figur als JButton erzeugt und können diese auch schon bewegen,

aber die figuren poppen immer auf und verschwinden, keine ahnung wieso, und nachm 2 oder 3 zug tauschen schwarze mit weißen die plätze .
 

André Uhres

Top Contributor
Versuch's mal so:
Java:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class GUI_chess extends JApplet {

    private static final long serialVersionUID = 1L;
    private JPanel jContentPane;
    private JLabel title,  labelBW;
    private boolean black;//true = black player, false = white player
    private JButton currentPiece;
    private int fieldNumber;//for numbering the fields

    public GUI_chess() {
        super();
    }

    @Override
    public void init() {
        try {
            //The applet is initiated with "invokeAndWait"
            //to avoid possible problems in the web browser:
            EventQueue.invokeAndWait(new Runnable() {

                public void run() {
                    initComponents();
                }
            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private JButton getPiece(final int x, final int y, final boolean bl) {
        final JButton piece = new JButton();
        piece.setBounds(new Rectangle(x, y, 20, 20));
        if (bl) {
            piece.setIcon(new ImageIcon("bauerb.jpg"));
            piece.setName("black");//store the color of the piece in its name attribute
        } else {
            piece.setIcon(new ImageIcon("bauerw.jpg"));
            piece.setName("white");//store the color of the piece in its name attribute
        }

        piece.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseReleased(final MouseEvent e) {
                //get the color of the piece (stored in its name attribute):
                String pieceColor = piece.getName();
                if ((black && pieceColor.equals("white")) ||
                        (!black && pieceColor.equals("black"))) {
                    //if the player has clicked on a piece of adverse color,
                    //the event is forwarded to the field for move handling:
                    piece.getParent().dispatchEvent(e);
                } else {
                    //if the player has clicked on a piece of its own color,
                    //the piece is stored as currentPiece:
                    currentPiece = piece;
                    //display player text with current field number:
                    JComponent currentField = (JComponent) currentPiece.getParent();
                    labelBW.setText(black ? "bl " + currentField.getName() : "wh " + currentField.getName());
                }
            }
        });
        return piece;
    }

    private JPanel getField(final int x, final int y, final Color color) {
        final JPanel toField = new JPanel(null);
        toField.setBounds(new Rectangle(x, y, 40, 40));
        toField.setBackground(color);
        fieldNumber++; //next field number
        //store the field number in the name attribute of the field:
        toField.setName(String.valueOf(fieldNumber));
        toField.addMouseListener(new MouseAdapter() {

            @Override
            public void mouseReleased(final MouseEvent e) {
                if (currentPiece != null) {
                    JComponent fromField = (JComponent) currentPiece.getParent();
                    if (isMoveAllowed(fromField, toField)) {
                        move(fromField, toField);
                    }
                }
            }

            private boolean isMoveAllowed(final JComponent fromField, final JPanel toField) {
                String currentPieceColor = currentPiece.getName();
                JComponent toPiece = null;
                if (toField.getComponentCount() > 0) {
                    toPiece = (JComponent) toField.getComponent(0);
                }
                // A move is allowed only if fromField is not the same as toField, and
                // the currentPiece has the color corresponding to the player, and
                // the toField is not occupied by a piece of the same color as currentPiece.
                return ((fromField != toField) && ((black && currentPieceColor.equals("black")) ||
                        (!black && currentPieceColor.equals("white"))) &&
                        (toPiece == null || !toPiece.getName().equals(currentPieceColor)));
            }

            private void move(final JComponent fromField, final JPanel toField) {
                fromField.remove(currentPiece);
                toField.removeAll();
                toField.add(currentPiece);
                //change player:
                black = !black;// true = black player, false = white player
                labelBW.setText(black ? "bl" : "wh");//display player text
                fromField.repaint();
                toField.repaint();
            }
        });

        return toField;
    }

    private void initComponents() {
        labelBW = new JLabel();
        labelBW.setBounds(new Rectangle(71, 268, 158, 16));
        labelBW.setHorizontalAlignment(SwingConstants.CENTER);
        labelBW.setHorizontalTextPosition(SwingConstants.CENTER);
        labelBW.setText("wh");//white player always begins!
        title = new JLabel();
        title.setBounds(new Rectangle(68, 39, 161, 16));
        title.setHorizontalAlignment(SwingConstants.CENTER);
        title.setHorizontalTextPosition(SwingConstants.CENTER);
        title.setFont(new Font("Dialog", Font.BOLD | Font.ITALIC, 14));
        title.setText("Mini-Chess");
        //instead of creating a new ContentPane, 
        //we get the one already existing in the applet:
        jContentPane = (JPanel) getContentPane();
        jContentPane.setLayout(null);
        jContentPane.setSize(new Dimension(282, 303));
        //creating the first four fields:
        JPanel field1 = getField(70, 96, Color.WHITE);
        JPanel field2 = getField(110, 96, Color.BLACK);
        JPanel field3 = getField(150, 96, Color.WHITE);
        JPanel field4 = getField(190, 96, Color.BLACK);
        //adding the black pieces to the first four fields:
        field1.add(getPiece(10, 10, true));//true = black
        field2.add(getPiece(10, 10, true));//true = black
        field3.add(getPiece(10, 10, true));//true = black
        field4.add(getPiece(10, 10, true));//true = black
        //adding the first four fields to the ContentPane:
        jContentPane.add(field1);
        jContentPane.add(field2);
        jContentPane.add(field3);
        jContentPane.add(field4);
        //adding the empty fields to the ContentPane:
        jContentPane.add(getField(70, 136, Color.BLACK));
        jContentPane.add(getField(110, 136, Color.WHITE));
        jContentPane.add(getField(150, 136, Color.BLACK));
        jContentPane.add(getField(190, 136, Color.WHITE));
        jContentPane.add(getField(70, 176, Color.WHITE));
        jContentPane.add(getField(110, 176, Color.BLACK));
        jContentPane.add(getField(150, 176, Color.WHITE));
        jContentPane.add(getField(190, 176, Color.BLACK));
        //creating the last four fields:
        JPanel field1a = getField(70, 216, Color.BLACK);
        JPanel field2a = getField(110, 216, Color.WHITE);
        JPanel field3a = getField(150, 216, Color.BLACK);
        JPanel field4a = getField(190, 216, Color.WHITE);
        //adding the white pieces to the last four fields:
        field1a.add(getPiece(10, 10, false));//false = white
        field2a.add(getPiece(10, 10, false));//false = white
        field3a.add(getPiece(10, 10, false));//false = white
        field4a.add(getPiece(10, 10, false));//false = white
        //adding the last four fields to the ContentPane:
        jContentPane.add(field1a);
        jContentPane.add(field2a);
        jContentPane.add(field3a);
        jContentPane.add(field4a);
        //adding title label and player label to the ContentPane:
        jContentPane.add(title);
        jContentPane.add(labelBW);
        setSize(300, 300);
    }
}
 
Zuletzt bearbeitet:

bonzenbauer

Mitglied
hallo,
danke zunächst für die schnelle hilfe, das applet klappt super, nur leider
check ich die programmierung nicht wirklich, bin nicht grade so erfahren in der progr-sprache

was ich noch interessieren würde, wäre die ausgabe der positionen der einzelnen spielfiguren z.b. von 1-16 je nach feld

von oben links beginnend nach unten rechts

wäre echt super , wenn das ginge
 

André Uhres

Top Contributor
leider check ich die programmierung nicht wirklich...
was mich noch interessieren würde, wäre die ausgabe der positionen der einzelnen spielfiguren z.b. von 1-16 je nach feld von oben links beginnend nach unten rechts
Hab den Code oben angepasst und ein paar Kommentare hinzugefügt damit man die Programmierung besser "checken" kann. Wenn trotzdem noch was unklar ist, frag einfach nochmal nach und zack kommt die Erklärung :)

EDIT: Hab grad noch einen Fehler in der Methode "isMoveAllowed" entdeckt und verbessert: das "toField" darf keinen Stein der eigenen Farbe enthalten.
 
Zuletzt bearbeitet:

bonzenbauer

Mitglied
wir haben nun noch ein problem, welches darin besteht, das wir in der klasse SituationUI von anderen über die Opperation showSituation aufgerufen werden, damit diese als rückgabe unser schachbrett, also die gui erhalten worauf alle spielfiguren zu sehen sind.

wir müssen also noch den move des ki gegners abbilden.
in dieser zeit darf dann allerdings auch keine eingabe vom benutzer erfolgen.

Quellcode für SituationUI.java

Java:
package UI;

import GC.*;

public class SituationUI extends AbstractSituation
{




public Move getNextUserMove(int player)
//
// Operation, die in der vorliegenden Situation den nächsten Zug
// des Benutzers einliest, auf Gültigkeit in Abhängigkeit von der
// zu spielenden Farbe player (1 oder 2) prüft und als Wert 
// zurückliefert. Bei ungültiger Eingabe erfolgt eine neue Frage
// an den Benutzer bis schließlich ein gültiger Zug vorliegt.
{
return null; // Bitte null entsprechend ersetzen!
}

public void showSituation()
//
// Operation zur Ausgabe der vorliegenden Situation am Bildschirm
{
}

}

Quellcode für GUI_chess.java

Java:
package UI;

import javax.swing.*;

import GC.Move;
import GC.Position;

import java.awt.*;
import java.awt.event.*;

public class GUI_chess extends JApplet {

	private static final long serialVersionUID = 1L;

	private JPanel jContentPane;

	private JLabel title, labelBW;

	private boolean black;// true = black spieler, false = white spieler

	private JButton currentPiece;

	static private int fieldNumber;// für feldnummerierung

	static int zahl, farbe, zahl2;

	static int feld[][] = new int[4][4];

	static Position from;

	static Position to;

	public Move bewegung = new Move(from, to);

	public GUI_chess(int player) {
		switch (player) {
		case 1:
			this.black = false;
			break;
		case 2:
			this.black = true;
			break;
		default:
			System.out.println("Ungültig");
		}
	}

	public void welcherSpieler(int player) {
		switch (player) {
		case 1:
			this.black = false;
			break;
		case 2:
			this.black = true;
			break;
		default:
			System.out.println("Ungültig");
		}
	}

	@Override
	public void init() {

		// Feldinitialisierung Anfangswert

		feld[3][0] = 2;
		feld[3][1] = 2;
		feld[3][2] = 2;
		feld[3][3] = 2;

		feld[2][0] = 0;
		feld[2][1] = 0;
		feld[2][2] = 0;
		feld[2][3] = 0;

		feld[1][0] = 0;
		feld[1][1] = 0;
		feld[1][2] = 0;
		feld[1][3] = 0;

		feld[0][0] = 1;
		feld[0][1] = 1;
		feld[0][2] = 1;
		feld[0][3] = 1;

		try {

			// applet mit "invokeAndWait" aufgerufen
			// um probleme im browser zu umgehen:

			EventQueue.invokeAndWait(new Runnable() {

				public void run() {
					initComponents();
				}
			});
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

	private JButton getPiece(final int x, final int y, final boolean bl) {
		final JButton piece = new JButton();
		piece.setBounds(new Rectangle(x, y, 20, 20));
		if (bl) {
			piece.setIcon(new ImageIcon("bauerb.jpg"));
			piece.setName("black");// farbe der figur in attribut name
			// gespeichert
		} else {
			piece.setIcon(new ImageIcon("bauerw.jpg"));
			piece.setName("white");
		}

		piece.addMouseListener(new MouseAdapter() {

			@Override
			public void mouseReleased(final MouseEvent e) {
				// gib den namen der figur zurück (farbe):
				String pieceColor = piece.getName();
				if ((black && pieceColor.equals("white"))
						|| (!black && pieceColor.equals("black"))) {

					// falls der spieler auf eine figur der jeweiligen farbe
					// klickt,
					// der event wird auf das näcshte feld weitergeleitet

					piece.getParent().dispatchEvent(e);
				} else {
					// falls der spieler auf eine figur derselben farbe klickt,
					// wird die figur in currentpiece gespeichert
					currentPiece = piece;
					// zeige spielertext mit aktueller feldnummer
					// JComponent currentField = (JComponent) currentPiece
					// .getParent();
					labelBW.setText(black ? "Schwarz am Zug! "
							: "Weiß am Zug! ");
				}
			}
		});
		return piece;
	}

	private JPanel getField(final int x, final int y, final Color color) {
		final JPanel toField = new JPanel(null);
		toField.setBounds(new Rectangle(x, y, 40, 40));
		toField.setBackground(color);
		fieldNumber++; // nächste feldnummer

		// speichere die feldnummer in dem namensattribut der vairable toField
		toField.setName(String.valueOf(fieldNumber));

		toField.addMouseListener(new MouseAdapter() {

			@Override
			public void mouseReleased(final MouseEvent e) {
				if (currentPiece != null) {
					JComponent fromField = (JComponent) currentPiece
							.getParent();

					// falls durch isMoveAllowed ein zug gestattet ist, bewege
					// figur
					if (isMoveAllowed(fromField, toField)) {
						move(fromField, toField);
					}
				}
			}

			private boolean isMoveAllowed(final JComponent fromField,
					final JPanel toField) {
				String currentPieceColor = currentPiece.getName();
				JComponent toPiece = null;

				boolean allowed = false;

				int y, y2;
				// Koordinaten des zuletzt angeklickten feldes
				y = toField.getLocation().y;
				// Koordinaten des zuvor zuletzt angeklickten feldes
				y2 = fromField.getLocation().y;

				if (toField.getComponentCount() > 0) {
					toPiece = (JComponent) toField.getComponent(0);
				}

				// ein zug ist erlaubt wenn fromField nicht identisch mit
				// toField ist
				// currentPiece hat die gleiche farbe wie Spieler (black oder
				// white)
				// toField ist nicht belegt mit einer figur derselben farbe

				if ((fromField != toField)
						// regeln um nich zurück zu springen
						&& ((y > y2 && black) || (y < y2 && !black))
						&& ((black && currentPieceColor.equals("black")) || (!black && currentPieceColor
								.equals("white")))
						&& (toPiece == null || !toPiece.getName().equals(
								currentPieceColor))) {
					// distanz zwischen letzten und jetztigen feld
					int distance = (int) fromField.getLocation().distance(
							toField.getLocation());
					// int zahl der aktuellen feldnummer
					int zahl2 = Integer.valueOf(toField.getName());

					int color = 0;
					// überprüfung welches feld angewählt wird
					if (zahl2 == 1)
						color = feld[3][0];
					if (zahl2 == 2)
						color = feld[3][1];
					if (zahl2 == 3)
						color = feld[3][2];
					if (zahl2 == 4)
						color = feld[3][3];

					if (zahl2 == 5)
						color = feld[2][0];
					if (zahl2 == 6)
						color = feld[2][1];
					if (zahl2 == 7)
						color = feld[2][2];
					if (zahl2 == 8)
						color = feld[2][3];

					if (zahl2 == 9)
						color = feld[1][0];
					if (zahl2 == 10)
						color = feld[1][1];
					if (zahl2 == 11)
						color = feld[1][2];
					if (zahl2 == 12)
						color = feld[1][3];

					if (zahl2 == 13)
						color = feld[0][0];
					if (zahl2 == 14)
						color = feld[0][1];
					if (zahl2 == 15)
						color = feld[0][2];
					if (zahl2 == 16)
						color = feld[0][3];

					// regeln zum sprung diagonal zum schlagen , oder um nach
					// vorne zu springen
					if (black && distance == 56 && color == 1) {
						allowed = true;
					} else if (!black && distance == 56 && color == 2) {
						allowed = true;
					} else if (black && distance == 40 && color != 2
							&& color != 1) {
						allowed = true;
					} else if (!black && distance == 40 && color != 2
							&& color != 1) {
						allowed = true;
					} else {
						allowed = false;
						labelBW.setText("ungültiger Zug!!!");
					}

				}
				return allowed;
			}

			@SuppressWarnings("deprecation")
			private void move(final JComponent fromField, final JPanel toField) {
				// aktionen die bei zug getätigt werden
				fromField.remove(currentPiece); // damit beim letzten feld keine
				// figur steht
				toField.removeAll();
				toField.add(currentPiece); // jetztiges feld bekommt figur des
				// letzten feldes

				// wechsel spieler
				black = !black;// true = black spieler, false = white spieler
				labelBW.setText(black ? "Schwarz am Zug! " : "Weiß am Zug! ");
				// zeige spieler text
				fromField.repaint();
				toField.repaint();

				// zugriff auf Situation UI und rückgabe der zug-bewegung

				SituationUI obbi = new SituationUI();

				int x = 0, y = 0;
				int x2 = 0, y2 = 0;

				switch (Integer.valueOf(fromField.getName())) {
				case 1:
					x = 0;
					y = 3;
					break;
				case 2:
					x = 1;
					y = 3;
					break;
				case 3:
					x = 2;
					y = 3;
					break;
				case 4:
					x = 3;
					y = 3;
					break;
				case 5:
					x = 0;
					y = 2;
					break;
				case 6:
					x = 1;
					y = 2;
					break;
				case 7:
					x = 2;
					y = 2;
					break;
				case 8:
					x = 3;
					y = 2;
					break;
				case 9:
					x = 0;
					y = 1;
					break;
				case 10:
					x = 1;
					y = 1;
					break;
				case 11:
					x = 2;
					y = 1;
					break;
				case 12:
					x = 3;
					y = 1;
					break;
				case 13:
					x = 0;
					y = 0;
					break;
				case 14:
					x = 1;
					y = 0;
					break;
				case 15:
					x = 2;
					y = 0;
					break;
				case 16:
					x = 3;
					y = 0;
					break;
				default:
				}
				switch (Integer.valueOf(toField.getName())) {
				case 1:
					x2 = 0;
					y2 = 3;
					break;
				case 2:
					x2 = 1;
					y2 = 3;
					break;
				case 3:
					x2 = 2;
					y2 = 3;
					break;
				case 4:
					x2 = 3;
					y2 = 3;
					break;
				case 5:
					x2 = 0;
					y2 = 2;
					break;
				case 6:
					x2 = 1;
					y2 = 2;
					break;
				case 7:
					x2 = 2;
					y2 = 2;
					break;
				case 8:
					x2 = 3;
					y2 = 2;
					break;
				case 9:
					x2 = 0;
					y2 = 1;
					break;
				case 10:
					x2 = 1;
					y2 = 1;
					break;
				case 11:
					x2 = 2;
					y2 = 1;
					break;
				case 12:
					x2 = 3;
					y2 = 1;
					break;
				case 13:
					x2 = 0;
					y2 = 0;
					break;
				case 14:
					x2 = 1;
					y2 = 0;
					break;
				case 15:
					x2 = 2;
					y2 = 0;
					break;
				case 16:
					x2 = 3;
					y2 = 0;
					break;
				default:
				}

				from = new Position(x, y);
				to = new Position(x2, y2);

				// methode SpielerBewegungFestlegen wird aufgerufen und from und
				// to übergeben

				// aktuelle int feldnummern von letzten und aktuellen feld
				zahl = Integer.valueOf(toField.getName());
				zahl2 = Integer.valueOf(fromField.getName());
				// überprüfung ob aktuelle angewählte figur weiss oder schwarz
				// oder nichts ist
				if (currentPiece.getName().equals("white")) {
					farbe = 1;

				} else if (currentPiece.getName().equals("black")) {
					farbe = 2;

				} else
					farbe = 0;
				// fromField bekommt bei zug 0 wert
				if (zahl2 == 1)
					feld[3][0] = 0;
				if (zahl2 == 2)
					feld[3][1] = 0;
				if (zahl2 == 3)
					feld[3][2] = 0;
				if (zahl2 == 4)
					feld[3][3] = 0;

				if (zahl2 == 5)
					feld[2][0] = 0;
				if (zahl2 == 6)
					feld[2][1] = 0;
				if (zahl2 == 7)
					feld[2][2] = 0;
				if (zahl2 == 8)
					feld[2][3] = 0;

				if (zahl2 == 9)
					feld[1][0] = 0;
				if (zahl2 == 10)
					feld[1][1] = 0;
				if (zahl2 == 11)
					feld[1][2] = 0;
				if (zahl2 == 12)
					feld[1][3] = 0;

				if (zahl2 == 13)
					feld[0][0] = 0;
				if (zahl2 == 14)
					feld[0][1] = 0;
				if (zahl2 == 15)
					feld[0][2] = 0;
				if (zahl2 == 16)
					feld[0][3] = 0;
				// ////////////////////////////////////////////////////////////////////
				// farbe für die aktuellen feldern
				if (zahl == 1)
					feld[3][0] = farbe;
				if (zahl == 2)
					feld[3][1] = farbe;
				if (zahl == 3)
					feld[3][2] = farbe;
				if (zahl == 4)
					feld[3][3] = farbe;

				if (zahl == 5)
					feld[2][0] = farbe;
				if (zahl == 6)
					feld[2][1] = farbe;
				if (zahl == 7)
					feld[2][2] = farbe;
				if (zahl == 8)
					feld[2][3] = farbe;

				if (zahl == 9)
					feld[1][0] = farbe;
				if (zahl == 10)
					feld[1][1] = farbe;
				if (zahl == 11)
					feld[1][2] = farbe;
				if (zahl == 12)
					feld[1][3] = farbe;

				if (zahl == 13)
					feld[0][0] = farbe;
				if (zahl == 14)
					feld[0][1] = farbe;
				if (zahl == 15)
					feld[0][2] = farbe;
				if (zahl == 16)
					feld[0][3] = farbe;

			}
		});

		return toField;
	}

	public int[][] Spielfeld() {

		// Wert 0 = Spielfeld leer
		// Wert 1 = Weißer Bauer auf Feld
		// Wert 2 = Schwarzer Bauer auf Feld

		return feld;
	}

	private void initComponents() {

		labelBW = new JLabel();
		labelBW.setBounds(new Rectangle(71, 268, 158, 16));
		labelBW.setHorizontalAlignment(SwingConstants.CENTER);
		labelBW.setHorizontalTextPosition(SwingConstants.CENTER);
		labelBW.setText("Weiß am Zug!");
		title = new JLabel();
		title.setBounds(new Rectangle(68, 39, 161, 16));
		title.setHorizontalAlignment(SwingConstants.CENTER);
		title.setHorizontalTextPosition(SwingConstants.CENTER);
		title.setFont(new Font("Dialog", Font.BOLD | Font.ITALIC, 14));
		title.setText("Mini-Chess");
		// anstatt ein neues contentpane zu machen,
		// nehmen wir das im applet bereits vorhandene:
		jContentPane = (JPanel) getContentPane();
		jContentPane.setLayout(null);
		jContentPane.setSize(new Dimension(282, 303));
		// die ersten 4 felder:
		JPanel field1 = getField(70, 96, Color.WHITE);
		JPanel field2 = getField(110, 96, Color.BLACK);
		JPanel field3 = getField(150, 96, Color.WHITE);
		JPanel field4 = getField(190, 96, Color.BLACK);

		// hinzufügen der schwarzen figuren zu den ersten 4 feldern
		field1.add(getPiece(10, 10, true));// true = black
		field2.add(getPiece(10, 10, true));// true = black
		field3.add(getPiece(10, 10, true));// true = black
		field4.add(getPiece(10, 10, true));// true = black

		// die ersten 4 felder zum contenpane hinzufügen
		jContentPane.add(field1);
		jContentPane.add(field2);
		jContentPane.add(field3);
		jContentPane.add(field4);
		// hinzufügen der leeren felder zum contentpane:
		jContentPane.add(getField(70, 136, Color.BLACK));
		jContentPane.add(getField(110, 136, Color.WHITE));
		jContentPane.add(getField(150, 136, Color.BLACK));
		jContentPane.add(getField(190, 136, Color.WHITE));
		jContentPane.add(getField(70, 176, Color.WHITE));
		jContentPane.add(getField(110, 176, Color.BLACK));
		jContentPane.add(getField(150, 176, Color.WHITE));
		jContentPane.add(getField(190, 176, Color.BLACK));
		// die letzten 4 felder:
		JPanel field1a = getField(70, 216, Color.BLACK);
		JPanel field2a = getField(110, 216, Color.WHITE);
		JPanel field3a = getField(150, 216, Color.BLACK);
		JPanel field4a = getField(190, 216, Color.WHITE);
		// hinzufügen der weissen figuren zu den letzten 4 feldern:
		field1a.add(getPiece(10, 10, false));// false = white
		field2a.add(getPiece(10, 10, false));// false = white
		field3a.add(getPiece(10, 10, false));// false = white
		field4a.add(getPiece(10, 10, false));// false = white
		// füge dem ContentPane die 4 figuren zu:
		jContentPane.add(field1a);
		jContentPane.add(field2a);
		jContentPane.add(field3a);
		jContentPane.add(field4a);
		// hinzufügen vom titel label und spieler label zum ContentPane:
		jContentPane.add(title);
		jContentPane.add(labelBW);
		jContentPane.setVisible(true);
		setSize(300, 300);
	}

}
 

bonzenbauer

Mitglied
könnte jemand vielleicht noch bis heute abend das problem lösen?

das wäre wirklich hilfreich,

danke im voraus ....
 

Ebenius

Top Contributor
wir haben nun noch ein problem, welches darin besteht, das wir in der klasse SituationUI von anderen über die Opperation showSituation aufgerufen werden, damit diese als rückgabe unser schachbrett, also die gui erhalten worauf alle spielfiguren zu sehen sind.
Das ist gramatikalisch mindestens grenzwertig.

wir müssen also noch den move des ki gegners abbilden.
in dieser zeit darf dann allerdings auch keine eingabe vom benutzer erfolgen.
Was ist denn nun die eigentliche Frage?

Ebenius
 

bonzenbauer

Mitglied
weitere erläuterungen stehen im java code unter
Java:
public Move getNextUserMove(int player)

im angehängten quelltext.

es soll aus der Klasse GUI_chess (anhang) der wert feld[][] zurückgegeben werden, so dass die aktuelle spielsituation in der Methode ShowSituation() dargestellt wird

(feld ist ein 2dimensionales array mit den koordinaten des aktuell gewählten spielfeldquadranten (in schach jetzt ein weißes oder schwarzes feld gewählt wurde, wo die spielfigur hinzieht))

nun soll in der Methode Move getNextUserMove(int player)

player==1 dann weißer spierler
player==2 dann schwarze spierler
player ==0 leeres spielfeld

die spielfigur von einer anderen klasse empfangen werden und in GUI_CHESS muss dann entweder der schwarze oder weiße spieler als aktuell gültige figur gewählt werden

und im return muss ein eine Variable vom Typ Move zurückgegeben werden, welche die Koordinaten "Position" des aktuellen Spielfeldes wieder zurückgegeben werden

eine ki wiederrum greift auf die Klasse SituatuionUI und holt sich die werte des letzten zuges und macht einen eigenen zug, und die gui muss diesen zug natürlich anzeigen, danach ist wieder der spieler dran usw...

bitte könnt ihr mir helfen?

arbeite schon voll lange an dem problem
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
sserio Java Fx - Problem AWT, Swing, JavaFX & SWT 3
AmsananKING Java Menü-Problem AWT, Swing, JavaFX & SWT 1
B [Problem] Java öffnet Word-Datein nicht AWT, Swing, JavaFX & SWT 14
S AWT Java print dialog Problem AWT, Swing, JavaFX & SWT 0
C Swing XML - JAVA (GUI) Problem !! BITTE HELFEN !! AWT, Swing, JavaFX & SWT 6
T Java Combobox Problem AWT, Swing, JavaFX & SWT 3
L Snake in Java KeyListener Problem AWT, Swing, JavaFX & SWT 30
1 Java.awt.Robot Problem beim Shift-Druck AWT, Swing, JavaFX & SWT 5
2 Tablet-PC Java-Anwendung -> Tablet-Pen Problem !! AWT, Swing, JavaFX & SWT 3
P Bug in Java? - Problem beim Ändern von Spaltentiteln AWT, Swing, JavaFX & SWT 2
O Problem mit der MacOS Version von Java AWT, Swing, JavaFX & SWT 2
J java menu+button problem AWT, Swing, JavaFX & SWT 6
TRunKX Problem mit der JAVA VM 1.3 1.4 AWT, Swing, JavaFX & SWT 5
L Problem mit paintComponent() under java < 1.6 under Windo AWT, Swing, JavaFX & SWT 3
O Java-GUI (AWT) Problem. AWT, Swing, JavaFX & SWT 14
V Bild wird nicht auf JPanel gezeichnet; Java Problem AWT, Swing, JavaFX & SWT 10
S java.awt.Frame, Problem mit Tabbing AWT, Swing, JavaFX & SWT 2
C Java Utils Deutungs Problem AWT, Swing, JavaFX & SWT 5
Z Bei Problem mit Java Swing brauche dringende Hilfe AWT, Swing, JavaFX & SWT 3
Juelin Problem mit TextField.requestFocus(); AWT, Swing, JavaFX & SWT 17
Juelin Problem beim Laden Controller AWT, Swing, JavaFX & SWT 2
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
H 2D-Grafik Problem mit Paint AWT, Swing, JavaFX & SWT 1
S Layout - Problem AWT, Swing, JavaFX & SWT 1
Tassos JavaFX/Problem mit der Maussteuerung in Stackpane AWT, Swing, JavaFX & SWT 7
A Problem Spiel auf Panel der GUI zu bringen AWT, Swing, JavaFX & SWT 1
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
TheWhiteShadow JavaFX ListView Problem beim Entfernen von Elementen AWT, Swing, JavaFX & SWT 1
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
Umb3rus JavaFX Problem mit PropertyValueFactory: can not read from unreadable property AWT, Swing, JavaFX & SWT 1
T Problem mit paintComponent() AWT, Swing, JavaFX & SWT 17
K JavaFX Resizing-Problem beim BorderLayout (Center Component) beim Arbeiten mit mehreren FXMLs AWT, Swing, JavaFX & SWT 2
G Instance OF Problem AWT, Swing, JavaFX & SWT 9
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
M Problem mit dem Anzeigen von Frames im Vordergrund AWT, Swing, JavaFX & SWT 5
Badebay Problem mit JButton AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
J JavaFX Löschen im Tabelview macht Problem AWT, Swing, JavaFX & SWT 15
JavaTalksToMe JavaFx ExekutorService Problem AWT, Swing, JavaFX & SWT 2
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
B Problem mit JavaFX AWT, Swing, JavaFX & SWT 5
J css Problem AWT, Swing, JavaFX & SWT 5
B JavaFX habe mein Problem fett markiert AWT, Swing, JavaFX & SWT 2
A Swing Filter-Problem AWT, Swing, JavaFX & SWT 1
temi JavaFX Problem mit IntelliJ und JavaFx 11 unter XUbuntu AWT, Swing, JavaFX & SWT 3
L Java FX Problem mit Ubuntu 18 und JavaFx AWT, Swing, JavaFX & SWT 27
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
kodela Swing Problem mit Warten-Dialog AWT, Swing, JavaFX & SWT 16
B JavaFx Scene Builder Problem AWT, Swing, JavaFX & SWT 2
T DataBinding Problem AWT, Swing, JavaFX & SWT 5
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 15
J Problem mit Platfrom run later AWT, Swing, JavaFX & SWT 0
D Swing SwingUtils / Thread Problem AWT, Swing, JavaFX & SWT 3
L JavaFX Problem beim Aufrufen einer Methode AWT, Swing, JavaFX & SWT 5
T Swing Problem mit Datum und FormattedTextField AWT, Swing, JavaFX & SWT 2
olfibits JavaFX Problem mit HTMLEditor AWT, Swing, JavaFX & SWT 0
W SWT hover-background-problem with first column in TreeViewer AWT, Swing, JavaFX & SWT 0
M Problem mit Add JScrollPane AWT, Swing, JavaFX & SWT 25
Mario1409 Swing JTextArea scroll Problem AWT, Swing, JavaFX & SWT 0
N Swing Problem mit loop AWT, Swing, JavaFX & SWT 2
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
S Swing & Clean und build Problem AWT, Swing, JavaFX & SWT 12
S JLabel setText() Problem AWT, Swing, JavaFX & SWT 6
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3
G Swing Splitpane Problem AWT, Swing, JavaFX & SWT 1
F Problem mit der FXML Rectangle Shape AWT, Swing, JavaFX & SWT 2
N JavaFX Stranges Problem mit der Autoscroll-Eigenschaft von Textareas AWT, Swing, JavaFX & SWT 0
E Java FX FXML Problem mit html Scriptausführung AWT, Swing, JavaFX & SWT 2
J JavaFX Intersect Problem mit Shapes AWT, Swing, JavaFX & SWT 10
R JavaFX MediaPlayer AVI-Problem AWT, Swing, JavaFX & SWT 1
M Swing Problem mit ListCellRenderer AWT, Swing, JavaFX & SWT 7
D Problem mit JTable AWT, Swing, JavaFX & SWT 1
F GUI Auflösung ändern - Koordianten und Proportions Problem AWT, Swing, JavaFX & SWT 21
J Problem mit Button darstellung AWT, Swing, JavaFX & SWT 23
M Problem mit Layoutmanagern... Hilfe wäre sehr nett. AWT, Swing, JavaFX & SWT 2
S 2D-Grafik Problem mit Variablen AWT, Swing, JavaFX & SWT 4
7 JavaFX Problem beim Zeichnen eines Dreiecks in einem GUI AWT, Swing, JavaFX & SWT 6
M Swing AttributiveCellTableModel addRow() Problem AWT, Swing, JavaFX & SWT 1
J Swing Problem mit Graphics Methode AWT, Swing, JavaFX & SWT 4
N JavaFX Problem mit table multiple selection AWT, Swing, JavaFX & SWT 5
K CheckBox Problem AWT, Swing, JavaFX & SWT 5
Grevak DisplayMode Problem seit Windows 10 AWT, Swing, JavaFX & SWT 2
S Swing Eigene JComboBox Problem! AWT, Swing, JavaFX & SWT 1
B Swing Problem mit Bildpfad AWT, Swing, JavaFX & SWT 4
N Swing Problem beim Scrollen mit JScrollPane AWT, Swing, JavaFX & SWT 6
V Graphics g - drawOval problem mit background AWT, Swing, JavaFX & SWT 1
C AWT Problem mit Protokol Fenster AWT, Swing, JavaFX & SWT 0
M Swing pack() Problem mit Taskleiste AWT, Swing, JavaFX & SWT 4
N Swing Choice- Problem! AWT, Swing, JavaFX & SWT 8
Q "AWT-EventQueue-0" Exception Problem AWT, Swing, JavaFX & SWT 4
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
A Problem: repaint() - Schleife AWT, Swing, JavaFX & SWT 3
J Anfänger GUI Problem bei der Ausführung eines sehr einfachen Programms AWT, Swing, JavaFX & SWT 2
P AWT Problem mit Platzierung (GridBagLayout) AWT, Swing, JavaFX & SWT 2
N Swing JTree Problem beim erstellen der Knoten AWT, Swing, JavaFX & SWT 0
N Swing CardLayout: Problem beim Wechsel zwischen den JPanels AWT, Swing, JavaFX & SWT 3
A Mini-Menu-Schriften. Ein Problem bei hohen DPI Zahlen AWT, Swing, JavaFX & SWT 2
Z Canvas in Frame einfügen. Problem mit 4-Gewinnt AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben