QT点名器与你画我猜小项目

别小看任何人,越不起眼的人往往会做些让人想不到的事。

你画我猜

你来比划我来猜

规则:一局游戏180s,答对得分+1,题目数+1;答错题目+1,不加分;显示得分

原型图

代码细节

#include "widget.h"
#include "ui_widget.h"
#include <QTimer>
#include <QString>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    //连接开始游戏槽函数,隐藏对,错按钮,隐藏题目数,得分数
    connect(ui->start_btn,SIGNAL(clicked(bool)),this,SLOT(timer()));
    ui->false_btn->hide();
    ui->true_btn->hide();
    ui->num->hide();
    ui->sum->hide();
    //连接对按钮槽函数,实现题目数+1,得分+1
    connect(ui->true_btn,SIGNAL(clicked(bool)),this,SLOT(true_ti()));
    //连接错按钮槽函数,实现题目数+1,得分+0
    connect(ui->false_btn,SIGNAL(clicked(bool)),this,SLOT(false_ti()));
}

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

void Widget::timer()
{
    timerid = new QTimer(this);
    timerid->start(1000);
    connect(timerid,&QTimer::timeout,this,&Widget::setTimetext);
    //间隔时间
    ui->false_btn->show();
    ui->true_btn->show();
    ui->start_btn->hide();
    ui->num->show();
    ui->sum->show();
    //开始答题,显示题目,显示答题数
    ui->ti_label->setText(chengyu[rand() % 14]);
    QString question = "第题";
    question.insert(1,QString::number(nums));
    ui->num->setText(question);
}

void Widget::setTimetext()
{
    static int ti = 180;
    ti--;
    if(ti <= 0)
    {
        //停止定时器,显示成绩
        timerid->stop();
        QString defen = "得分:";
        defen.append(QString::number(sums));
        ui->ti_label->setText(defen);
        //显示开始按钮,隐藏对,错按钮
        ui->start_btn->show();
        ui->false_btn->hide();
        ui->true_btn->hide();
        //题目数清零,得分清零,倒计时回退
        ti = 180;
        nums = 1;
        sums = 0;
        QString question = "第题";
        question.insert(1,QString::number(nums));
        ui->num->setText(question);
        ui->sum->setText("得分:");
    }
    ui->jishi->setText(QString::number(ti));
}

void Widget::true_ti()
{
    nums++;
    ui->num->setText(QString::number(nums));
    sums++;
    ui->sum->setText(QString::number(sums));
    //更换题目,更新答题数,更新得分数
    QString question = "第题";
    question.insert(1,QString::number(nums));
    ui->num->setText(question);
    ui->ti_label->setText(chengyu[rand() % 14]);
    QString defen = "得分:";
    defen.insert(3,QString::number(sums));
    ui->sum->setText(defen);
}

void Widget::false_ti()
{
    nums++;
    ui->num->setText(QString::number(nums));
    //答错之后更换题目
    QString question = "第题";
    question.insert(1,QString::number(nums));
    ui->num->setText(question);
    ui->ti_label->setText(chengyu[rand() % 14]);
    ui->ti_label->setText(chengyu[rand() % 14]);
}
 头文件
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPushButton>
#include <QString>
#include <QTimer>
#include "stdlib.h"
#include "time.h"
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

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


private:
    Ui::Widget *ui;
    QTimer* timerid;
    int nums=1;
    int sums=0;
    QString chengyu[14]={"唯我独尊","天下第一","如火如荼","一席之地","日新月异","天马行空","未雨绸缪","人山人海","心血来潮","雪上加霜","雪中送炭","天衣无缝","发扬光大","风云人物"};
public slots:
    void timer();
    void setTimetext();
    void true_ti();
    void false_ti();
};

#endif // WIDGET_H
效果图

点名器

原型图

代码
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setWindowTitle("点名器");
    srand(time(NULL));
    timerid = new QTimer(this);
    ui->zhanting->hide();
    connect(timerid,SIGNAL(timeout()),this,SLOT(mingname()));
    connect(ui->kaishi,SIGNAL(clicked(bool)),this,SLOT(start()));
    connect(ui->zhanting,SIGNAL(clicked(bool)),this,SLOT(stoptime()));
}

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

void Widget::start()
{
    timerid->start(60);
    ui->kaishi->hide();
    ui->zhanting->show();
}

void Widget::stoptime()
{
    timerid->stop();
    ui->kaishi->show();
    ui->zhanting->hide();
}

void Widget::mingname()
{
    QString name[11]={"x","xx","xx","#","##","###","@","@@","@@@","$","$$"};
    int x=rand() % 11;
    ui->mingdan->setText(name[x]);
}
头文件
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPushButton>
#include <stdlib.h>
#include <time.h>
#include <QTimer>
#include <QString>
#include <QDebug>
namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
    QTimer *timerid;

private:
    Ui::Widget *ui;
public slots:
    void start();
    void stoptime();
    void mingname();
};

#endif // WIDGET_H
效果图

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值