Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Schachbrett

Empfohlene Antworten

Veröffentlicht

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

Woran haperts jetzt?

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

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.

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? :)

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

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

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

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

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

Da haste natürlich Recht ;)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.