嵌入式操作系统--篮球记分计时系统

题目:篮球记分计时系统

  实训任务

利用Qt-Creator编程设计一个篮球记分计时界面开发系统,实现24秒一节次的倒计时篮球记

分牌。

  实训要求

1、基本要求

(1)按照题目要求使用Qt编程,独立设计系统所需界面,实现24秒倒计时的篮球记分计

时界面开发系统。

(2)通过按钮控件实现“运行/暂停”功能,同时还可通过按钮或其它控件实现A,B两队加

分操作,犯规减分操作。

(3)停表计时就是:比赛开始后,犯规,罚球,暂停,都要停表。累计时间到24秒后,该

节次结束,共4节次。

2、扩展部分

(1)扩展多位数据显示,能实现.99的显示。

(2)加时操作功能。

(3)真实场景仿真展示等。

  实训题目原理

       倒计时设计的原理框图如图3所示。

 

图3 倒计时系统框图

部分程序:

#include "countboard.h"
#include "ui_countboard.h"
#include<QTimer>
#include<QtGui>
CountBoard::CountBoard(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::CountBoard)
{
    ui->setupUi(this);
    time=24;                                            //设置倒计时初始值
    jieshu=1;                                           //总共四节,初始值为1
    state=0;                                            //设置比赛状态初始值,为0表示暂停
    range=24;                                           //倒计时范围初始值为24秒

    jieshuzhuangtai=0;                                  //比赛初始结束状态为0
    haomiaojishi=1000;                                  //毫秒计时器的初始值
    break1=break2=0;                                    //犯规次数初始值
    timer=new QTimer(this);                             //初始定时器
    timer2=new QTimer(this);

    connect(timer,SIGNAL(timeout()),this,SLOT(jishiqi()));
    connect(timer2,SIGNAL(timeout()),this,SLOT(haomiao()));
    ui->haomiaojishiqi->setDigitCount(4);                   //设置毫秒计时器设备显示位数
    ui->label_6->setText("Section"+QString::number(jieshu));//显示这是第几节比赛,总共四节
    teamonescore=teamtwoscore=0;                            //初始化两个队伍的初始比分为0;
    timer2->start(1);                                       //定时器2开始工作,间隔为1毫秒
}

CountBoard::~CountBoard()                                   //析构函数,释放资源,防止资源内耗泄露
{
    delete ui;
}

void CountBoard::haomiao()
{
    if(state==1)                                            //比赛状态为1,(正在比赛)
    {
        haomiaojishi--;                                     //毫秒计时的数值-1
        if(haomiaojishi==0)                                 //如果毫秒计时参数为0,执行
        {
            haomiaojishi=1000;                              //让毫秒计时参数重新变为1000
            ui->haomiaojishiqi->display(haomiaojishi);      //显示在计时器控件上
        }
        ui->haomiaojishiqi->display(haomiaojishi);          //显示
    }
}
void CountBoard::jishiqi()
{
    time--;//倒计时-1
    ui->daojishi->display(time);
    if(time==0)//如果倒计时到了0,执行
    {
        timer->stop();//计时器停止工作,每一节比赛完等待重新开始比赛
        timer2->stop();
        //timer3->stop();
        ui->textEdit->setText("STOP");//在空间上显示比赛暂停的标志stop
        state=0;//把比赛状态参数改为0,以便通知其他函数执行该参数为0状态下的情况
        time=range;//重置倒计时
        haomiaojishi=1000;
        ui->haomiaojishiqi->display(haomiaojishi);
        jieshu++;//每一节结束就加一节
        if(jieshu>=5&&teamonescore==teamtwoscore)       //如果第4节以后结束的时队伍一和队伍二比分相同,进入加时赛
        {
            ui->label_6->setText("Addgame!");           //在空间上显示正在加时赛

        }
        else if(jieshu>=5&&teamonescore!=teamtwoscore)//如果第4节以后结束的时队伍一和队伍二比分不相同,结束比赛
        {
            ui->textEdit->setText("Over!!!");           //显示比赛结束
            jieshuzhuangtai=1;                          //结束状态设置为1,以便节数+1函数识别是否可执行
            haomiaojishi=1000;
            ui->haomiaojishiqi->display(haomiaojishi);

        }else{
            ui->label_6->setText("Section"+QString::number(jieshu));
        }

    }
}


void CountBoard::on_lone_clicked()
{
    if(state==1)    //比赛状态为1,(正在比赛时),执行
    {
        teamonescore=teamonescore+1; //队伍1比分加1

        ui->teamoneboard->display(teamonescore);//显示
    }
}

void CountBoard::on_ltwo_clicked()
{
    if(state==1)
    {
        teamonescore=teamonescore+2;//队伍1比分加2

        ui->teamoneboard->display(teamonescore);
    }
}

void CountBoard::on_lthree_clicked()
{
    if(state==1)
    {
        teamonescore=teamonescore+3;//队伍1比分加3
        ui->teamoneboard->display(teamonescore);
    }
}
 

资料包括:

 

需要完整的资料可在我的资源里下载,也可以加入我的纷传圈子,里面有资源压缩包的百度网盘下载地址及提取码。

纷传点击用微信打开即可,过程有点繁琐请见谅。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白茶丫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值