Hallo, ich bin gerade dabei ein Schachspiel zu programmieren. Ich habe bereits das Spielfeld und die Figuren. Nun fehlt aber noch das Bewegen der Figuren, ich habe keine Ahnung wie man das am besten programmiert. Es soll als erstes die Figur angeklickt werden die bewegt werden soll und anschließend soll das Feld gedrückt werden, wo die Figur hin soll. Nun muss geprüft werden ob das Feld besetzt ist, ob der richtige Spieler dran ist, ob die Figur dort überhaupt hinlaufen darf, das keine Figur im Laufweg steht....Das gleiche muss natürlich auch beim schlagen geprüft werden und die Geschlagene Figur soll verschwinden. Am Ende vom Zug soll dann noch die Variable spieler auf Spieler 2 gesetzt werden. Hier gibt es ein Teil des Codes wie ich die Figuren erstellt habe. Bitte macht den Code nicht zu kompliziert, bin noch nicht so lange bei Java dabei😉. Ich programmiere übrigens mit Intellij. Vielen Dank für eure Hilfe!
PS: Der Springer fehlt absichtlich noch.
PS: Der Springer fehlt absichtlich noch.
Java:
public static void spielfeld() {
chessBoard.setBounds(340, 100, 800, 800); // Position und Größe des Schachbretts festlegen
chessBoard.setLayout(new GridLayout(8, 8));
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
JPanel square = new JPanel();
if ((i + j) % 2 == 0) {
square.setBackground(Color.WHITE);
} else {
square.setBackground(Color.GRAY);
}
chessBoard.add(square);
}
}
hintergrund.add(chessBoard);
Figurenweiss();
Figurenschwarz();
} //Ende Funktion Spielfeld
public static void Figurenweiss() {
ImageIcon rookIcon = new ImageIcon("...."); // Pfad zur Bilddatei anpassen
Image rookImage = rookIcon.getImage();
Image scaledRookImage = rookImage.getScaledInstance(60, 60, Image.SCALE_SMOOTH);
ImageIcon scaledRookIcon = new ImageIcon(scaledRookImage);
JLabel rookLabel = new JLabel(scaledRookIcon);
JPanel rookSquare = (JPanel) chessBoard.getComponent(1); // Beispiel: Figur auf das zweite Feld setzen
rookSquare.setLayout(new GridBagLayout()); // Layout-Manager auf GridBagLayout setzen
rookLabel.setSize(60, 60); // Größe des JLabels anpassen
rookSquare.add(rookLabel);
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.CENTER;
rookSquare.add(rookLabel, gbc); // Figur in der Mitte des Feldes platzieren
ImageIcon rook1Icon = new ImageIcon("...."); // Pfad zur Bilddatei anpassen
Image rook1Image = rook1Icon.getImage();
Image scaledRook1Image = rook1Image.getScaledInstance(60, 60, Image.SCALE_SMOOTH);
ImageIcon scaledRook1Icon = new ImageIcon(scaledRook1Image);
JLabel rook1Label = new JLabel(scaledRook1Icon);
JPanel rook1Square = (JPanel) chessBoard.getComponent(9);
rook1Square.setLayout(new GridBagLayout()); // Layout-Manager auf GridBagLayout setzen
rook1Label.setSize(60, 60); // Größe des JLabels anpassen
rook1Square.add(rook1Label);
GridBagConstraints gbc1 = new GridBagConstraints();
gbc1.anchor = GridBagConstraints.CENTER;
rook1Square.add(rook1Label, gbc1); // Figur in der Mitte des Feldes platzieren
ImageIcon rook2Icon = new ImageIcon("...."); // Pfad zur Bilddatei anpassen
Image rook2Image = rook2Icon.getImage();
Image scaledRook2Image = rook2Image.getScaledInstance(60, 60, Image.SCALE_SMOOTH);
ImageIcon scaledRook2Icon = new ImageIcon(scaledRook2Image);
JLabel rook2Label = new JLabel(scaledRook2Icon);
JPanel rook2Square = (JPanel) chessBoard.getComponent(17);
rook2Square.setLayout(new GridBagLayout()); // Layout-Manager auf GridBagLayout setzen
rook2Label.setSize(60, 60); // Größe des JLabels anpassen
rook2Square.add(rook2Label);
GridBagConstraints gbc2 = new GridBagConstraints();
gbc2.anchor = GridBagConstraints.CENTER;
rook2Square.add(rook2Label, gbc2); // Figur in der Mitte des Feldes platzieren
ImageIcon rook3Icon = new ImageIcon("...."); // Pfad zur Bilddatei anpassen
Image rook3Image = rook3Icon.getImage();
Image scaledRook3Image = rook3Image.getScaledInstance(60, 60, Image.SCALE_SMOOTH);
ImageIcon scaledRook3Icon = new ImageIcon(scaledRook3Image);
JLabel rook3Label = new JLabel(scaledRook3Icon);
JPanel rook3Square = (JPanel) chessBoard.getComponent(25);
rook3Square.setLayout(new GridBagLayout()); // Layout-Manager auf GridBagLayout setzen
rook3Label.setSize(60, 60); // Größe des JLabels anpassen
rook3Square.add(rook3Label);
GridBagConstraints gbc3 = new GridBagConstraints();
gbc3.anchor = GridBagConstraints.CENTER;
rook3Square.add(rook3Label, gbc3); // Figur in der Mitte des Feldes platzieren
ImageIcon rook4Icon = new ImageIcon("...."); // Pfad zur Bilddatei anpassen
Image rook4Image = rook4Icon.getImage();
Image scaledRook4Image = rook4Image.getScaledInstance(60, 60, Image.SCALE_SMOOTH);
ImageIcon scaledRook4Icon = new ImageIcon(scaledRook4Image);
JLabel rook4Label = new JLabel(scaledRook4Icon);
JPanel rook4Square = (JPanel) chessBoard.getComponent(33);
rook4Square.setLayout(new GridBagLayout()); // Layout-Manager auf GridBagLayout setzen
rook4Label.setSize(60, 60); // Größe des JLabels anpassen
rook4Square.add(rook4Label);
GridBagConstraints gbc4 = new GridBagConstraints();
gbc4.anchor = GridBagConstraints.CENTER;
rook4Square.add(rook4Label, gbc4); // Figur in der Mitte des Feldes platzieren
ImageIcon rook5Icon = new ImageIcon("...."); // Pfad zur Bilddatei anpassen
Image rook5Image = rook5Icon.getImage();
Image scaledRook5Image = rook5Image.getScaledInstance(60, 60, Image.SCALE_SMOOTH);
ImageIcon scaledRook5Icon = new ImageIcon(scaledRook5Image);
JLabel rook5Label = new JLabel(scaledRook5Icon);
JPanel rook5Square = (JPanel) chessBoard.getComponent(41);
rook5Square.setLayout(new GridBagLayout()); // Layout-Manager auf GridBagLayout setzen
rook5Label.setSize(60, 60); // Größe des JLabels anpassen
rook5Square.add(rook5Label);
GridBagConstraints gbc5 = new GridBagConstraints();
gbc5.anchor = GridBagConstraints.CENTER;
rook5Square.add(rook5Label, gbc5); // Figur in der Mitte des Feldes platzieren
ImageIcon rook6Icon = new ImageIcon("...."); // Pfad zur Bilddatei anpassen
Image rook6Image = rook6Icon.getImage();
Image scaledRook6Image = rook6Image.getScaledInstance(60, 60, Image.SCALE_SMOOTH);
ImageIcon scaledRook6Icon = new ImageIcon(scaledRook6Image);
JLabel rook6Label = new JLabel(scaledRook6Icon);
JPanel rook6Square = (JPanel) chessBoard.getComponent(49);
rook6Square.setLayout(new GridBagLayout()); // Layout-Manager auf GridBagLayout setzen
rook6Label.setSize(60, 60); // Größe des JLabels anpassen
rook6Square.add(rook6Label);
GridBagConstraints gbc6 = new GridBagConstraints();
gbc6.anchor = GridBagConstraints.CENTER;
rook6Square.add(rook6Label, gbc6); // Figur in der Mitte des Feldes platzieren
ImageIcon rook7Icon = new ImageIcon("...."); // Pfad zur Bilddatei anpassen
Image rook7Image = rook7Icon.getImage();
Image scaledRook7Image = rook7Image.getScaledInstance(60, 60, Image.SCALE_SMOOTH);
ImageIcon scaledRook7Icon = new ImageIcon(scaledRook7Image);
JLabel rook7Label = new JLabel(scaledRook7Icon);
JPanel rook7Square = (JPanel) chessBoard.getComponent(57);
rook7Square.setLayout(new GridBagLayout()); // Layout-Manager auf GridBagLayout setzen
rook7Label.setSize(60, 60); // Größe des JLabels anpassen
rook7Square.add(rook7Label);
GridBagConstraints gbc7 = new GridBagConstraints();
gbc7.anchor = GridBagConstraints.CENTER;
rook7Square.add(rook7Label, gbc7); // Figur in der Mitte des Feldes platzieren
//Türme
ImageIcon turmIcon = new ImageIcon("...."); // Pfad zur Bilddatei anpassen
Image turmImage = turmIcon.getImage();
Image scaledturmImage = turmImage.getScaledInstance(60, 60, Image.SCALE_SMOOTH);
ImageIcon scaledturmIcon = new ImageIcon(scaledturmImage);
JLabel turmLabel = new JLabel(scaledturmIcon);
JPanel turmSquare = (JPanel) chessBoard.getComponent(0);
turmSquare.setLayout(new GridBagLayout()); // Layout-Manager auf GridBagLayout setzen
turmLabel.setSize(60, 60); // Größe des JLabels anpassen
turmSquare.add(turmLabel);
GridBagConstraints gbct = new GridBagConstraints();
gbct.anchor = GridBagConstraints.CENTER;
turmSquare.add(turmLabel, gbct); // Figur in der Mitte des Feldes platzieren
ImageIcon turm1Icon = new ImageIcon("...."); // Pfad zur Bilddatei anpassen
Image turm1Image = turm1Icon.getImage();
Image scaledturm1Image = turm1Image.getScaledInstance(60, 60, Image.SCALE_SMOOTH);
ImageIcon scaledturm1Icon = new ImageIcon(scaledturm1Image);
JLabel turm1Label = new JLabel(scaledturm1Icon);
JPanel turm1Square = (JPanel) chessBoard.getComponent(56);
turm1Square.setLayout(new GridBagLayout()); // Layout-Manager auf GridBagLayout setzen
turm1Label.setSize(60, 60); // Größe des JLabels anpassen
turm1Square.add(turm1Label);
GridBagConstraints gbct1 = new GridBagConstraints();
gbct1.anchor = GridBagConstraints.CENTER;
turm1Square.add(turm1Label, gbct1); // Figur in der Mitte des Feldes platzieren
//Läufer
ImageIcon laufIcon = new ImageIcon("...."); // Pfad zur Bilddatei anpassen
Image laufImage = laufIcon.getImage();
Image scaledlaufImage = laufImage.getScaledInstance(80, 80, Image.SCALE_SMOOTH);
ImageIcon scaledlaufIcon = new ImageIcon(scaledlaufImage);
JLabel laufLabel = new JLabel(scaledlaufIcon);
JPanel laufSquare = (JPanel) chessBoard.getComponent(16);
laufSquare.setLayout(new GridBagLayout()); // Layout-Manager auf GridBagLayout setzen
laufLabel.setSize(80, 80); // Größe des JLabels anpassen
laufSquare.add(laufLabel);
GridBagConstraints gbcl = new GridBagConstraints();
gbcl.anchor = GridBagConstraints.CENTER;
laufSquare.add(laufLabel, gbcl); // Figur in der Mitte des Feldes platzieren
ImageIcon lauf1Icon = new ImageIcon("...."); // Pfad zur Bilddatei anpassen
Image lauf1Image = lauf1Icon.getImage();
Image scaledlauf1Image = lauf1Image.getScaledInstance(80, 80, Image.SCALE_SMOOTH);
ImageIcon scaledlauf1Icon = new ImageIcon(scaledlauf1Image);
JLabel lauf1Label = new JLabel(scaledlauf1Icon);
JPanel lauf1Square = (JPanel) chessBoard.getComponent(40);
lauf1Square.setLayout(new GridBagLayout()); // Layout-Manager auf GridBagLayout setzen
lauf1Label.setSize(80, 80); // Größe des JLabels anpassen
lauf1Square.add(lauf1Label);
GridBagConstraints gbcl1 = new GridBagConstraints();
gbcl1.anchor = GridBagConstraints.CENTER;
lauf1Square.add(lauf1Label, gbcl1); // Figur in der Mitte des Feldes platzieren
//Dame
ImageIcon dameIcon = new ImageIcon("...."); // Pfad zur Bilddatei anpassen
Image dameImage = dameIcon.getImage();
Image scaleddameImage = dameImage.getScaledInstance(80, 80, Image.SCALE_SMOOTH);
ImageIcon scaleddameIcon = new ImageIcon(scaleddameImage);
JLabel dameLabel = new JLabel(scaleddameIcon);
JPanel dameSquare = (JPanel) chessBoard.getComponent(24);
dameSquare.setLayout(new GridBagLayout()); // Layout-Manager auf GridBagLayout setzen
dameLabel.setSize(80, 80); // Größe des JLabels anpassen
dameSquare.add(dameLabel);
GridBagConstraints gbcd = new GridBagConstraints();
gbcd.anchor = GridBagConstraints.CENTER;
dameSquare.add(dameLabel, gbcd); // Figur in der Mitte des Feldes platzieren
//König
ImageIcon konigIcon = new ImageIcon("...."); // Pfad zur Bilddatei anpassen
Image konigImage = konigIcon.getImage();
Image scaledkonigImage = konigImage.getScaledInstance(80, 80, Image.SCALE_SMOOTH);
ImageIcon scaledkonigIcon = new ImageIcon(scaledkonigImage);
JLabel konigLabel = new JLabel(scaledkonigIcon);
JPanel konigSquare = (JPanel) chessBoard.getComponent(32);
konigSquare.setLayout(new GridBagLayout()); // Layout-Manager auf GridBagLayout setzen
konigLabel.setSize(80, 80); // Größe des JLabels anpassen
konigSquare.add(konigLabel);
GridBagConstraints gbck = new GridBagConstraints();
gbck.anchor = GridBagConstraints.CENTER;
konigSquare.add(konigLabel, gbck); // Figur in der Mitte des Feldes platzieren
} // Ende Funktion Figurenweiss
Zuletzt bearbeitet von einem Moderator: