Schachbrett

Status
Nicht offen für weitere Antworten.
J

Java-Anfaenger

Gast
Hallo,

ich habe die Aufgabe ein Schachbrett zu erstellen. Es soll so kurz wie nur möglich geschrieben sein.

Mein Ansatz:

Code:
import javax.swing.*;
import java.awt.*;

public class Schach {

	public static void main(String[] args) {
		
		JFrame meinSchachbrett = new JFrame("Schachbrett");
		meinSchachbrett.setPreferredSize(new Dimension(300, 300));
		meinSchachbrett.setLocation(120, 120); 
		meinSchachbrett.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		int[] manipulator = new int[]{1, 2, 3, 4, 5, 6, 7, 8};
				
		for (int i = 0; i < 8; i++) { 
			for (int y = 0; y < manipulator.length; y++) {
				JButton Feld = new JButton();
				if (manipulator[y] % 2 != 0) {	
					Feld.setBackground(Color.BLACK);					
				} else { 
					Feld.setBackground(Color.WHITE);
				}
				manipulator[y] += 1;
				meinSchachbrett.getContentPane().add(Feld);
			}
		}
		meinSchachbrett.getContentPane().setLayout(new GridLayout(8, 8));
		meinSchachbrett.pack();
		meinSchachbrett.setVisible(true);				
	}
}

Kann ich das noch kürzer verfassen?
 

dieta

Top Contributor
Ja....
du kannst erst mal einiges weglassen, indem du dein meisten Code in den Konstruktor der Klasse schreibst und diese von JFrame erben lässt.
Dann ist auch noch die Variable manipulator unnötig. Die Farbe eines Feldes kannst du auch direkt aus i und j berechnen.
 

Der Müde Joe

Top Contributor
so zb
Code:
            if (i % 2 == 0 ^ y % 2 == 0) {   
               Feld.setBackground(Color.BLACK);               
            } else {
               Feld.setBackground(Color.WHITE);
            }
 
S

SlaterB

Gast
Code:
import javax.swing.JButton;
import javax.swing.JFrame;

import java.awt.Color;
import java.awt.GridLayout;

public class Schach
{
    public static void main(String[] args)
    {
        JFrame meinSchachbrett = new JFrame("Schachbrett");
        meinSchachbrett.setSize(300, 300);
        meinSchachbrett.setLocation(120, 120);
        meinSchachbrett.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        meinSchachbrett.getContentPane().setLayout(new GridLayout(8, 8));

        for (int i = 0; i < 64; i++)
        {
            JButton feld = new JButton();
            feld.setBackground((i +i / 8) % 2 == 0 ? Color.BLACK : Color.WHITE);
            meinSchachbrett.add(feld);
        }
        meinSchachbrett.setVisible(true);
    }
}
evtl. Farben vertauschen, falls mit falscher Farbe angefangen ;)
 

dieta

Top Contributor
Wenn schon Komplettlösung, dann bitteschön:
Code:
import javax.swing.*;
import java.awt.*;

public class Schach extends JFrame {

	public Schach()
	{
		super("Schachbrett");
		setPreferredSize(new Dimension(300, 300));
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLayout(new GridLayout(8, 8));
		for (int i = 0; i < 8; i++)
			for (int j = 0; j < 8; j++) {
				JPanel p = new JPanel();
				if (i%2==0 ^ j%2==0) {   
					p.setBackground(Color.BLACK);
				} else {
					p.setBackground(Color.WHITE);
				}
				add(p);
			}
		pack();
		setVisible(true);
	}

	public static void main(String[] args) {
		Schach s = new Schach();
	}
}
Wenns wirklich so kurz wie möglich werden soll kann man nun noch Namen und Umbrücke optimieren:
Code:
import java.awt.*;public class I{public static void main(String[] args){
Frame f = new Frame("Schachbrett");f.setPreferredSize(new Dimension(300, 300));
f.setLayout(new GridLayout(8, 8));for (int i = 0; i < 8; i++)for (int j = 0; j < 8; j++)
{Panel p = new Panel();p.setBackground(i%2==0 ^ j%2==0?Color.BLACK:Color.WHITE);
f.add(p);}f.pack();f.setVisible(true);}}

Ja, sry, dachte nicht, dass die Variablen i und y heißen....
 
S

SlaterB

Gast
meckern und dann ne i und y-Schleife verwenden und
if (i%2==0 ^ j%2==0) {
prüfen? ;)

und das Frame heißt auch i?
 
J

Java-Anfaenger

Gast
Jo danke. Das ist ja doch echt erstaunlich, was man da noch so alles rauskürzen kann.
Ich hatte gedacht, dass man da nicht mehr viel machen kann, aber irgendwie hab ich mich da wohl geirrt.

Vielen dank.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Auf einem Schachbrett bewegen programmieren Java Basics - Anfänger-Themen 2
D Schachbrett (8x8) programmieren Java Basics - Anfänger-Themen 3
B Schachbrett Java Basics - Anfänger-Themen 2
F Best Practice Schachbrett Läufer Java Basics - Anfänger-Themen 11
I Schachbrett aus beliebigen Strings erstellen Java Basics - Anfänger-Themen 3
J Matrix für Schachbrett Java Basics - Anfänger-Themen 6
P Das Schachbrett - Reis Problem Java Basics - Anfänger-Themen 21
H Schachbrett erkennen Java Basics - Anfänger-Themen 19
J Schachbrett mit Hilfe von while-Schleifen Java Basics - Anfänger-Themen 10
J Schachbrett zeichnen Java Basics - Anfänger-Themen 9
E einfaches Schachbrett generieren Java Basics - Anfänger-Themen 9
P Schachbrett Java Basics - Anfänger-Themen 7
P Schachbrett Spiel Nr. 01 Java Basics - Anfänger-Themen 17
P Schachbrett mit N x N Feldern Java Basics - Anfänger-Themen 11
B Schachbrett Java Basics - Anfänger-Themen 17
D Schachbrett frage Teil2 Java Basics - Anfänger-Themen 15
D Schachbrett frage Java Basics - Anfänger-Themen 3
D schachbrett aufbauen Java Basics - Anfänger-Themen 29
I Springer auf Schachbrett Java Basics - Anfänger-Themen 18
M Schachbrett Java Basics - Anfänger-Themen 31
B [Java] Schachbrett Frage Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben