编写五子棋程序时如何添加下棋时的音效_QT:完整的人机五子棋游戏(五)回合倒计时和音效...

编写五⼦棋程序时如何添加下棋时的⾳效_QT:完整的⼈机五⼦棋游戏(五)回合倒计时和⾳效...
2.5回合倒计时
在对弈时,每个回合都要有时间的限定,⼀般都是⽤的圆形进度条和中间秒数显⽰。
QT当中没有圆形的进度条,所以需要⾃⼰设计。圆形设计进度条传送门:圆形进度条设计
圆形进度条需要时间轴搭配使⽤。
定义⾃定义进度条类和时间轴类,需添加对应头⽂件。
ArcPaint * progressStepPrompt;
QTimeLine * timeLine;
②创建两个实例,并设置时间轴运⾏状态。
旋转座椅设置帧范围为15,则刚好是1秒钟1帧,帧改变时,会有信号发射,⾃定义槽函数接收信号,则帧改变时,⾃动更新倒计时即可;
时间轴具有值改变信号(值范围0.0~1.0),刚好定义槽函数接收显⽰圆弧(0~360°);
时间轴具有时间运⾏完成信号,刚好定义槽函数接收判断当前回合是否超时。
progressStepPrompt = new ArcPaint(this);
timeLine = new QTimeLine(15000,this); // 时间轴总时间15秒
timeLine->setFrameRange(0, 15); // 帧范围0~15
timeLine->setDirection(QTimeLine::Backward); // 时间轴向后⾛,默认向前
timeLine->setCurveShape(QTimeLine::LinearCurve); // 时间轴速度不变,默认先慢后快,最后慢
⾃定义槽函数,与信号连接如下:
// timeLine
connect(timeLine, SIGNAL(frameChanged(int)), this, SLOT(updateFrame(int)));
connect(timeLine, SIGNAL(valueChanged(qreal)), this, SLOT(timeValueChanged(qreal)));
connect(timeLine, SIGNAL(finished()), this, SLOT(timefinished()));
槽函数实现:
快干毛巾
1 void FiveChess::updateFrame(int frame)
2 {
3 static int i = 0;
4 if (frame <= 5)
5 {
6 soundList->setCurrentIndex(2);
7 music->play();
8 }
9 progressStepPrompt->setCenterText(frame);
10 // qDebug() << "fram change!" << i++;
11 }
12
13 void FiveChess::timeValueChanged(qreal value)
14 {
lc谐振放大器15 progressStepPrompt->setArcAngle(360 * value);
16 }
17植物伟哥
18 void FiveChess::timefinished()
19 {
20 CurrentRound cur = currentRound == player ? computer: player;
21 GameOverPrompt(cur);
液压压力机22 progressStepPrompt->setVisible(false);
23 chessboard->setDropFlag(false);
24 gameOverFlag = true;
25 if(currentRound==player) {
26 ui->msgLabel->setText("超时失败!");
27 } else {
28 ui->msgLabel->setText("对⽅超时!");
29 }
30 }
slot function
③回合未进⾏时,进度条禁能,不显⽰,当回合到来时,根据当前回合,获取玩家头像位置坐标,然后使能和显⽰,并开启时间轴。圆圈会依时间进⾏圆弧倒退并倒计时显⽰。更换回合时,来回显⽰。
1 void FiveChess::pregressPrompt()
2 {
3 progressStepPrompt->setVisible(true);
4 if (currentRound == computer) {
5 timeLine->stop();
稳压二极管封装
6 progressStepPrompt->move(ui->computerLabel->pos()+QPoint(-5,6));
7 timeLine->start();
8 } else {
9 timeLine->stop();
10 progressStepPrompt->move(ui->playerLabel->pos()+QPoint(-5,6));
11 timeLine->start();
12 }
13 }
2.6⾳效
①⼏个简短MP3⾳效⽂件,添加进资源⽂件。
②定义媒体播放类和播放列表,除了添加头⽂件外,还需要在⼯程⽂件(.pro)中添加模块:QT += multimedia
1 QMediaPlayer * music;
2 QMediaPlaylist * soundList;
③初始化中创建媒体播放器和播放列表实例,在播放列表中添加⾳效曲⽬并设置为单曲⼀次模式,把播放列表给媒体播放器。
1 music = new QMediaPlayer;
2 soundList = new QMediaPlaylist;
3 soundList->addMedia(QMediaContent(QUrl("qrc:/sound/press.mp3")));
4 soundList->addMedia(QMediaContent(QUrl("qrc:/sound/start.mp3")));
5 soundList->addMedia(QMediaContent(QUrl("qrc:/sound/clock.mp3")));
6 soundList->addMedia(QMediaContent(QUrl("qrc:/sound/win.mp3")));
7 soundList->setPlaybackMode(QMediaPlaylist::CurrentItemOnce);
8 music->setPlaylist(soundList);
④在需要显⽰⾳效的地⽅,修改当前播放的下标,进⾏播放。播放列表下标与添加顺序对应,此处范围为0~3
1 soundList->setCurrentIndex(0);
2 music->play();
⑤开始游戏时,提⽰开始⾳效;落⼦时,提⽰落⼦⾳效;倒计时最后5秒,提⽰落⼦⾳效;结束时,提⽰⾳效。

本文发布于:2024-09-22 12:27:02,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/220488.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议