本文章基本全代码敲窗口小球游戏,最后会免费加上源代码,让读者有更清晰的了解

        内容主要覆盖:

          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---实现小球游戏(零基础入门)的更多相关文章

  1. 改进我们的小游戏 - 零基础入门学习Python004

    改进我们的小游戏 让编程改变世界 Change the world by program 改进我们的小游戏 很多鱼油对改善这个游戏提出了建议,小甲鱼做了一下总结,大概有以下几个方面需要改进: 猜错的时 ...

  2. 用Python设计第一个游戏 - 零基础入门学习Python002

    用Python设计第一个游戏 让编程改变世界 Change the world by program 有些鱼油可能会说,哇,小甲鱼你开玩笑呐!这这这这就上游戏啦?你不打算给我们讲讲变量,分支,循环,条 ...

  3. 044 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 06 使用do-while循环实现猜字游戏

    044 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 06 使用do-while循环实现猜字游戏 本文知识点:do-while循环深入运用 案例练习 案例 ...

  4. 零基础入门微信小程序开发

    注:本文来源于:<零基础入门微信小程序开发> 课程介绍 本达人课是一个系列入门教程,目标是从 0 开始带领读者上手实战,课程以微信小程序的核心概念作为主线,介绍配置文件.页面样式文件.Ja ...

  5. Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇)  作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/bee ...

  6. .NET零基础入门09:SQL必知必会

    一:前言 仿佛到了更进一步的时候了,每一个程序员迟早都会遇到数据存储的问题.我们拿什么来存储程序产生的数据?举例来说,用什么来存储我们的打老鼠游戏每次的成绩呢?选择如下: 1:内存中.缺点,退出游戏, ...

  7. .NET零基础入门05:委托与事件

    一:前言 本小节,我们需要停一停我们的小游戏开发,虽然它现在还不完美,还很简单,甚至还有BUG.但是,为了更好的理解C#,现在到了该深入了解一些基础知识的时候了. 当然,实际上,本小节内容对于零基础入 ...

  8. Siki_Unity_1-3_Unity零基础入门_古迹探险

    1-3 Unity零基础入门 古迹探险 任务1/2:资料下载 链接:https://pan.baidu.com/s/1jHVymNk 密码:rbob 任务3:工程的创建和打开 Project:古迹探险 ...

  9. Siki_Unity_1-1_Unity零基础入门_打砖块

    1-1 Unity零基础入门 打砖块 任务1:素材源码 www.sikiedu.com/course/77 任务2:Unity介绍 王者荣耀,球球大作战等游戏都是用unity开发的 跨平台的游戏引擎 ...

  10. Python3零基础入门学习视频+源码+课件+习题-小甲鱼

    目录 1. 介绍 2. 目录 3. 下载地址 1. 介绍 适用人群 完全零基础入门,不需要任何前置知识. 课程概述 本系列教程面向零基础的同学,是一个深入浅出,通俗易懂的Python3视频教程. 前半 ...

随机推荐

  1. 一、React Native 搭建开发环境(1)(Mac OS - IOS项目)

    React Native是Facebook推出的一个开发IOS和安卓APP的技术.至于更多的详情,这里不再描述,大家可以自行百度它的定义. 目的: 由于我想在一台电脑上同时开发IOS和Android两 ...

  2. 在腾讯云上搭建WordPress博客

    笔者一直很羡慕那些搭建了个人博客的大牛,在最近工作之余也尝试着搭建了自己的博客,历时1周,这篇文章就将踩过的坑记录下来,先看下成果,链接在此 1- 购买腾讯云主机 腾讯云官网,我选了79元/月的最便宜 ...

  3. editplus的设置

    1, 下载editplus3软件并且进行安装, 我这里是 EditPlus_3.4.1.1123_XiaZaiBa 2, 进行相关设置: 工具-->参数设置-->常规--勾选 (把Edit ...

  4. PHP中foreach循环传值问题

    首先看一段代码: <?php $a=array('ab','cd','ef'); $count=3; foreach($a as $key=>$value){ $value='abcdef ...

  5. vue源码学习-vnode的挂载和更新流程

    概述 本文主要介绍在视图的渲染过程中,Vue 是如何把 vnode 解析并挂载到页面中的.我们通过一个最简单的例子来分析主要流程: <div id="app"> {{s ...

  6. 封装好的图片滑动框架(AndroidImageSlider)

    前言 广告轮播条的重要性不言而喻.在很多类型app中出场率都很高. 今天给大家介绍一个轮播图开源项目,这个项目把轮播图需要的ViewPager跟计时器做了封装,使用极其方便,支持gradle在线依赖. ...

  7. jmeter测试教程

    http://www.cnblogs.com/TankXiao/p/4045439.html

  8. 使用LayUI操作数据表格

    接着 上一篇 继续完善我们的demo,这次我们加一个搜索按钮 搜索 在table标签的上方,加入这样一组html <div class="demoTable"> 搜索商 ...

  9. 概率图模型PGM——D map, I map, perfect map

    若F分布的每个条件独立性质都反映在A图中,则A图被称为F分布的D map. 若A图表现出的所有条件独立性质都在F分布中满足(与F分布不矛盾),则A图被称为F分布的I map. 弱A图既是F分布的D m ...

  10. input输入中文时,拼音在输入框内会触发input事件的问题。

    问题描述: 监听文本输入框的input事件,在拼写汉字(输入法)但汉字并未实际填充到文本框中(选词)时会触发input事件,如图: 需要完成的需求就是在输入阶段不触发input中的事件,选词之后文字落 ...