forked from XMuli/ChineseChess
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMachineGame.h
executable file
·52 lines (44 loc) · 1.95 KB
/
MachineGame.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/*
* Copyright (C) 2019~2020 偕臧 All rights reserved.
*
* Author: xmuli(偕臧) [email protected]
*
* github: https://github.com/xmuli
* blogs: https://xmuli.tech
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://touwoyimuli.github.io/>.
*/
#ifndef MACHINEGAME_H
#define MACHINEGAME_H
#include "ChessBoard.h"
#include "ChessStep.h"
#include <QVector>
class MachineGame : public ChessBoard
{
public:
MachineGame();
~MachineGame();
void chooseOrMovePieces(int tempID, int& row, int& col); //辅助函: 选棋或移动棋子
void saveStep(int moveID, int checkedID, int row, int col, QVector<ChessStep*>& steps); //保存棋子步骤
void getAllPossibleMoveStep(QVector<ChessStep*>& steps); //获得所有可能的移动步骤(击杀)
void getAllPossibleMoveStepAndNoKill(QVector<ChessStep*>& steps); //获得所有可能的移动步骤(不击杀)
virtual void mousePressEvent(QMouseEvent *); //鼠标点击事件
void clickPieces(int checkedID, int& row, int& col);
void fakeMove(ChessStep* step); //假装移动棋子
void unFakeMove(ChessStep* step); //撤回先前假装移动棋子的步骤
int calcScore(); //计算最好的局面分
ChessStep* getBestMove(); //获得最好的移动步骤
void machineChooseAndMovePieces(); //机器 黑方时间: 进行选棋+下棋
};
#endif // MACHINEGAME_H