经过几天的qt视频学习,基本掌握了时间,信号和槽以及qt定时器的使用,还有QT UI设计器的一些布局,自己根据上课流程,写了一个小游戏,基本还算可以。ui布局基本都是使用设计器完成的,下面是部分源代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QTime>
#include<QMessageBox>
#include<qstring.h>
#include<QDebug>
#include<QMovie>
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);ui->stackedWidget->setCurrentWidget(ui->page);   //ui设计中使用stacked控件创建多个页面,首页默认index(0),显示首页/*游戏失败动画初始化*/startmovie.setFileName(":/new/prefix1/85ccde71gw1fasliemtifg208c05phdt.gif");    ui->label_3->setMovie(&startmovie);ui->label_3->setScaledContents(true);/*游戏成功动画初始化 */winmovie.setFileName(":/new/prefix1/-48482abb2408b8fd.gif");ui->label_4->setMovie(&winmovie);ui->label_4->setScaledContents(true);//  ui->stackedWidget->setCurrentIndex(2);connect(ui->pushButton,&QPushButton::clicked,this,&MainWindow::on_startbutton_clicked); //开始游戏的信号函数connect(ui->pushButton_2,&QPushButton::clicked,this,&MainWindow::on_endbutton_clicked);  //结束槽/*button 0~ 9对应的信号*/connect(ui->button0,&QPushButton::clicked,this,&MainWindow::delnum);connect(ui->button1,&QPushButton::clicked,this,&MainWindow::delnum);connect(ui->button2,&QPushButton::clicked,this,&MainWindow::delnum);connect(ui->button3,&QPushButton::clicked,this,&MainWindow::delnum);connect(ui->button4,&QPushButton::clicked,this,&MainWindow::delnum);connect(ui->button5,&QPushButton::clicked,this,&MainWindow::delnum);connect(ui->button6,&QPushButton::clicked,this,&MainWindow::delnum);connect(ui->button7,&QPushButton::clicked,this,&MainWindow::delnum);connect(ui->button8,&QPushButton::clicked,this,&MainWindow::delnum);connect(ui->button9,&QPushButton::clicked,this,&MainWindow::delnum);connect(ui->button_del,&QPushButton::clicked,this,&MainWindow::on_button_del_clicked);  //删除信号connect(ui->button_piont,&QPushButton::clicked,this,&MainWindow::on_button_piont_clicked); //提示信号connect(ui->action,&QAction::triggered,this,&MainWindow::on_action_triggered);connect(ui->action_2,&QAction::triggered,this,&MainWindow::on_action2_triggered);connect(ui->action_3,&QAction::triggered,this,&MainWindow::on_action3_triggered);}/*游戏开始槽函数*/
void MainWindow::on_startbutton_clicked()
{gametime=ui->comboBox->currentText().toInt();  //首先从combobox读取里面的值,然后转化为int类型(gametime为全局成员)qDebug("%d",gametime);  //用于调试看读取成功没ui->stackedWidget->setCurrentWidget(ui->page_2); //按钮按下后,显示第二个界面,即游戏界面int num; //定义int变量来存放随机数qsrand(QTime(0,0,0).secsTo(QTime::currentTime())); //while((num=qrand()%10000)<999); //显示0~10000内随机数,并且剔除小于四位数的数值randStr = QString::number(num); //将生成的随机数转化为字符串 ui->progressBar->setMaximum(0); //设置进度条最小值为0ui->progressBar->setMaximum(gametime); //进度条最大值为gametimeui->progressBar->setValue(gametime); //设置进度条当前值为gametimegametimeid=0; //gametimeid初始化为0(全局成员)gametimeid=startTimer(1000);//设置定时器时间间隔为1s,每一秒进入定时器函数一次resultStr.clear(); //清除输入结果ui->textEdit->clear();//清除文本框}/**/
void MainWindow::timerEvent(QTimerEvent *event)
{if(event->timerId()==gametimeid) //判断gametimeid=0是否到时{gametime--;  //每过1s,游戏时间减1ui->progressBar->setValue(gametime); //更新进度条显示if(gametime==0)   //当游戏时间为0{overtimeid=0;  killTimer(gametimeid);  //清除定时器QMessageBox::information(this,"游戏失败!","朋友,时间到了,下把再见!!"); startmovie.start(); //失败动画开始ui->stackedWidget->setCurrentWidget(ui->page_3);//显示失败动画界面overtimeid=startTimer(2000);  //失败动画持续时间}}else if(event->timerId()==overtimeid)  //失败动画定时器服务函数{startmovie.stop();         killTimer(overtimeid);ui->stackedWidget->setCurrentWidget(ui->page); //2s后回到主界面}else if(event->timerId()==wintimeid)  //胜利动画定时器服务函数{winmovie.stop();killTimer(wintimeid);ui->stackedWidget->setCurrentWidget(ui->page); }
}/*游戏结束按钮槽函数*/
void MainWindow::on_endbutton_clicked()
{this->close();}/*button 0~9 的 处理槽函数*/
void MainWindow::delnum()
{QObject *mysender=sender(); //sender函数判断那个摁下 QPushButton *p=(QPushButton *)mysender;  //强制转化if (p!=NULL){QString numstr = p->text(); //得到按下的值resultStr+=numstr; //每次按下后字符串拼接if(resultStr.size()==1&&resultStr=="0") //对首个按下的数为0,不作处理{resultStr.clear();}if(resultStr.size()<=4)  //当按下数为设定位数时开始判断{ui->textEdit->setText(resultStr);        if(resultStr.size()==4){if(resultStr>randStr){ui->textEdit->setText("猜的大了点!");}if(resultStr<randStr){ui->textEdit->setText("猜的小了点!");}if(resultStr==randStr)  //猜中之后开始游戏胜利的动画{wintimeid=0;ui->textEdit->setText("恭喜 ,你猜对了");killTimer(gametimeid);QMessageBox::information(this,"胜利","恭喜 ,你猜对了");ui->stackedWidget->setCurrentIndex(0);winmovie.start();ui->stackedWidget->setCurrentWidget(ui->page_4);wintimeid=startTimer(2000); //持续2s }resultStr.clear();  //清空结果}}}}/*删除按钮槽函数 */
void MainWindow::on_button_del_clicked()
{if(resultStr.size()==1)  //如果为1 ,直接删除{resultStr.clear();}else  //否则,截取最后一个{resultStr.chop(1);ui->textEdit->setText(resultStr);}}/*提示按钮槽函数 */
void MainWindow::on_button_piont_clicked()
{ui->textEdit->setText("答案为:"+randStr);//直接显示随机数}void MainWindow::on_action_triggered()
{ui->stackedWidget->setCurrentWidget(ui->page_5);ui->textBrowser->show();}void MainWindow::on_action2_triggered()
{ui->stackedWidget->setCurrentWidget(ui->page_6);ui->textBrowser_2->show();
}void MainWindow::on_action3_triggered()
{ui->stackedWidget->setCurrentWidget(ui->page);}MainWindow::~MainWindow()
{delete ui;
}

游戏截图:


源码已经上传至csdn: 代码注释很详细,边学边注释的,以便于像我一样的初学者学习,源代码传送门:https://download.csdn.net/download/qq_38643642/11238285
另外,编译好的exe文件也将上传到我的资源。

QT学习之QT小游戏-----猜数字游戏相关推荐

  1. Qt小游戏-猜数字游戏(使用设计器完成界面设计)

    目录 1.需要的知识点: 2.工程创建好后,先在设计器中实现界面 3.代码实现部分 ​编辑 使用QtCreator 完成简单小游戏-猜数字游戏实现效果如下: 1.需要的知识点: QLabel显示图片, ...

  2. CASIO 5800P计算器游戏--猜数字游戏

    CASIO 5800P 计算器游戏--猜数字游戏原代码 我编的计算器小游戏--猜数字游戏 LbI I↙ "xxGUESS NUMBERxx xPROGRAMMER:JCHx -------- ...

  3. C语言经典小游戏---猜数字游戏 (包含C语言中如何实现随机数的生成)

    题目描述:输入1-100之间的数字,进行猜数字游戏,猜大猜小有提示,直至才对为止,游戏可以重复游玩. 算法思路: 1.用void函数分别写出菜单程序与游戏进程程序. 2.用switch-case-de ...

  4. C语言入门小游戏——猜数字游戏(详解)

    大家好,我是十一,今天给大家带来"猜数字游戏"的代码和讲解. 目录 前言 基本流程 1.打印菜单 1.1主函数逻辑 2.生成随机数 随机数生成结果 2.1srand函数 2.2时间 ...

  5. C语言 入门级游戏 ——猜数字游戏

      作为一个入门级的,学完循环和函数就可以敲打出来的小游戏:相信都是大家心中不可磨灭的回忆                                                        ...

  6. 微信小程序——猜数字游戏小案例

    文章目录 项目展示 项目链接 项目设计 项目展示 项目链接 https://download.csdn.net/download/weixin_45525272/17043459 项目设计 关于于规则 ...

  7. Java小工具-猜数字游戏(exe版)另附Java文件转exe文件教程

    游戏效果: 系统会随机生成一正整数(1~100),猜测该数字,猜的次数越少,得分越高,6次猜不中,游戏结束.在这之前你将无法退出程序! 程序部分截图: 没有很复杂的逻辑,就直接上代码了(可以直接跑): ...

  8. 猜数字游戏的简单写法

    文章目录 猜数字游戏的简单原理 生成一个随机数 实现代码的主体内容 猜数字游戏 猜数字游戏的简单原理 生成一个随机数 方法:时间戳 srand((unsigned)time(NULL));a = ra ...

  9. JavaScript(二)——猜数字游戏

    下面我们将会通过一个小案例--猜数字游戏,来直观地感受一下如何让JavaScript完成任务. 设计要求 假设你的老板给你布置了以下游戏设计任务要求: 我想让你开发一个猜数字游戏.游戏应随机选择一个 ...

最新文章

  1. h5 解决ios端输入框失去焦点后页面不回弹或者底部留白问题
  2. weblogic mime-type
  3. vue+elementui 中src动态加载图片的时候不起作用
  4. Spring 钩子之BeanFactoryPostProcessor和BeanPostProcessor
  5. elasticdump elasticsearch数据备份与迁移 导入导出
  6. OpenGL 学习 显示列表
  7. java用volatile或AtomicBoolean实现高效并发处理 (只初始化一次的功能要求)
  8. ETH基金会社区经理:以太坊改进流程EIP-1正在更新
  9. nginx 和 php超时设置
  10. 9. grouped product
  11. 国家发展改革委财政部关于不动产登记收费标准等有关问题的通知
  12. 计算机的二三事——软件篇
  13. Excel中数字、数值和文本的区别
  14. VB.net应用技巧5: VB.net 除法运算
  15. 面向数据发布和分析的差分隐私保护 -- 张啸剑
  16. 初级计算机考试j机试题库,计算机初级考试试题-1
  17. 比尔盖茨夫妇现身贫民窟
  18. angularJs - cynthia娆墨旧染-响应式文章发布系统
  19. 【转载】实时嵌入式软件开发的25个常见错误
  20. 【无障碍】自动朗读的弹窗和浮层实现

热门文章

  1. window下安装tensorflow问题
  2. Activity——简单介绍
  3. 【大话传送网-学习笔记】从PDH到SDH
  4. 2678 凌波微步(枚举)
  5. 对CSS 3终极前端开发指南德国Max的的一次学习之旅
  6. 蓝牙耳机啥牌子好?无线蓝牙耳机品牌推荐
  7. Helvetic Coding Contest 2019 online mirror (teams allowed, unrated)
  8. php逐行读取文件内容
  9. 计算机考研最后四十天,考研只剩最后一个月,千万别放弃!(上)时间过得很快,眼看距离...
  10. 并非从0开始的c++ day14