Cute Chess 0.1
ncheckboard.h
1/*
2 This file is part of Cute Chess.
3 Copyright (C) 2008-2018 Cute Chess authors
4
5 Cute Chess is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 Cute Chess is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with Cute Chess. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#ifndef NCHECKBOARD_H
20#define NCHECKBOARD_H
21
22#include "standardboard.h"
23
24namespace Chess {
25
40class LIB_EXPORT NCheckBoard : public StandardBoard
41{
42 protected:
48 NCheckBoard(int n = 3);
49 public:
50 // Inherited from StandardBoard
51 virtual Board* copy() const;
52 virtual QString variant() const;
53 virtual QString defaultFenString() const;
54 virtual Result result();
55
57 int checksToWin(Side side) const;
58
59 protected:
60 // Inherited from StandardBoard
61 virtual void vInitialize();
62 virtual QString vFenIncludeString(FenNotation notation) const;
63 virtual bool vSetFenString(const QStringList& fen);
64 virtual void vMakeMove(const Move& move,
65 BoardTransition* transition);
66 virtual void vUndoMove(const Move& move);
67
69 int checkLimit() const;
70
71 private:
72 int m_checkLimit;
73 int m_checksToWin[2];
74 void setChecksToWin(int whiteCount, int blackCount);
75 void updateCheckCounters(Side side, int d);
76};
77
85class LIB_EXPORT ThreeCheckBoard : public NCheckBoard
86{
87 public:
88 ThreeCheckBoard();
89 virtual Board* copy() const;
90};
91
99class LIB_EXPORT FiveCheckBoard : public NCheckBoard
100{
101 public:
102 FiveCheckBoard();
103 virtual Board* copy() const;
104};
105
106} // namespace Chess
107#endif // NCHECKBOARD_H
Details of a board transition caused by a move.
Definition boardtransition.h:41
An internal chessboard class.
Definition board.h:58
FenNotation
Definition board.h:94
virtual Board * copy() const
Definition ncheckboard.cpp:189
A small and efficient chessmove class.
Definition move.h:43
virtual QString variant() const
Definition ncheckboard.cpp:38
NCheckBoard(int n=3)
Definition ncheckboard.cpp:27
int checksToWin(Side side) const
Definition ncheckboard.cpp:103
virtual void vUndoMove(const Move &move)
Definition ncheckboard.cpp:73
virtual Result result()
Definition ncheckboard.cpp:80
virtual QString defaultFenString() const
Definition ncheckboard.cpp:43
virtual bool vSetFenString(const QStringList &fen)
Definition ncheckboard.cpp:138
int checkLimit() const
Definition ncheckboard.cpp:92
virtual Board * copy() const
Definition ncheckboard.cpp:33
virtual void vMakeMove(const Move &move, BoardTransition *transition)
Definition ncheckboard.cpp:65
virtual QString vFenIncludeString(FenNotation notation) const
Definition ncheckboard.cpp:120
virtual void vInitialize()
Definition ncheckboard.cpp:49
The result of a chess game.
Definition result.h:35
The side or color of a chess player.
Definition side.h:36
StandardBoard()
Definition standardboard.cpp:1055
virtual Board * copy() const
Definition ncheckboard.cpp:182