void ShootGameWidget::on_pushButton_start_clicked()
{
if(!_pOpenCVManager->startCapture(0, 800, 600))
{
QMessageBox::information(0, "错误", "检测摄像头失败");
return;
}
ui->label_title->setVisible(false);
ui->pushButton_start->setVisible(false);
ui->pushButton_out->setVisible(false);
ui->groupBox->setVisible(false);
_hitFlag = false;
_score = 0;
_currentTime = _totalTime;
_running = true;
_result = false;
_pTimer->start();
}
void ShootGameWidget::paintEvent(QPaintEvent *event)
{
if(ui->pushButton_stopCameraTest->isEnabled() || _running)
{
QPainter painter(this);
painter.fillRect(rect(), Qt::black);
painter.setPen(QPen(Qt::white, 1));
painter.drawRect(_margin,
_margin,
rect().width() - _margin * 2,
rect().height() - _margin * 2);
QPen pen = painter.pen();
pen.setWidth(10);
pen.setColor(Qt::green);
painter.setPen(pen);
painter.drawEllipse(_centerPoint, _r/2, _r/2);
// painter.setPen(QPen(Qt::red, 10));
// painter.drawPoint(_centerPoint);
if(_running)
{
painter.setPen(QPen(Qt::white, 1));
painter.drawText(300, 50, QString("得分: %1").arg(_score));
painter.drawText(500, 50, QString("倒计时: %1").arg(_currentTime));
if(_hitFlag)
{
painter.drawText(700, 50, QString("已击中"));
}else{
painter.drawText(700, 50, QString("未击中"));
}
}
}
if(_result)
{
QPainter painter(this);
painter.setPen(QPen(Qt::black, 4));
QFont font = painter.font();
font.setPixelSize(64);
painter.setFont(font);
painter.drawText(rect(), Qt::AlignCenter, QString("游戏结束,您的得分为 %1 !!!").arg(_score));
}
}
void ShootGameWidget::slot_timeOut()
{
if(_running)
{
_currentTime--;
if(_currentTime == 0)
{
if(!_pOpenCVManager->stopCapture())
{
}
ui->label_title->setVisible(true);
ui->pushButton_start->setVisible(true);
ui->pushButton_out->setVisible(true);
ui->groupBox->setVisible(true);
_hitFlag = false;
_currentTime = _totalTime;
_running = false;
_pTimer->stop();
_result = true;
}
update();
}
}