Schachbrett mit N x N Feldern

paukenpaule

Mitglied
Hallo,

ich muss ein Schachbrett mit NxN Feldern erstellen, mit gleichbleibenden Gesamtmaßen, die einzelnen Felder müssen mitskalieren.

Mit google habe ich folgenden Code für die Erstellung eines Schachbretts gefunden:
Java:
public class Schachbrett extends Applet {
   //Das Schachbrett wird so gezeichnet:
   //Zuerst wird ein schwarzes Brett 
   //(inkl. 2 Pixel breiten Rahmen)
   //gezeichnet. Danach werden die weißen Quadrate gesetzt
   
   final int x = 50; //x-Koordinate der linken oberen Ecke 
                     //(ohne Rahmen)
   final int y = 50; //y-Koordiante der linken oberen Ecke 
                     //(ohne Rahmen)


   public void paint (Graphics g) {
      //Zeichnen des grossen shcwarzen Quadrats (inkl. Rahmen)
      g.setColor(Color.BLACK);
      g.fillRect(x-2,y-2,164,164);
      //Zeichnen der weissen Quadrate
      g.setColor(Color.WHITE);
      //zuerst die weise Quadrate, die in der ersten 
      //Spalte beginnen
      for (int i=0; i<4; i++)
         for (int j=0; j<4; j++)
             g.fillRect(x+j*40,y+i*40, 20,20);
      // dann die, die in der zweiten Spalte beginnen
      for (int i=0; i<4; i++)
         for (int j=0; j<4; j++)
             g.fillRect(x+20+j*40,y+20+i*40, 20,20);
   }
}

Allerdings ist dieses ja nicht veränderbar.

Ich habe versucht eine Main-Methode einzubauen damit ich die Werte durch ein N ersetzen kann
Java:
	public static void main(String[] args) {
			
		int n = Integer.parseInt(args [0]);

Allerdings erkennt Java mein deklariertes n nicht in der paint Methode, wie kann ich diese mit einander verbinden?

Gruß
 
Ich kann auch nicht erkennen, dass n irgendwo verwendet würde oO

Zeig mal den gesamten Quellkod.
 
Java:
import java.applet.Applet;
import java.awt.*;


public class Schachbrett extends Applet {
   //Das Schachbrett wird so gezeichnet:
   //Zuerst wird ein schwarzes Brett (inkl. 2 Pixel breiten Rahmen)
   //gezeichnet. Danach werden die weißen Quadrate gesetzt
   
   final int x = 0; //x-Koordinate der linken oberen Ecke (ohne Rahmen)
   final int y = 1; //y-Koordiante der linken oberen Ecke (ohne Rahmen)


   public void paint (Graphics g) {
      //Zeichnen des grossen shcwarzen Quadrats (inkl. Rahmen)
      g.setColor(Color.BLACK);
      g.fillRect(x-4,y-2,164,140);
      //Zeichnen der weissen Quadrate
      g.setColor(Color.RED);
      //zuerst die weise Quadrate, die in der ersten Spalte beginnen
      for (int i=0; i<n; i++)
         for (int j=0; j<n; j++)
             g.fillRect(x+j*40,y+i*40, 20,20);
      // dann die, die in der zweiten Spalte beginnen
      for (int i=0; i<n; i++)
         for (int j=0; j<n; j++)
             g.fillRect(x+20+j*40,y+20+i*40, 20,20);
  
   public static void main(String args[]){
	  
    	  int n = Integer.parseInt(args[0]);
	  
      }
}

Also der Gesamte Quellcode funktioniert auch noch nicht, ich möchte erstmal nur die paint Methode der main Methode zuordnen, damit ich später "rumprobieren" kann.

Ich bin nen absolut blutiger Anfänger auf ner Uni die einem so ziemlich gar nichts erklärt:toll:

PS: hier mal nen beispiel, damit ihr seht wie es aussehen soll. Einmal für n=5 und n=8 zb. Es scheitert aber schon daran, das in den Zeilen der paint methode, n als nicht deklariert dasteht.
 
Zuletzt bearbeitet:
Dann solltest du folgendes, kostenloses, auch downloadbares Buch lesen: Galileo Computing :: Java ist auch eine Insel (8. Auflage) oder fünfzig euro investieren in "Java von Kopf bis Fuß" wenn du so wie ich etwas begriffsstutzig bist 😉

Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 6 Eigene Klassen schreiben
Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 6.2 Privatsphäre und Sichtbarkeit

Variablen haben einen Gültigkeitsbereich, in dem du auf sie zugreifen kannst. Dieser Gültigkeitsbereich kann eine Klasse oder eine Methode sein, außerhalb kennt man die Variable eben nicht. Wenn du eine Variable in einer Methode (wie hier main) deklarierst, ist sie auch nur dort gültig/bekannt.

Möchtest du nun innerhalb deiner Klasse auf eine Variable zugreifen, musst du sie auch dort deklarieren, beschreiben/initialisieren kannst du sie woanders. Die beiden Variablen x und y wurden hier ja außerhalb der Methoden deklariert und auch initialisiert. Dort wo die stehen, musst du auch dein n deklarieren.
 
Zuletzt bearbeitet von einem Moderator:
Habe nun mit Hilfe von Googel und einem Programmierass der mir versucht hat, den Code zu erklären folgendes gefunden:

Java:
public class Schachbrett {
    public static void main(String[] args) {  
    	
    	int felder = Integer.parseInt(args[0]); 
        StdDraw.setXscale(0, felder); 
        StdDraw.setYscale(0, felder); 
        
        for (int i = 0; i < felder; i++) { 
            for (int j = 0; j < felder; j++) { 
                if ((i + j) % 2 != 0) StdDraw.setPenColor(StdDraw.RED); 
                else                  StdDraw.setPenColor(StdDraw.BLACK); 
                StdDraw.filledSquare(i + .5, j + .5, .5); 
            } 
        } 
        StdDraw.show(); 
    } 
 
}

Nun ist folgendes Problem, dass IMMER das erste obere linke Kästchen rot sein muss.
Hat jemand eine Idee?
 
....;( :autsch:

Probiers doch mal
Java:
 if ((i + j) % 2 == 0)

oder einfach die Farben tauschen? :bae: :autsch:
 
ich hab ncoh nie wirklich mit applets gearbeitet...nur mal reingesehen...aber verwendet man in applets nicht eine [c]init();[/c] anstatt einer [c]main(String[] args);[/c] ?!
 
😀 na die aufgabe musst du bis 00.00 uhr fürn grünvogel abgegeben haben oder? 😀

ich komm auch nicht weiter 😉

PS: wollte ich mal gesagt haben 😉
 

Neue Themen


Zurück
Oben