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视频教程. 前半 ...
随机推荐
- 自定义BaseServlet利用反射
比较完美一点的BaseServlet package com.yangwei.mvc.servlet; import java.io.IOException; import java.lang.ref ...
- git记录用户名
windows下比较比较好用的Git客户端有2种: 1. msysgit + TortoiseGit(乌龟git) 2. GitHub for Windows github的windows版也用过一段 ...
- mongoDB rs和sh关键字的作用
rs是一个全局变量,其其中定义了很多分片操作的辅助函数, 可以sh.help()查看使用的辅助函数 这些是rs和sh所有函数 在mongoDB中有两种方法表示 例 sh.enableSharding( ...
- 一款简洁而强大的前端框架JQUery—动画效果及剪刀石头布小游戏
jQuery是什么? jQuery是一个快速.简洁的JavaScript框架,它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作.事件处理.动画 ...
- FastDFS安装步骤
FastDFS是用c语言编写的一款开源的分布式文件系统,充分考虑了冗余备份.负载均衡.线性扩容等机制,并注重高可用.高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传.下 ...
- 使用VUE模仿BOSS直聘APP
一.碎碎念: 偶尔在群里看到一个小伙伴说:最近面试的人好多都说用vue做过一个饿了么.当时有种莫名想笑. 为何不知道创新一下?于是想写个DEMO演练一下.那去模仿谁呢?还是BOSS直聘(跟我没关系,不 ...
- RG_4
集训前半段马上就要结束了. 很多作业等待着我. 真希望作业君不喜欢我.
- Kafka快速上手(2017.9官方翻译)
为了帮助国人更好了解.上手kafka,特意翻译.修改了个文档.官方Wiki : http://kafka.apache.org/quickstart 快速开始 本教程假定您正在开始新鲜,并且没有现有的 ...
- 使用Grub Rescue 修复MBR
ubuntu 14.04 (本机) 1.使用以下命令查看分区: grub rescure> ls (hd0,msdos7),(hd0,msdos8),(hd0,msdos9 ...
- 【学习】ie8支持rgba()透明度颜色
(我的博客网站中的原文:http://www.xiaoxianworld.com/archives/285,欢迎遇到的小伙伴常来瞅瞅,给点评论和建议,有错误和不足,也请指出.) rgba()函数可以用 ...