91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 708KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-05-10
  • 語(yǔ)言: 其他
  • 標(biāo)簽: Qt??成三棋??AI??

資源簡(jiǎn)介

成三棋、九連棋、莫里斯九子棋的源碼。GUI框架Qt5,在Windows 10和Deepin Linux平臺(tái)下編譯通過(guò)。詳細(xì)介紹請(qǐng)看本人博客及開(kāi)源項(xiàng)目首頁(yè)。

資源截圖

代碼片段和文件信息

#include?
#include?“aithread.h“

AiThread::AiThread(int?id?Qobject?*parent)?:?QThread(parent)
????waiting_(false)
????aiDepth(8)
????aiTime(10)
{
????this->id?=?id;
????//?連接定時(shí)器啟動(dòng),減去118毫秒的返回時(shí)間
????connect(this?&AiThread::calcStarted?this?[=]()?{timer.start(aiTime?*?1000?-?118);?}?Qt::QueuedConnection);
????//?連接定時(shí)器停止
????connect(this?&AiThread::calcFinished?this?[=]()?{timer.stop();?}?Qt::QueuedConnection);
????//?連接定時(shí)器處理函數(shù)
????connect(&timer?&QTimer::timeout?this?&AiThread::act?Qt::QueuedConnection);
}

AiThread::~AiThread()
{
????stop();
????quit();
????wait();
}

void?AiThread::setAi(const?NineChess?&chess)
{
????mutex.lock();
????this->chess?=?&chess;
????ai_ab.setChess(*(this->chess));
????mutex.unlock();
}

void?AiThread::setAi(const?NineChess?&chess?int?depth?int?time)
{
????mutex.lock();
????this->chess?=?&chess;
????ai_ab.setChess(chess);
????aiDepth?=?depth;
????aiTime?=?time;
????mutex.unlock();
}

void?AiThread::run()
{
????//?測(cè)試用數(shù)據(jù)
//????int?iTemp?=?0;
????//?設(shè)一個(gè)標(biāo)識(shí),1號(hào)線程只管玩家1,2號(hào)線程只管玩家2
????int?i?=?0;

????qDebug()?<
????while?(!isInterruptionRequested())?{
????????mutex.lock();
????????if?(chess->whosTurn()?==?NineChess::Player1)
????????????i?=?1;
????????else?if?(chess->whosTurn()?==?NineChess::Player2)
????????????i?=?2;
????????else
????????????i?=?0;

????????if?(i?!=?id?||?waiting_)?{
????????????pauseCondition.wait(&mutex);
????????????mutex.unlock();
????????????continue;
????????}

????????ai_ab.setChess(*chess);
????????emit?calcStarted();
????????mutex.unlock();

????????ai_ab.alphaBetaPruning(aiDepth);
????????const?char?*?str?=?ai_ab.bestMove();
????????qDebug()?<????????if?(strcmp(str?“error!“))
????????????emit?command(str);
//????????qDebug()?<????????emit?calcFinished();

????????//?執(zhí)行完畢后繼續(xù)判斷
????????mutex.lock();
????????if?(!isInterruptionRequested())?{
????????????pauseCondition.wait(&mutex);
????????}
????????mutex.unlock();
????}
????qDebug()?<}

void?AiThread::act()
{
????if?(isFinished()?||?!isRunning())
????????return;

????mutex.lock();
????waiting_?=?false;
????ai_ab.quit();
????mutex.unlock();
}

void?AiThread::pause()
{
????mutex.lock();
????waiting_?=?true;
????mutex.unlock();
}

void?AiThread::resume()
{
????mutex.lock();
????waiting_?=?false;
????pauseCondition.wakeAll();
????mutex.unlock();
}

void?AiThread::stop()
{
????if?(isFinished()?||?!isRunning())
????????return;

????if?(!isInterruptionRequested())?{
????????requestInterruption();
????????mutex.lock();
????????waiting_?=?false;
????????ai_ab.quit();
????????pauseCondition.wakeAll();
????????mutex.unlock();
????}
}

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-12-23?13:21??NineChess\
?????文件????????4967??2018-12-23?13:21??NineChess\.gitignore
?????文件?????????677??2018-12-23?13:21??NineChess\History.txt
?????文件?????????597??2018-12-23?13:21??NineChess\Licence.txt
?????目錄???????????0??2018-12-23?13:21??NineChess\NineChess\
?????文件????????1430??2018-12-23?13:21??NineChess\NineChess\.qmake.stash
?????文件????????2340??2018-12-23?13:21??NineChess\NineChess\NineChess.rc
?????文件???????92306??2018-12-23?13:21??NineChess\NineChess\ninechess.ico
?????文件????????1102??2018-12-23?13:21??NineChess\NineChess\ninechess.pro
?????文件???????23624??2018-12-23?13:21??NineChess\NineChess\ninechess.pro.user
?????文件????????1400??2018-12-23?13:21??NineChess\NineChess\ninechess.sln
?????文件???????51149??2018-12-23?13:21??NineChess\NineChess\ninechess.vcxproj
?????文件????????9305??2018-12-23?13:21??NineChess\NineChess\ninechess.vcxproj.filters
?????文件????????1074??2018-12-23?13:21??NineChess\NineChess\ninechess.vcxproj.user
?????文件????????2459??2018-12-23?13:21??NineChess\NineChess\ninechesswindow.qrc
?????文件???????28536??2018-12-23?13:21??NineChess\NineChess\ninechesswindow.ui
?????文件????????1274??2018-12-23?13:21??NineChess\NineChess\resource.h
?????目錄???????????0??2018-12-23?13:21??NineChess\NineChess\resources\
?????目錄???????????0??2018-12-23?13:21??NineChess\NineChess\resources\icon\
?????文件?????????228??2018-12-23?13:21??NineChess\NineChess\resources\icon\1.png
?????文件?????????528??2018-12-23?13:21??NineChess\NineChess\resources\icon\2.png
?????文件?????????757??2018-12-23?13:21??NineChess\NineChess\resources\icon\ActualSizeHS.png
?????文件?????????380??2018-12-23?13:21??NineChess\NineChess\resources\icon\Black.png
?????文件?????????736??2018-12-23?13:21??NineChess\NineChess\resources\icon\BreakpointHS.png
?????文件?????????390??2018-12-23?13:21??NineChess\NineChess\resources\icon\DocumentHS.png
?????文件?????????621??2018-12-23?13:21??NineChess\NineChess\resources\icon\EditInformationHS.png
?????文件?????????665??2018-12-23?13:21??NineChess\NineChess\resources\icon\EditTableHS.png
?????文件?????????865??2018-12-23?13:21??NineChess\NineChess\resources\icon\Error.png
?????文件?????????527??2018-12-23?13:21??NineChess\NineChess\resources\icon\First.png
?????文件?????????560??2018-12-23?13:21??NineChess\NineChess\resources\icon\FlipHorizontalHS.png
?????文件?????????597??2018-12-23?13:21??NineChess\NineChess\resources\icon\FlipVerticalHS.png
............此處省略71個(gè)文件信息

評(píng)論

共有 條評(píng)論