Funkcja Określająca kolory pol na szachownicy

0

Siema pisze Szachy i mam taki problem z określeniem koloru pól na szachownicy napisałem funkcje jak poniżej:

public void ustawKoloryPol(){
        for(int i = 0 ; i <= 8 ; i++)
        {
            for(int j = 0 ; j <= 8 ; j++)
            {
                if((i+1) % 2 != 0 && (j+1) % 2 == 0){
                    białePole = true;
                    czarnePole = false;
                    kolorPola = "Biały";
                }


                if((i+1) % 2 == 0 && (j+1) % 2 == 0) {
                    czarnePole = true;
                    białePole = false;
                    kolorPola = "Czarny";
                }

                if((i+1) % 2 != 0 && (j+1) % 2 != 0){
                    czarnePole = true;
                    białePole = false;
                    kolorPola = "Czarny";
                }

                if((i+1) % 2 == 0 && (j+1) % 2 != 0){
                    białePole = true;
                    czarnePole = false;
                    kolorPola = "Biały";
                }



            }
        }

Ale w gdzieś mam błąd albo jest zła konstrukcja licze na jakąs podpowiedz:

screenshot-20211127110839.png

1

A po prostu (row + col) % 2 nie zadziała?

Wklej w Chrome dev tools:

var s = ""; for (var i = 0; i < 8; i++) { for (var j = 0; j < 8; j++) s += ((i + j) & 1) ? "X" : "O"; s += "\n"; }; console.log(s); 
0

Zrobiłem to w inny sposób w klasie board zrobiłem zmienna kolorPola na public i był dostęp z klasy board tam do kazdego obiektu Square w tablicy gameBoard Przypisałem kolor pola tak jak powinno być:

package Game;


public class Board {

    public Square[][] gameBoard = new Square[8][8];

    public Board(){

        for(int i = 0 ; i < gameBoard.length ; i++)
        {
            for(int j = 0 ; j < gameBoard.length ; j++)
            {

                gameBoard[i][j] = new Square(i,j,""+(i+1)+""+(j+1));
            }

        }

    }

    public void ustawKoloryPol(){
        for(int i = 0 ; i < 8 ; i++)
        {
            for(int j = 0 ; j < 8 ; j++)
            {
                if((i+1) % 2 == 0 && (j+1) % 2 == 0 || (i+1) % 2 != 0 && (j+1) % 2 != 0 ) {
                    //czarne
                    gameBoard[i][j].czarnePole = true;
                    gameBoard[i][j].białePole = false;
                    gameBoard[i][j].kolorPola = "Czarne";

                }

                if((i+1) % 2 != 0 && (j+1) % 2 == 0 || (i+1) % 2 == 0 && (j+1) % 2 != 0) {
                    //biale
                    gameBoard[i][j].białePole = true;
                    gameBoard[i][j].czarnePole = false;
                    gameBoard[i][j].kolorPola = "Białe";
                }
            }
        }
    }



    public void pokazDane()
    {
        for(int i = 0 ; i < gameBoard.length ; i++)
        {
            for(int j = 0 ; j < gameBoard.length ; j++)
            {
                ustawKoloryPol();
                gameBoard[i][j].pokazNazwyPol();
                System.out.print("       ");
            }
            System.out.println();
        }

    }

}


ale i tak dzięki za pomoc
screenshot-20211127134620.png

0

*gameBoard[i][j].czarnePole = true;
gameBoard[i][j].białePole = false;
gameBoard[i][j].kolorPola = "Czarne";
*

Strasznie to masakrycznie piszesz, określają po trzykroć to samo.

Leczy cię:

public enum Kolor { Biale, Czarne }; // koledzy nie się nie krzywia na PL nazwy

ps. twoja szachownica ma 9 pól ? * for(int i = 0 ; i <= 8 ; i++)*

1 użytkowników online, w tym zalogowanych: 0, gości: 1