Zum Inhalt springen

Empfohlene Beiträge

Geschrieben (bearbeitet)

Hallo,

habe einen Code von einem Freund bekommen und möchte ihn anpassen. Bei der Ausgabe des Schachbretts sollen die buchstabenzahlenkombinationen in den schachfeldern stehen abwechselnd in Weiß/Schwarz von links nach rechts a1 b1 c1 etc nächstes zeile a2 b2 c2:

import java.awt.*; 

import javax.swing.*; 

public class schachbretttest extends JApplet { 

    public void init() { 

        setSize(512, 512); 

        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,255,255); 

    private final Color BLACK = new Color(0,0,0); 

    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); 

                } 

            } 

        } 

    } 

}

vielen dank für eure hilfe

Bearbeitet von mle1988
Geschrieben (bearbeitet)
Woran haperts jetzt?

an der ausgabe, das die zahlen und nummern links bzw oben neben den feldern stehen :( anstatt in den feldern (von links nach rechts a1 b1 c1 ... h1 etc. nächste zeile a2 b2 c2 ... h2)

Bearbeitet von mle1988
Geschrieben

So spontan würd ichs mitner if kette versuchen in ner methode.

public static void printText (int bla){

if ( bla == 0 ) print " A";

else if ( bla == 1 ) print " B";

else if ( bla == 2 ) print " C";

usw.

}

Damit gehst eben das ganze Array durch.

Geschrieben
So spontan würd ichs mitner if kette versuchen in ner methode.

public static void printText (int bla){

if ( bla == 0 ) print " A";

else if ( bla == 1 ) print " B";

else if ( bla == 2 ) print " C";

usw.

}

Damit gehst eben das ganze Array durch.

vielen dank. Könntest du das bitte oben in den code einfügen? :)

Geschrieben

Das ist kein Quelltext, den man einfach irgendwo einfügt und dann gehts.

Das ist kein Hausaufgabenforum und wir erwarten ein wenig Eigeninitiative von Dir. Welches konkrete Problem hast Du mit o.g. Quelltext und was hast Du selbst schon zur Lösung unternommen? Wenn Du auf der Suche nach einem Dienstleister bist, dann schreib mir eine PM und ich teile Dir meinen Tagessatz mit und setz das auf Stundenbasis um.

Peter

Geschrieben

Um den a1,b1,... in die oberste Zeile zu schreiben und dann in die nächste a2,b2,usw machst du das am besten mit einem counter, hier ein Bsp:

Wenn du unten a1,b1... und dann drüber a2,b2 usw haben willst, musst du nur die schleife von unten nach oben durchgehen...

int counter=1;

for (int i = 7; i <= 0; i--) {

schrift = new JLabel(letters+""+counter);

schrift.setHorizontalAlignment(JLabel.CENTER);

horizontalPanel.add(schrift);

counter++;

}

counter = 0;

Code nicht getestet, aber denke sollte gehen

Geschrieben
Um den a1,b1,... in die oberste Zeile zu schreiben und dann in die nächste a2,b2,usw machst du das am besten mit einem counter, hier ein Bsp:

Wenn du unten a1,b1... und dann drüber a2,b2 usw haben willst, musst du nur die schleife von unten nach oben durchgehen...

int counter=1;

for (int i = 7; i <= 0; i--) {

schrift = new JLabel(letters+""+counter);

schrift.setHorizontalAlignment(JLabel.CENTER);

horizontalPanel.add(schrift);

counter++;

}

counter = 0;

Code nicht getestet, aber denke sollte gehen

wunderbar klappt! vielen dank

Geschrieben

Mensch die Edit-Beschränkung ist echt blöd in dem Forum :-D

Habs falsch verstanden + nen Fehler drin gehabt, so müssts aber gehen x)

int counter=1;

...

...

for (int i = 7; i <= 0; i--) {

schrift = new JLabel(letters+""+counter);

schrift.setHorizontalAlignment(JLabel.CENTER);

horizontalPanel.add(schrift);

}

counter++;

if (counter == 8) counter = 1;

//Hö? es klappt? aber der andere macht doch was anderes eig :-D

Geschrieben

Das dürfte auch aus einem anderen Grund noch nicht funktionieren:

for (int i = 7; i <= 0; i--) { 

Ich glaube, hier hast Du aus Versehen ein "<=" statt dem ">=" verwendet. Du willst ja von oben runter zählen und deshalb ist die Bedingung "solange i größer gleich 0 ist".

Peter

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...