題目:籃球記分計時系統(tǒng)
一? 實訓(xùn)任務(wù)
利用Qt-Creator編程設(shè)計一個籃球記分計時界面開發(fā)系統(tǒng),實現(xiàn)24秒一節(jié)次的倒計時籃球記
分牌。
二? 實訓(xùn)要求
1、基本要求
(1)按照題目要求使用Qt編程,獨立設(shè)計系統(tǒng)所需界面,實現(xiàn)24秒倒計時的籃球記分計
時界面開發(fā)系統(tǒng)。
(2)通過按鈕控件實現(xiàn)“運行/暫?!惫δ?,同時還可通過按鈕或其它控件實現(xiàn)A,B兩隊加
分操作,犯規(guī)減分操作。
(3)停表計時就是:比賽開始后,犯規(guī),罰球,暫停,都要停表。累計時間到24秒后,該
節(jié)次結(jié)束,共4節(jié)次。
2、擴展部分
(1)擴展多位數(shù)據(jù)顯示,能實現(xiàn).99的顯示。
(2)加時操作功能。
(3)真實場景仿真展示等。
三? 實訓(xùn)題目原理
?????? 倒計時設(shè)計的原理框圖如圖3所示。
?
圖3 倒計時系統(tǒng)框圖
部分程序:
#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; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//設(shè)置倒計時初始值
? ? jieshu=1; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //總共四節(jié),初始值為1
? ? state=0; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//設(shè)置比賽狀態(tài)初始值,為0表示暫停
? ? range=24; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //倒計時范圍初始值為24秒
? ? jieshuzhuangtai=0; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//比賽初始結(jié)束狀態(tài)為0
? ? haomiaojishi=1000; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//毫秒計時器的初始值
? ? break1=break2=0; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//犯規(guī)次數(shù)初始值
? ? 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); ? ? ? ? ? ? ? ? ? //設(shè)置毫秒計時器設(shè)備顯示位數(shù)
? ? ui->label_6->setText("Section"+QString::number(jieshu));//顯示這是第幾節(jié)比賽,總共四節(jié)
? ? teamonescore=teamtwoscore=0; ? ? ? ? ? ? ? ? ? ? ? ? ? ?//初始化兩個隊伍的初始比分為0;
? ? timer2->start(1); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //定時器2開始工作,間隔為1毫秒
}
CountBoard::~CountBoard() ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //析構(gòu)函數(shù),釋放資源,防止資源內(nèi)耗泄露
{
? ? delete ui;
}
void CountBoard::haomiao()
{
? ? if(state==1) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//比賽狀態(tài)為1,(正在比賽)
? ? {
? ? ? ? haomiaojishi--; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //毫秒計時的數(shù)值-1
? ? ? ? if(haomiaojishi==0) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //如果毫秒計時參數(shù)為0,執(zhí)行
? ? ? ? {
? ? ? ? ? ? haomiaojishi=1000; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//讓毫秒計時參數(shù)重新變?yōu)?000
? ? ? ? ? ? ui->haomiaojishiqi->display(haomiaojishi); ? ? ?//顯示在計時器控件上
? ? ? ? }
? ? ? ? ui->haomiaojishiqi->display(haomiaojishi); ? ? ? ? ?//顯示
? ? }
}
void CountBoard::jishiqi()
{
? ? time--;//倒計時-1
? ? ui->daojishi->display(time);
? ? if(time==0)//如果倒計時到了0,執(zhí)行
? ? {
? ? ? ? timer->stop();//計時器停止工作,每一節(jié)比賽完等待重新開始比賽
? ? ? ? timer2->stop();
? ? ? ? //timer3->stop();
? ? ? ? ui->textEdit->setText("STOP");//在空間上顯示比賽暫停的標(biāo)志stop
? ? ? ? state=0;//把比賽狀態(tài)參數(shù)改為0,以便通知其他函數(shù)執(zhí)行該參數(shù)為0狀態(tài)下的情況
? ? ? ? time=range;//重置倒計時
? ? ? ? haomiaojishi=1000;
? ? ? ? ui->haomiaojishiqi->display(haomiaojishi);
? ? ? ? jieshu++;//每一節(jié)結(jié)束就加一節(jié)
? ? ? ? if(jieshu>=5&&teamonescore==teamtwoscore) ? ? ? //如果第4節(jié)以后結(jié)束的時隊伍一和隊伍二比分相同,進入加時賽
? ? ? ? {
? ? ? ? ? ? ui->label_6->setText("Addgame!"); ? ? ? ? ? //在空間上顯示正在加時賽
? ? ? ? }
? ? ? ? else if(jieshu>=5&&teamonescore!=teamtwoscore)//如果第4節(jié)以后結(jié)束的時隊伍一和隊伍二比分不相同,結(jié)束比賽
? ? ? ? {
? ? ? ? ? ? ui->textEdit->setText("Over!!!"); ? ? ? ? ? //顯示比賽結(jié)束
? ? ? ? ? ? jieshuzhuangtai=1; ? ? ? ? ? ? ? ? ? ? ? ? ?//結(jié)束狀態(tài)設(shè)置為1,以便節(jié)數(shù)+1函數(shù)識別是否可執(zhí)行
? ? ? ? ? ? haomiaojishi=1000;
? ? ? ? ? ? ui->haomiaojishiqi->display(haomiaojishi);
? ? ? ? }else{
? ? ? ? ? ? ui->label_6->setText("Section"+QString::number(jieshu));
? ? ? ? }
? ? }
}
void CountBoard::on_lone_clicked()
{
? ? if(state==1) ? ?//比賽狀態(tài)為1,(正在比賽時),執(zhí)行
? ? {
? ? ? ? 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);
? ? }
}
?
資料包括:
?
需要完整的資料可在我的資源里下載,也可以加入我的紛傳圈子,里面有資源壓縮包的百度網(wǎng)盤下載地址及提取碼。文章來源:http://www.zghlxwxcb.cn/news/detail-491701.html
紛傳點擊用微信打開即可,過程有點繁瑣請見諒。文章來源地址http://www.zghlxwxcb.cn/news/detail-491701.html
到了這里,關(guān)于嵌入式操作系統(tǒng)--籃球記分計時系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!