[LIB-9] Chessboard squares sorting
[chesshog.git] / src / main / java / org / hedgecode / chess / position / Position.java
1 /*
2  * Copyright (c) 2018. Developed by Hedgecode.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.hedgecode.chess.position;
18
19 import java.util.Map;
20
21 /**
22  *
23  *
24  * @author Dmitry Samoshin aka gotty
25  */
26 public interface Position {
27
28     Map<Square, ColorPiece> getSquares();
29
30     Map<Square, ColorPiece> getSquares(SquareSort sorting);
31
32     Map<Square, ColorPiece> getSquarePieces(Color color);
33
34     Map<Square, ColorPiece> getSquarePieces(Color color, Piece piece);
35
36     void setPiece(Color color, Piece piece, Square square);
37
38     void setPiece(ColorPiece colorPiece, Square square);
39
40     Color getMove();
41
42     void setMove(Color color);
43
44     boolean isDiagram();
45
46     Castle getCastle(Color color);
47
48     void setCastle(Color color, Castle castle);
49
50     Square getEnPassant();
51
52     void setEnPassant(Square square);
53
54     int getHalfMove();
55
56     void setHalfMove(int count);
57
58     int getFullMove();
59
60     void setFullMove(int number);
61
62     void initial();
63
64     void clear();
65
66     default void setPawn(Color color, Square square) {
67         setPiece(color, Piece.PAWN, square);
68     }
69
70     default void setPawns(Color color, Square... squares) {
71         for(Square square : squares)
72             setPiece(color, Piece.PAWN, square);
73     }
74
75     default void setKnight(Color color, Square square) {
76         setPiece(color, Piece.KNIGHT, square);
77     }
78
79     default void setBishop(Color color, Square square) {
80         setPiece(color, Piece.BISHOP, square);
81     }
82
83     default void setRook(Color color, Square square) {
84         setPiece(color, Piece.ROOK, square);
85     }
86
87     default void setQueen(Color color, Square square) {
88         setPiece(color, Piece.QUEEN, square);
89     }
90
91     default void setKing(Color color, Square square) {
92         setPiece(color, Piece.KING, square);
93     }
94
95 }