Schachbrett Beschriftung

Status
Nicht offen für weitere Antworten.
M

Majin

Gast
Hallo Leute

folgendes Problem liegt an:

Ich möchte ein Schachbrett mit Beschriftung der einzelnen Felder im Browser als Java-Applet darstellen.
Das Brett an sich mit Feldern in schwarz-weiß habe ich schon.
Das Problem ist eher die Beschriftung. Wie kann ich wenn ich Variablen in einer For-Schleife runterlaufen lasse bspw. von 8, in Buchstaben umwandeln?

Ich brauche irgendwie 2 For Schleifen die 2 Variablen enthalten, eine die die Buchstaben darstellt von a-h und eine für die Zahlen 1-8.

Und wie kann ich das ganze dann ausgeben, der g.drawString Befehl klappt irgendwie nur mit Text und nicht mit Variablen...

Vieln Dank für euere Hilfe
 

André Uhres

Top Contributor
Majin hat gesagt.:
..Ich möchte ein Schachbrett mit Beschriftung
Code:
//package paint; 
/* 
* SchachbrettTest1.java 
*/ 
import java.awt.*; 
import javax.swing.*; 
public class SchachbrettTest1 extends JApplet { 
    public void init() { 
        setSize(500, 500); 
        schachBrett = new Schachbrett(); 
        getContentPane().add(schachBrett, BorderLayout.CENTER); 
    } 
    private Schachbrett schachBrett; 
} 
class Schachbrett extends JPanel{ 
    public Schachbrett(){ 
        setLayout(new BorderLayout()); 
        JPanel brett = new JPanel(new GridLayout(8,8)); 
        JPanel feld = null; 
        boolean sw = false; 
        for (int i = 0; i < 8; i++) { 
            for (int j = 0; j < 8; j++) { 
                feld = new JPanel(); 
                sw = !sw; 
                feld.setBackground(sw?WHITE:BLACK); 
                brett.add(feld); 
            } 
            sw = !sw; 
        } 
        add(brett); 
        add(new BrettBeschriftung(VERTICAL), BorderLayout.WEST); 
        add(new BrettBeschriftung(VERTICAL), BorderLayout.EAST); 
        add(new BrettBeschriftung(HORIZONTAL), BorderLayout.SOUTH); 
        add(new BrettBeschriftung(HORIZONTAL), BorderLayout.NORTH); 
    } 
    private final Color WHITE = new Color(255,206,158); 
    private final Color BLACK = new Color(209,139,71); 
    private final boolean HORIZONTAL = true; 
    private final boolean VERTICAL = false; 
    class BrettBeschriftung extends JPanel{ 
        private String[] letters = {"a", "b", "c", "d", "e", "f", "g", "h"}; 
        public BrettBeschriftung(boolean horizontal){ 
            setPreferredSize(new Dimension(20,20)); 
            JLabel schrift = null; 
            if(horizontal){ 
                setLayout(new BorderLayout()); 
                JPanel horizontalPanel = new JPanel(); 
                horizontalPanel.setLayout(new GridLayout(1, 8)); 
                for (int i = 0; i < 8; i++) { 
                    schrift = new JLabel(letters[i]); 
                    schrift.setHorizontalAlignment(JLabel.CENTER); 
                    horizontalPanel.add(schrift); 
                } 
                add(horizontalPanel); 
                JPanel fillWest = new JPanel(); 
                JPanel fillEast = new JPanel(); 
                fillWest.setPreferredSize(new Dimension(20,20)); 
                fillEast.setPreferredSize(new Dimension(20,20)); 
                add(fillWest, BorderLayout.WEST); 
                add(fillEast, BorderLayout.EAST); 
            }else{ 
                setLayout(new GridLayout(8, 1)); 
                for (int i = 8; i > 0; i--) { 
                    schrift = new JLabel(""+i); 
                    schrift.setHorizontalAlignment(JLabel.CENTER); 
                    add(schrift); 
                } 
            } 
        } 
    } 
}
 
G

Guest

Gast
Vielen Dank für Ihre Hilfe, aber das ist mir etwas zu kompliziert.
Außerdem fände ich es schöner wenn die Beschriftung innerhalb der Felder platziert ist, mit a8, a7,--h2, h1.
Das Problem dabei finde ich nämlich ist einen Buchstaben zusammen mit einer Zahl darszustellen.
 

The_S

Top Contributor
Code:
public class Schachbrett {
	
	public static void main(String[] args) {
		
		System.out.println("/***********/");
		System.out.println("/Schachbrett/");
		System.out.println("/***********/\n");
		for (int i = 1; i < 9; i++) {
			for (int j = 65; j < 73; j++) {
				System.out.print((char)j + String.valueOf(i) + " | ");
			}
			System.out.println();
			for (int j = 0; j < 8; j++) {
				System.out.print("-----");
			}
			System.out.println();
		}
	}
}

Sowas?
 

André Uhres

Top Contributor
Anonymous hat gesagt.:
Vielen Dank für Ihre Hilfe, aber das ist mir etwas zu kompliziert.
Außerdem fände ich es schöner wenn die Beschriftung innerhalb der Felder platziert ist, mit a8, a7,--h2, h1.
Das Problem dabei finde ich nämlich ist einen Buchstaben zusammen mit einer Zahl darszustellen.
So kompliziert ist das auch wieder nicht :D . Wenn du Erklärungen dazu haben willst, musst du nur fragen :wink:
Meine Darstellung vom Schachbrett ist auch allgemein üblich: http://de.wikipedia.org/wiki/Schach
Eine Beschriftung in den Feldern würde ja zum grossen Teil von den Figuren wieder verdeckt werden.
 
G

Guest

Gast
Das ist schon klar. Ist halt ne Aufgabe die wir von unserem Dozenten bekommen haben, aber ich bin blutiger Anfänger in Java und habe wirklich keine Ahnung wie ich die Buchstaben mit den Zahlen zusammen da hinein bekommen soll.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben