/media/sda-magnetic/david/Dok-15-2023-11-27/fernuni-hagen/cs-i-ii/old-cs-2-03/java-real/chess/chessv1/Chess.java


public class Chess {
    static final int xmin = 0;
    static final int ymin = 0;
    static final int xmax = 7;
    static final int ymax = 7;
    static final int xn = 8;
    static final int yn = 8;
    
    static final int north = 0;
    static final int east = 1;
    static final int south = 2;
    static final int west = 3;
    
    static final boolean lives = true;
    static final boolean death = false;
    
    static final boolean black = true;
    static final boolean white = false;
    
    Chess() {
        Board brd = new Board();
        brd.printBoard();
    }    
        
    class Board {
        Figure [][] board = new Figure [yn][xn];
        Gambler wht;
        Gambler blk;
        
        Board () {
            int i, j;
            
            for (i = ymin;  i <= ymax;  i++)
                for (j = xmin;  j <= xmax;  j++)
                    new Empty (i, j);
            
            this.wht = new Gambler (white);
            this.blk = new Gambler (black);
        
        }
        
        void printBoard () {
            int i, j;
            
            for (i = ymin;  i <= ymax;  i++) {
                for (j = xmin;  j <= xmax;  j++)
                    System.out.print(board[i][j].getname() + " ");
                System.out.println ();
            }
        }

        class Gambler {
            boolean color;
            Gambler (boolean color) {
                this.color = color;
                
                if (color == white) {
                    Rook rook1 =  new Rook (0, 0);
                    Rook rook2 = new Rook (0, 7);
                    Knight knight1 = new Knight (0, 1);
                    Knight knight2 = new Knight (0, 6);
                    Bishop bishop1 = new Bishop (0, 2);
                    Bishop bishop2 = new Bishop (0, 5);
                    King king = new King (0, 3);;
                    Queen queen = new Queen (0, 4);
                    Pawn pawn1 = new Pawn (1, 0);
                    Pawn pawn2 = new Pawn (1, 1);
                    Pawn pawn3 = new Pawn (1, 2);
                    Pawn pawn4 = new Pawn (1, 3);
                    Pawn pawn5 = new Pawn (1, 4);
                    Pawn pawn6 = new Pawn (1, 5);
                    Pawn pawn7 = new Pawn (1, 6);
                    Pawn pawn8 = new Pawn (1, 7);
                }
                else if (color == black) {
                    Rook rook1 =  new Rook (7, 0);
                    Rook rook2 = new Rook (7, 7);
                    Knight knight1 = new Knight (7, 1);
                    Knight knight2 = new Knight (7, 6);
                    Bishop bishop1 = new Bishop (7, 2);
                    Bishop bishop2 = new Bishop (7, 5);
                    King king = new King (7, 3);;
                    Queen queen = new Queen (7, 4);
                    Pawn pawn1 = new Pawn (6, 0);
                    Pawn pawn2 = new Pawn (6, 1);
                    Pawn pawn3 = new Pawn (6, 2);
                    Pawn pawn4 = new Pawn (6, 3);
                    Pawn pawn5 = new Pawn (6, 4);
                    Pawn pawn6 = new Pawn (6, 5);
                    Pawn pawn7 = new Pawn (6, 6);
                    Pawn pawn8 = new Pawn (6, 7);                
                }
            }
        }
        
        class Figure {
            int x;
            int y;
            boolean alive;
            String name;
        
            int getx() {return x;}
            int gety() {return y;}
            boolean isalive() {return alive;}
            void setdeath() {this.alive = death;}
            void setalive() {this.alive = lives;}
            void setx(int x) { this.x = x;}
            void sety(int y) {this.y = y;}   
            
            String getname () {return name;}
            void setname (String name) {this.name = name;}
            
        }
    
        class Pawn extends Figure {
            Pawn (int x, int y) {
                setalive();
                setx (x);
                sety (y);
                setname ("pawn");
                board [x][y] = this;
            }    
        }
        class Rook extends Figure {
            Rook(int x, int y) {
                setalive();
                setx (x);
                sety (y);
                setname ("rook");
                board [x][y] = this;
            }
        }
        class Knight extends Figure {
            Knight (int x, int y) {
                setalive();
                setx (x);
                sety (y);
                setname ("knight");
                board [x][y] = this;
            }    
        }
        class Bishop extends Figure {
            Bishop (int x, int y) {
                setalive();
                setx (x);
                sety (y);
                setname ("bishop");
                board [x][y] = this;
            }
        }
        class King extends Figure {
            King (int x, int y) {
                setalive();
                setx (x);
                sety (y);
                setname ("king");
                board [x][y] = this;
            }
        }
        class Queen extends Figure {
            Queen (int x, int y) {
                setalive();
                setx (x);
                sety (y);
                setname ("queen");
                board [x][y] = this;
            }
        }
        class Empty extends Figure {
            Empty (int x, int y) {
                setalive();
                setx (x);
                sety (y);
                setname ("empty");
                board [x][y] = this;
            }
        }
    }
}