ui: 去除深度设置
This commit is contained in:
parent
11916ae98b
commit
b4f4d80070
|
@ -33,7 +33,6 @@ using namespace std;
|
|||
AiThread::AiThread(int color, QObject *parent) :
|
||||
QThread(parent),
|
||||
position(nullptr),
|
||||
depth(2),
|
||||
timeLimit(3600)
|
||||
{
|
||||
this->us = color;
|
||||
|
@ -77,12 +76,11 @@ void AiThread::setAi(Position *p)
|
|||
mutex.unlock();
|
||||
}
|
||||
|
||||
void AiThread::setAi(Position *p, Depth d, int tl)
|
||||
void AiThread::setAi(Position *p, int tl)
|
||||
{
|
||||
mutex.lock();
|
||||
this->position = p;
|
||||
ai.setPosition(p);
|
||||
depth = d;
|
||||
timeLimit = tl;
|
||||
mutex.unlock();
|
||||
}
|
||||
|
@ -246,7 +244,7 @@ void AiThread::run()
|
|||
emitCommand();
|
||||
} else {
|
||||
#endif
|
||||
if (ai.search(depth) == 3) {
|
||||
if (ai.search() == 3) {
|
||||
loggerDebug("Draw\n\n");
|
||||
strCommand = "draw";
|
||||
emitCommand();
|
||||
|
|
|
@ -51,7 +51,7 @@ protected:
|
|||
|
||||
public:
|
||||
void setAi(Position *p);
|
||||
void setAi(Position *p, Depth depth, int time);
|
||||
void setAi(Position *p, int time);
|
||||
|
||||
Server *getServer()
|
||||
{
|
||||
|
@ -63,11 +63,6 @@ public:
|
|||
return client;
|
||||
}
|
||||
|
||||
Depth getDepth()
|
||||
{
|
||||
return depth;
|
||||
}
|
||||
|
||||
int getTimeLimit()
|
||||
{
|
||||
return timeLimit;
|
||||
|
@ -98,7 +93,6 @@ public: // TODO: Change to private
|
|||
AIAlgorithm ai;
|
||||
|
||||
private:
|
||||
Depth depth;
|
||||
int timeLimit;
|
||||
QTimer timer;
|
||||
|
||||
|
|
|
@ -66,9 +66,9 @@ AIAlgorithm::~AIAlgorithm()
|
|||
//delete pos;
|
||||
}
|
||||
|
||||
Depth AIAlgorithm::changeDepth(Depth origDepth)
|
||||
Depth AIAlgorithm::changeDepth()
|
||||
{
|
||||
Depth d = origDepth;
|
||||
Depth d = 0;
|
||||
|
||||
#ifdef _DEBUG
|
||||
Depth reduce = 0;
|
||||
|
@ -183,11 +183,11 @@ void AIAlgorithm::setPosition(Position *p)
|
|||
}
|
||||
|
||||
#ifdef ALPHABETA_AI
|
||||
int AIAlgorithm::search(Depth depth)
|
||||
int AIAlgorithm::search()
|
||||
{
|
||||
Value value = VALUE_ZERO;
|
||||
|
||||
Depth d = changeDepth(depth);
|
||||
Depth d = changeDepth();
|
||||
|
||||
time_t time0 = time(nullptr);
|
||||
srand(static_cast<unsigned int>(time0));
|
||||
|
|
|
@ -158,7 +158,7 @@ public:
|
|||
}
|
||||
|
||||
#ifdef ALPHABETA_AI
|
||||
int search(Depth depth);
|
||||
int search();
|
||||
const char *nextMove();
|
||||
#endif // ALPHABETA_AI
|
||||
|
||||
|
@ -215,7 +215,7 @@ public: /* TODO: Move to private or protected */
|
|||
public:
|
||||
const char *moveToCommand(Move move);
|
||||
protected:
|
||||
Depth changeDepth(Depth origDepth);
|
||||
Depth changeDepth();
|
||||
|
||||
public:
|
||||
MovePicker *movePicker { nullptr };
|
||||
|
|
|
@ -362,22 +362,19 @@ void GameController::setEngine2(bool arg)
|
|||
setEngine(2, arg);
|
||||
}
|
||||
|
||||
void GameController::setAiDepthTime(Depth depth1, int time1, Depth depth2, int time2)
|
||||
void GameController::setAiDepthTime(int time1, int time2)
|
||||
{
|
||||
stopAndWaitAiThreads();
|
||||
|
||||
aiThread[BLACK]->setAi(position, depth1, time1);
|
||||
aiThread[WHITE]->setAi(position, depth2, time2);
|
||||
aiThread[BLACK]->setAi(position, time1);
|
||||
aiThread[WHITE]->setAi(position, time2);
|
||||
|
||||
startAiThreads();
|
||||
}
|
||||
|
||||
void GameController::getAiDepthTime(Depth &depth1, int &time1, Depth &depth2, int &time2)
|
||||
void GameController::getAiDepthTime(int &time1, int &time2)
|
||||
{
|
||||
depth1 = aiThread[BLACK]->getDepth();
|
||||
time1 = aiThread[BLACK]->getTimeLimit();
|
||||
|
||||
depth2 = aiThread[WHITE]->getDepth();
|
||||
time2 = aiThread[WHITE]->getTimeLimit();
|
||||
}
|
||||
|
||||
|
|
|
@ -126,8 +126,8 @@ public:
|
|||
return &manualListModel;
|
||||
}
|
||||
|
||||
void setAiDepthTime(Depth depth1, int time1, Depth depth2, int time2);
|
||||
void getAiDepthTime(Depth &depth1, int &time1, Depth &depth2, int &time2);
|
||||
void setAiDepthTime(int time1, int time2);
|
||||
void getAiDepthTime(int &time1, int &time2);
|
||||
|
||||
void humanGiveUp();
|
||||
|
||||
|
|
|
@ -961,14 +961,10 @@ void MillGameWindow::on_actionEngine_E_triggered()
|
|||
auto *groupBox2 = new QGroupBox(dialog);
|
||||
|
||||
auto *hLayout1 = new QHBoxLayout;
|
||||
auto *label_depth1 = new QLabel(dialog);
|
||||
auto *spinBox_depth1 = new QSpinBox(dialog);
|
||||
auto *label_time1 = new QLabel(dialog);
|
||||
auto *spinBox_time1 = new QSpinBox(dialog);
|
||||
|
||||
auto *hLayout2 = new QHBoxLayout;
|
||||
auto *label_depth2 = new QLabel(dialog);
|
||||
auto *spinBox_depth2 = new QSpinBox(dialog);
|
||||
auto *label_time2 = new QLabel(dialog);
|
||||
auto *spinBox_time2 = new QSpinBox(dialog);
|
||||
|
||||
|
@ -976,17 +972,11 @@ void MillGameWindow::on_actionEngine_E_triggered()
|
|||
|
||||
// 设置各个控件数据
|
||||
groupBox1->setTitle(tr("玩家1 AI设置"));
|
||||
label_depth1->setText(tr("深度"));
|
||||
spinBox_depth1->setMinimum(1);
|
||||
spinBox_depth1->setMaximum(99);
|
||||
label_time1->setText(tr("限时"));
|
||||
spinBox_time1->setMinimum(1);
|
||||
spinBox_time1->setMaximum(3600);
|
||||
|
||||
groupBox2->setTitle(tr("玩家2 AI设置"));
|
||||
label_depth2->setText(tr("深度"));
|
||||
spinBox_depth2->setMinimum(1);
|
||||
spinBox_depth2->setMaximum(99);
|
||||
label_time2->setText(tr("限时"));
|
||||
spinBox_time2->setMinimum(1);
|
||||
spinBox_time2->setMaximum(3600);
|
||||
|
@ -1002,12 +992,8 @@ void MillGameWindow::on_actionEngine_E_triggered()
|
|||
vLayout->addWidget(buttonBox);
|
||||
groupBox1->setLayout(hLayout1);
|
||||
groupBox2->setLayout(hLayout2);
|
||||
hLayout1->addWidget(label_depth1);
|
||||
hLayout1->addWidget(spinBox_depth1);
|
||||
hLayout1->addWidget(label_time1);
|
||||
hLayout1->addWidget(spinBox_time1);
|
||||
hLayout2->addWidget(label_depth2);
|
||||
hLayout2->addWidget(spinBox_depth2);
|
||||
hLayout2->addWidget(label_time2);
|
||||
hLayout2->addWidget(spinBox_time2);
|
||||
|
||||
|
@ -1016,31 +1002,22 @@ void MillGameWindow::on_actionEngine_E_triggered()
|
|||
connect(buttonBox, SIGNAL(rejected()), dialog, SLOT(reject()));
|
||||
|
||||
// 目前数据
|
||||
Depth depth1, depth2;
|
||||
int time1, time2;
|
||||
gameController->getAiDepthTime(depth1, time1, depth2, time2);
|
||||
spinBox_depth1->setValue(depth1);
|
||||
spinBox_depth2->setValue(depth2);
|
||||
gameController->getAiDepthTime(time1, time2);
|
||||
spinBox_time1->setValue(time1);
|
||||
spinBox_time2->setValue(time2);
|
||||
|
||||
// 新设数据
|
||||
if (dialog->exec() == QDialog::Accepted) {
|
||||
Depth depth1_new, depth2_new;
|
||||
int time1_new, time2_new;
|
||||
|
||||
depth1_new = static_cast<Depth>(spinBox_depth1->value());
|
||||
depth2_new = static_cast<Depth>(spinBox_depth2->value());
|
||||
|
||||
time1_new = spinBox_time1->value();
|
||||
time2_new = spinBox_time2->value();
|
||||
|
||||
if (depth1 != depth1_new ||
|
||||
depth2 != depth2_new ||
|
||||
time1 != time1_new ||
|
||||
if (time1 != time1_new ||
|
||||
time2 != time2_new) {
|
||||
// 重置AI
|
||||
gameController->setAiDepthTime(depth1_new, time1_new, depth2_new, time2_new);
|
||||
gameController->setAiDepthTime(time1_new, time2_new);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue