【游戏制作】 从零开始的Qt5贪吃蛇代码分析

悲伤的现实

离期末第一场考试之剩下32天了,而oop的期中project还有24天截止。此刻,我们刚刚写完了人生中第一个c++程序,分数类的运算符重载。继承和多态还没学。尽管如此,也是时候作为全裸勇者勇敢地去挑战大魔王了。

目标

通过研究贪吃蛇小游戏的源码,学会用Qt进行游戏开发,并且完成期中Pro报告中挖下的2D Rougelike类小游戏第一关的大坑,并且写下博客给新鲜的学妹学弟留下可以借鉴的学习经验。

资料

Qt5贪吃蛇小游戏源代码下载处
来自Rimond_Jing的Qt5基本安装教程
来自 齐亮,非常棒的一个参考资料

高能预警

因为目前c++也没学好,Qt也刚开始学,所以本篇博客只适合和我一样什么都不会的人。而且很有可能错误连篇,期待有人能指正。
目前在一遍分析一遍写博客,所以会对内容进行不断地修正

以及非常啰嗦(和废话)

总体分析

注:纯新手一上来就看总体分析极有可能不懂,看看就好,不懂就跳过去看完全文回来再看。

界面转换

在本例子中,采取建立不同的界面类(mainWidget,开始界面,和GameWidget,游戏界面),通过接收事件(event,本例是按下按钮),利用信号和槽,来进行界面切换。

main函数分析

感觉并不需要分析:)

#include "mainWidget.h"
//自己写的主窗口的头文件
#include <QApplication>
//一个基础的类,所有工程(pro文件)都要include。
//有时候include这个文件会报错,可能是因为是Qt4的代码的原因

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    mainWidget w;
    w.show();
    return a.exec();
}

主窗口分析:mainWidget

头文件分析

#ifndef MAINWIDGET_H
#define MAINWIDGET_H
#include "GameWidget.h"
#include <QWidget>
#include <QIcon>
#include <QPalette>
#include <QBrush>
#include <QPixmap>
#include <QPushButton>
#include <QMessageBox>
#include <QLabel>
#include <QFont>
class mainWidget : public QWidget//继承了QWidget类
{
    Q_OBJECT
//只要有槽和信号机制,就要写Q_OBJECT
public:
    mainWidget(QWidget *parent = 0);
    ~mainWidget();
    //void resizeEvent(QResizeEvent *);
private:
    QPushButton *startbtn;//一个按钮,用鼠标点击后会开始游戏
    QPushButton *exitbtn;//一个按钮,用鼠标点击后会退出
    GameWidget *g;
    QLabel *label;
signals://信号,mainWidget不会发出信号
public slots://可以接收所有信号的公共槽
    void exitSlot();//用来接收退出信号的槽
    void startSlot();//用来接收开始信号的槽
};

#endif // MAINWIDGET_H

.cpp文件分析
注释的都是可以在自己的程序中使用的函数

#include "mainWidget.h"

mainWidget::mainWidget(QWidget *parent): QWidget(parent)
{
    this->resize(480,270);//resize函数,用来设置mainWidget这个窗口的大小
    this->setMaximumSize(480,270);
    this->setWindowIcon(QIcon(":/new/prefix1/img/icon.png"));//设置ICON
    this->setWindowTitle("贪吃蛇");
    QPalette palette;
    palette.setBrush(QPalette::Background,QBrush(QPixmap(":/new/prefix1/img/back.jpg"
  • 10
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值