Schachbrettmuster

Status
Nicht offen für weitere Antworten.

oje

Neues Mitglied
Hallo!;)

Ich will ein Schachbrettmuster generieren. Mein Problem ist das ich irgendwie trotz Lesens von Onlinequellen noch nciht wirklich den Dreh raushab, wie ich da so richtig herangehen soll;(
Ich hab die Vorgabe, das ganze mit fillRect und setColor von java.awt.Graphics umzusetzen.

So, das ist der Anfangsquelltext, der mir ein weisses Quadrat herausgibt, Ziel ist ja abwechselnd weiss/schwarze Felder zu erzeugen.
Ich würde - ganz in "nichtobjektorientierter Manier" irgendwie ne Schleife einbauen, um 64 Felder zu erzeugen.
Mein Problem sind die ZUsammenhänge, wie krieg ich ein zweites Rechteck auf so'n Frame?

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

public class Schach extends JComponent {

  /** Let us request a size of 100*100 (instead of 0*0). */
  public Dimension getPreferredSize() {
    return new Dimension(100, 100);
  }

  /** Override paintComponent to paint a black rectangle. */
  protected void paintComponent(Graphics g) {
    g.setColor(Color.black);
    g.fillRect(10, 10, 50, 50);
  }

  public static void main(String[] args) {
    JFrame aJFrame = new JFrame("Schachbrett");
    aJFrame.getContentPane().add(new BlackRect(), BorderLayout.CENTER);
    aJFrame.getContentPane().add(new WhiteRect(), BorderLayout.CENTER);
    aJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    aJFrame.pack();
    aJFrame.setVisible(true);
  }
}

Ich hoffe, ich konnte ein bisschen verständlich machen, ws mein Problem ist.
Das Lesen von unterschiedlichen Quellen finde ich eher verwirrend, da dort jeweils immer unterschiedliche Vorkenntnisse vorhanden sein müssen.. und irgendwo dreh ich mich da im Kreis;(

Danke und Gruß
LiLLy
 

Wildcard

Top Contributor
Einfachste Methode:
Mach ne Schleife die die Reihen abläuft.
In die Schleife kommt ne Schleife die die Spalten abläuft.
Jenachdem ob Spaltenindex*Zeilenindex gerade oder ungerade ist wechselst du die Farbe.
Oder einfach ein Image von einem Schachbrett nehmen und das zeichnen :wink:
 

Bert Brenner

Bekanntes Mitglied
Genau, wie Wildcard schreibt. Du kannst mehr als einmal Graphics#fillRect benutzen.

Hier ein Beispiel:

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

public class ChessPanel extends JPanel {
  
  public void paint(final Graphics g){
    final int fieldSize = Math.min(this.getHeight()/8, this.getWidth()/8);
    for (int x = 0; x < 8; x++) {
      for (int y = 0; y < 8; y++) {
        g.setColor((x%2==0 ^ y%2==0 ? Color.BLACK : Color.WHITE));
        g.fillRect(x*fieldSize, y*fieldSize, fieldSize, fieldSize);
      }
    }
  }

  public static void main(String[] args) {
    final JFrame frame = new JFrame("ChessPanel");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(new ChessPanel());
    frame.setSize(400,300);
    frame.setVisible(true);
  }
}
 

oje

Neues Mitglied
Klasse, vielen Dank..jetzt weiss ich in welche Richtung ich denken muss!

Gruss
LiLLy
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben