From a2d1e2616f6a90d961843f92368c8136d978f0a9 Mon Sep 17 00:00:00 2001 From: CalciteM Team Date: Thu, 4 Jul 2019 02:05:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=B3=E4=B8=8A=E8=A7=92=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E6=A0=8F=E6=94=B9=E9=80=A0=E6=88=90=E8=AE=A1=E5=88=86=E6=A0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- NineChess/src/gamecontroller.cpp | 41 +++++++++++++++++++++++++------- NineChess/src/gamecontroller.h | 6 +++++ 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/NineChess/src/gamecontroller.cpp b/NineChess/src/gamecontroller.cpp index 7f878068..41f4e244 100644 --- a/NineChess/src/gamecontroller.cpp +++ b/NineChess/src/gamecontroller.cpp @@ -34,7 +34,9 @@ GameController::GameController(GameScene & scene, QObject * parent) : timeLimit(0), stepsLimit(0), ai1(1), - ai2(2) + ai2(2), + score1(-2), + score2(-2) { // 已在view的样式表中添加背景,scene中不用添加背景 // 区别在于,view中的背景不随视图变换而变换,scene中的背景随视图变换而变换 @@ -113,6 +115,20 @@ void GameController::gameReset() isEngine1 = false; isEngine2 = false; + // 询问是否认输 + if (score1 < 0 || score2 < 0) { + score1++; + score2++; + } else { + QMessageBox giveupMessageBox(QMessageBox::Warning, "Information", "认输吗?", QMessageBox::Yes | QMessageBox::No, NULL); + if (giveupMessageBox.exec() == QMessageBox::Yes) { + score2++; + } + } + + emit time1Changed(QString::number(score1, 10)); + emit time2Changed(QString::number(score2, 10)); + // 清除棋子 qDeleteAll(pieceList); pieceList.clear(); @@ -177,9 +193,9 @@ void GameController::gameReset() currentRow = 0; // 发出信号通知主窗口更新LCD显示 - QTime qtime = QTime(0, 0, 0, 0).addMSecs(remainingTime1); - emit time1Changed(qtime.toString("mm:ss.zzz")); - emit time2Changed(qtime.toString("mm:ss.zzz")); + //QTime qtime = QTime(0, 0, 0, 0).addMSecs(remainingTime1); + //emit time1Changed(qtime.toString("mm:ss.zzz")); + //emit time2Changed(qtime.toString("mm:ss.zzz")); // 发信号更新状态栏 message = QString::fromStdString(chess_.getTips()); @@ -489,11 +505,11 @@ void GameController::timerEvent(QTimerEvent *event) remainingTime2 = timeLimit * 60000 - remainingTime2; } - qt1 = QTime(0, 0, 0, 0).addMSecs(remainingTime1); - qt2 = QTime(0, 0, 0, 0).addMSecs(remainingTime2); + //qt1 = QTime(0, 0, 0, 0).addMSecs(remainingTime1); + //qt2 = QTime(0, 0, 0, 0).addMSecs(remainingTime2); - emit time1Changed(qt1.toString("mm:ss.zzz")); - emit time2Changed(qt2.toString("mm:ss.zzz")); + //emit time1Changed(qt1.toString("mm:ss.zzz")); + //emit time2Changed(qt2.toString("mm:ss.zzz")); // 如果胜负已分 if (chess_.whoWin() != NineChess::NOBODY) { @@ -510,6 +526,15 @@ void GameController::timerEvent(QTimerEvent *event) // 弹框 //QMessageBox::about(NULL, "游戏结果", message); + if (chess_.whoWin() == NineChess::PLAYER1) { + score1++; + } else if (chess_.whoWin() == NineChess::PLAYER2) { + score2++; + } + + emit time1Changed(QString::number(score1, 10)); + emit time2Changed(QString::number(score2, 10)); + // 播放音效 #ifndef DONOT_PLAY_WIN_SOUND playSound(":/sound/resources/sound/win.wav"); diff --git a/NineChess/src/gamecontroller.h b/NineChess/src/gamecontroller.h index d08c921e..0ba1811c 100644 --- a/NineChess/src/gamecontroller.h +++ b/NineChess/src/gamecontroller.h @@ -210,6 +210,12 @@ private: // 玩家2剩余时间(毫秒) int remainingTime2; + // 玩家1赢盘数 + int score1; + + // 玩家2赢盘数 + int score2; + // 用于主窗口状态栏显示的字符串 QString message;