当前位置: 首页 > article >正文

QT实现 倒计时猜数字小游戏 QT5.12.3环境 C++实现

代码:

game.h

#ifndef GAME_H
#define GAME_H

#include <QWidget>
#include <QtWidgets>
namespace Ui {
class game;
}

class game : public QWidget
{
    Q_OBJECT

public:
    explicit game(int time,QWidget *parent = nullptr);
    ~game();
    QTimer *timer;
    game *gameui;
    int answer; // 答案
    int gametime; // 倒计时
    QString result; // 输入的结果
    void timerEvent(QTimerEvent *event);
public slots:
    void timeout_slot();
private slots:
    void on_button_hint_clicked();
    void on_button1_clicked();
    void on_button_2_clicked();
    void on_button_3_clicked();
    void on_button_4_clicked();
    void on_button_5_clicked();
    void on_button_6_clicked();
    void on_button_7_clicked();
    void on_button_8_clicked();
    void on_button_9_clicked();
    void on_button_0_clicked();
    void on_button_enter_clicked();
private:
    Ui::game *ui;
};

#endif // GAME_H

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QtWidgets>
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_exit_button_clicked();
    void on_start_button_clicked();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

game.cpp

#include "game.h"
#include "ui_game.h"

game::game(int time,QWidget *parent) :
    QWidget(parent),
    ui(new Ui::game)
{
    ui->setupUi(this);
    timer = new QTimer(this);
    answer = rand() % 9000 + 1000; // 随机数
    result.clear();
    gametime = time;
    // 设置进度条
    ui->progressBar->setMinimum(0);//最小值
    ui->progressBar->setMaximum(gametime);//最大值
    ui->progressBar->setValue(gametime); //当前值

    connect(timer,&QTimer::timeout,this,&game::timeout_slot);
    timer->start(1000); // 1秒
}
game::~game()
{
    delete ui;
}

void game::timerEvent(QTimerEvent *event){}
// timeout_slot()
void game::timeout_slot()
{
    gametime--;
    if(gametime <= 0){
        timer->stop();
        QMessageBox::warning(this, "OVER","倒计时结束,游戏结束");
        this->close();
    }
    ui->progressBar->setValue(gametime);
}

// 提示button
void game::on_button_hint_clicked()
{
    QString str = "答案为:" + QString::number(answer);
    ui->textBrowser->setText(str); // 显示
    result.clear();
}
// button_1
void game::on_button1_clicked()
{
    result += "1"; // 加到result后面
    ui->textBrowser->setText(result);
}
// button_2
void game::on_button_2_clicked()
{
    result += "2"; // 加到result后面
    ui->textBrowser->setText(result);
}
// button_3
void game::on_button_3_clicked()
{
    result += "3"; // 加到result后面
    ui->textBrowser->setText(result);
}
// button_4
void game::on_button_4_clicked()
{
    result += "4"; // 加到result后面
    ui->textBrowser->setText(result);
}
// button_5
void game::on_button_5_clicked()
{
    result += "5"; // 加到result后面
    ui->textBrowser->setText(result);
}
// button_6
void game::on_button_6_clicked()
{
    result += "6"; // 加到result后面
    ui->textBrowser->setText(result);
}
// button_7
void game::on_button_7_clicked()
{
    result += "7"; // 加到result后面
    ui->textBrowser->setText(result);
}
// button_8
void game::on_button_8_clicked()
{
    result += "8"; // 加到result后面
    ui->textBrowser->setText(result);
}
// button_9
void game::on_button_9_clicked()
{
    result += "9"; // 加到result后面
    ui->textBrowser->setText(result);
}
// button_0
void game::on_button_0_clicked()
{
    if(result == "")   return ;
    result += "0"; // 加到result后面
    ui->textBrowser->setText(result);
}
// 回车button
void game::on_button_enter_clicked()
{
    if(result == "")    return ;
    int resultint = result.toInt();
    if(resultint == answer){
        ui->textBrowser->clear();
        QMessageBox::information(this, "闯关成功","回答正确!!!");
        this->close();
    }
    else if(resultint > answer){
        ui->textBrowser->setText("比答案大");
        result.clear();
    }
    else{
        ui->textBrowser->setText("比答案小");
        result.clear();
    }
}

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include "game.h"
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::on_exit_button_clicked()
{
    this->close();
}

void Widget::on_start_button_clicked()
{
    int time = ui->time_box->value(); // 获取倒计时
    game *gameui = new game(time); // 游戏界面
    this->close();
    gameui->show();
}

game.ui

widget.ui


输出:


http://www.kler.cn/a/412163.html

相关文章:

  • CTF之密码学(费纳姆密码)
  • C++ 二叉搜索树(Binary Search Tree, BST)深度解析与全面指南:从基础概念到高级应用、算法优化及实战案例
  • vscode下面python调试报错ImportError: cannot import name ‘Literal‘ from ‘typing‘
  • 【滑动窗口】找到字符串中所有字母异位词
  • 【Nginx】核心概念与安装配置解释
  • 周志华深度森林deep forest(deep-forest)最新可安装教程,仅需在pycharm中完成,超简单安装教程
  • 【Threejs进阶教程-着色器篇】9.顶点着色器入门
  • 大语言模型LLM的微调代码详解
  • Flask项目中PostgreSQL与Elasticsearch的批量更新
  • LLM PPT Translator
  • 笔记:Centos Nginx Jdk Mysql OpenOffce KkFile Minio安装部署
  • BC-Linux8.6上面离线手动安装Docker引擎
  • 使用docker搭建hysteria2服务端
  • 类文件结构详解.下
  • Qt | 开发技能提升档次哈
  • GoogleTest做单元测试
  • [小白系列]Ubuntu安装教程-安装NodeJS
  • k8s认证、授权
  • C#基础56-60
  • unity使用笔记
  • Python 数据结构对比:列表与数组的选择指南
  • 研0找实习【学nlp】15---我的后续,总结(暂时性完结)
  • 11.26 深度学习-激活函数
  • MFC图形函数学习11——路径层函数
  • springcloud中bootstrap.yml配置文件
  • 北京航空航天大学多模态自适应攀岩机器人:突破复杂地形挑战