QT---实现小球游戏(零基础入门)
本文章基本全代码敲窗口小球游戏,最后会免费加上源代码,让读者有更清晰的了解
内容主要覆盖:
1> Qtimer计时器的开始和结束,以及显示系统时间等等。。。
2> 多个Qwidget布局和背景颜色调配
3>小球撞板反弹和小球撞板在Qwidget中分数的传递(就是小球撞一次板,分数加一,并且还要显示出来)
注:有基础的读者最好先想一下困难点在哪里,并仔细看代码中是如何实现的,本文对于QT学习是一个大的突破,毕竟全代码,后面还有一个舒尔特方格,下次再补上来.

基本窗口就是这样,下面直接开始介绍函数吧(0基础摸索画了一天时间,我自己都被自己蠢哭!)
步骤一:我弄简单一点,做一个大的vbox垂直布局,里面包括了下面的downwidget和hbox水平布局,hbox水平布局又包括了time和upwidet(这里hbox和vbox是系统自带函数,downwidget,time,upwidget是要自己写的小部件,就是为了排列好看,才有了上面的布局)
hbox = new QHBoxLayout;
hbox->addWidget(time);
topWidget->setFixedHeight(30);
time->setFixedHeight(30);
hbox->addWidget(topWidget);
vbox = new QVBoxLayout();
vbox->addLayout(hbox);
vbox->addWidget(bottomWidget);
setLayout(vbox);
resize(800, 600);
palette.setBrush(this->backgroundRole(), Qt::lightGray);
this->setPalette(palette);
步骤二: time里面加入系统时间(关键),upwidget里面加入label(这里我说一下,如何实现小球撞板分数就加一呢?关键在于球的横纵坐标等于挡板的横纵坐标即相撞时,就要发出一个myscore的信号,然后mainwidget里面接到,传给upwidget,upwidget里面的变量加1,再输出就实现啦!)downwidget里面加入小球运动的函数就可以了
time:
QDateTime time = QDateTime::currentDateTime();
QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd");
label->setText(str);
upwidget:
upscore++;
labelScore->setText(QString("Score: %1 ").arg(upscore));
downwidget:
(小球运动的代码太过简单,所以很多,这里不写,读者直接看压缩包)
步骤三:设置背景,前2步最重要吧,背景什么的就是为了好看,2个按钮也只需要加个timer.stop()之类的就可以了
void UpWidget::paintEvent(QPaintEvent *event){
Q_UNUSED(event);
QPainter p(this);
p.setPen(Qt::NoPen);
p.setBrush(Qt::yellow);
p.drawRect(rect());
}
总结:按照老师要求,本游戏可以实现挡板档球,每挡一次分数加一,显示时间,让球停止,让球加速,整体布局的功能,主要内容就是先布局 widget,然后在每一个widget里面分别操作,互不干扰,唯一影响的就是传分数,上面说了一遍,我再说一下,读者可能还是很疑惑,就是downwidget是无法传分数的,只需要发一个信号(函数)就可以了,然后mainwidget实现的是一种中转站的功能,把upwidget和downwidget联系起来,接收他的信号,让变量+1,再显示在label上面就可以了,很简单的一个游戏,但是我这个垃圾从0开始,搞了一天才搞完,有问题再讨论。
博客园上面好像传不了压缩包啊,没办法啦,传到网盘去吧,以后留个纪念!
链接: https://pan.baidu.com/s/1o799EjC 密码: ijyw
QT---实现小球游戏(零基础入门)的更多相关文章
- 改进我们的小游戏 - 零基础入门学习Python004
改进我们的小游戏 让编程改变世界 Change the world by program 改进我们的小游戏 很多鱼油对改善这个游戏提出了建议,小甲鱼做了一下总结,大概有以下几个方面需要改进: 猜错的时 ...
- 用Python设计第一个游戏 - 零基础入门学习Python002
用Python设计第一个游戏 让编程改变世界 Change the world by program 有些鱼油可能会说,哇,小甲鱼你开玩笑呐!这这这这就上游戏啦?你不打算给我们讲讲变量,分支,循环,条 ...
- 044 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 06 使用do-while循环实现猜字游戏
044 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 06 使用do-while循环实现猜字游戏 本文知识点:do-while循环深入运用 案例练习 案例 ...
- 零基础入门微信小程序开发
注:本文来源于:<零基础入门微信小程序开发> 课程介绍 本达人课是一个系列入门教程,目标是从 0 开始带领读者上手实战,课程以微信小程序的核心概念作为主线,介绍配置文件.页面样式文件.Ja ...
- Linux及Arm-Linux程序开发笔记(零基础入门篇)
Linux及Arm-Linux程序开发笔记(零基础入门篇) 作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/bee ...
- .NET零基础入门09:SQL必知必会
一:前言 仿佛到了更进一步的时候了,每一个程序员迟早都会遇到数据存储的问题.我们拿什么来存储程序产生的数据?举例来说,用什么来存储我们的打老鼠游戏每次的成绩呢?选择如下: 1:内存中.缺点,退出游戏, ...
- .NET零基础入门05:委托与事件
一:前言 本小节,我们需要停一停我们的小游戏开发,虽然它现在还不完美,还很简单,甚至还有BUG.但是,为了更好的理解C#,现在到了该深入了解一些基础知识的时候了. 当然,实际上,本小节内容对于零基础入 ...
- Siki_Unity_1-3_Unity零基础入门_古迹探险
1-3 Unity零基础入门 古迹探险 任务1/2:资料下载 链接:https://pan.baidu.com/s/1jHVymNk 密码:rbob 任务3:工程的创建和打开 Project:古迹探险 ...
- Siki_Unity_1-1_Unity零基础入门_打砖块
1-1 Unity零基础入门 打砖块 任务1:素材源码 www.sikiedu.com/course/77 任务2:Unity介绍 王者荣耀,球球大作战等游戏都是用unity开发的 跨平台的游戏引擎 ...
- Python3零基础入门学习视频+源码+课件+习题-小甲鱼
目录 1. 介绍 2. 目录 3. 下载地址 1. 介绍 适用人群 完全零基础入门,不需要任何前置知识. 课程概述 本系列教程面向零基础的同学,是一个深入浅出,通俗易懂的Python3视频教程. 前半 ...
随机推荐
- Ningx集群环境搭建
Ningx集群环境搭建 Nginx是什么? Nginx ("engine x") 是⼀个⾼性能的 HTTP 和 反向代理 服务器,也是⼀个 IMAP/ POP3/SMTP 代理服务 ...
- 运算符(C# 参考)
reference:https://msdn.microsoft.com/zh-cn/library/zkacc7k1(v=vs.140).aspx
- 编译安装Nginx到Linux
之前安装的H2O不知道为啥,总是崩溃,换Nginx了下载包:http://nginx.org/download/ 配置:./configure --prefix=/usr/local/nginx -- ...
- 实验:体会Oracle权限/角色赋予的差异
环境:Oracle 11.2.0.4 目的:验证业务用户的权限/角色赋予的差异 现在创建两个用户jingyu2和jingyu3: SYS@jyzhao1> create user jingyu2 ...
- Kafka水位(high watermark)与leader epoch的讨论
~~~这是一篇有点长的文章,希望不会令你昏昏欲睡~~~ 本文主要讨论0.11版本之前Kafka的副本备份机制的设计问题以及0.11是如何解决的.简单来说,0.11之前副本备份机制主要依赖水位(或水印) ...
- 用vue开发一个app(2,main.js)
昨天跟着vue的官网搭建了vue的一个脚手架,我也是第一次用VUE一切都在摸索阶段. 今天试着看下里面脚手架里面有点什么东西 先看看main.js 导入了3个模块 一个vue,一个app,还有rout ...
- Vue2.0 探索之路——生命周期和钩子函数
beforecreate :可以在这加个loading事件 created :在这结束loading,还做一些初始化,实现函数自执行 mounted : 在这发起后端请求,拿回数据,配合路由钩子做一些 ...
- Shell 变量详解教程之位置变量与预定义变量。
Shell 变量分为3部分,分别是用户自定义变量.位置变量和预定义变量. 一. 自定义变量 那么,什么是变量呢?简单的说,就是让某一个特定字符串代表不固定的内容,用户定义的变量是最普通的Shell ...
- Jest 单元测试入门
今天,我们要讲的是 Jest 单元测试的入门知识. 为何要进行单元测试? 在学习 Jest 之前,我们需要回答一个问题:为何要进行单元测试?编写单元测试可以给你带来很多好处: 将测试自动化,无需每次都 ...
- Json操作问题总结
大家都知道,Json是一种轻量级的数据交换格式,对JS处理数据来说是很理想滴! 熟练写过xxx.json文件和操作的小伙伴来说,我说的问题都不是什么大问题啦,可以忽略本宝宝的文章,更希望各位大佬指点一 ...