QT C++ 贪吃蛇游戏例程

本文介绍了一款使用QT C++编写的贪吃蛇游戏,通过面向对象编程,封装了蛇和奖励对象。游戏背景可以自定义图片,并会自动调整窗口尺寸以适应图片大小。屏幕刷新关键在于调用repaint()函数,而不是update()。文章包含蛇类、奖励类及主窗口类的主要代码实现,并展示了游戏的运行效果。
摘要由CSDN通过智能技术生成

1、采用面向对象的方法,封装了蛇与奖励对象

2、背景图片需要更换为自己本地图片,程序自动调整窗口大小为背景图片大小 

3、屏幕刷新使用repaint(),使用update()不起作用

主要代码

1、蛇类 Snake

#ifndef SNAKE_H
#define SNAKE_H
#include <QPaintDevice>
#include <QList>
#include <QRectF>
#include <QPainter>
#include <QDebug>

class Snake
{
public:
    Snake(QPaintDevice *device);
    ~Snake();
    void move_up();
    void move_down();
    void move_right();
    void move_left();
    void draw();
    QRectF getHead();
    void growUp();
private:
    QList <QRectF> snakeBody;
    int nodeWidth  = 50;
    int nodeHeight = 50;
    QPaintDevice *device;
    void drawEyes();
    int moveDirection;
};

#endif // SNAKE_H
#include "snake.h"
#include "widget.h"

Snake::Snake(QPaintDevice *device)
{
    this->device = device;
    for (int i = 0; i <4 ; i++){
        snakeBody.insert(i,QRectF(300,200+i*nodeHeight,nodeWidth,nodeHeight));
    }
    moveDirection = MV_UP;
}

Snake::~Snake()
{

}

void Snake::move_up()
{
    moveDirection = MV_UP;
    if (snakeBody[0].topLeft().y() - nodeHeight <0 ){
        // 超过屏幕上方
        snakeBody.insert(0,QRectF(snakeBody[0].topLeft().x(),
                         snakeBody[0].topLeft().y() - nodeHeight + device->height(),nodeWidth,nodeHeight));

    }else{
        snakeBody.insert(0,QRectF(snakeBody[0].topLeft().x(),
                         snakeBody[0].topLeft().y() - nodeHeight,nodeWidth,nodeHeight));

    }
    //    qDebug()<<"Device Height-----" << device->height();
    //    qDebug()<<"Device Width-----" << device->width();
    qDebug()<<"Left point----"<< snakeBody[0].topLeft().y();
    snakeBody.removeLast();
    qDebug()<<"Snake Length----"<< snakeBody.length();
}

void Snake::move_down()
{
    moveDirection = MV_DOWN;
    if (snakeBody[0].topLeft().y() + nodeHeight > device->height() ){
        // 超过屏幕下方
        snakeBody.insert(0,QRectF(snakeBody[
Qt是一个跨平台的应用程序开发框架,提供了丰富的库和工具,用于开发图形用户界面和其他应用程序。Qt Widget是Qt框架中的一个模块,用于创建和管理图形界面元素,如窗口、按钮、输入框等。 在Qt中,使用Widget编写一个简单的例程非常简单。首先,我们需要创建一个Qt Widget项目。然后,在主窗口中添加各种需要的控件,例如按钮、文本框等。接下来,可以通过设置各个控件的属性和信号槽来实现交互逻辑。最后,编译并运行程序,即可看到创建的窗口和控件。 例如,我们可以编写一个计算器的例程。首先,在主窗口中放置一些按钮和一个文本框,用于输入和显示计算结果。然后,编写相应的数来实现按钮的点击事件。例如,当用户点击数字按钮时,将该数字添加到文本框中;当用户点击运算符按钮时,将运算符添加到文本框中。最后,编写一个计算数来实现实际的计算逻辑,将计算结果显示到文本框中。 通过以上步骤,我们就可以完成一个简单的Qt Widget例程。当用户运行程序时,会出现一个计算器界面,可以进行简单的数学运算。这只是一个简单的示例,Qt Widget可以用于开发各种类型的应用程序,例如文本编辑器、图像处理工具等。 总之,Qt Widget是Qt框架中用于创建图形用户界面的模块,通过添加控件、处理事件和信号槽来实现交互逻辑,可以用于开发各种功能丰富的应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值