这篇文章内容是参考https://blog.csdn.net/sinan1995/article/details/81671311
这篇主要是怎样实现创建一条蛇,并让它动起来
首先先创建项目,基类可以是mainWidget或者Widget,这里使用的是mainWidget
采用面向对象的方式,设计一个Snake类,制作这条蛇
Snake.h
#ifndef SNAKE_H
#define SNAKE_H
#include <QObject>
#include <QList>
class Snake : public QObject
{
Q_OBJECT
public:
explicit Snake(QObject *parent = nullptr);
public:
enum Dir{Up, Down, Left, Right};
public:
int moveDir = Dir::Up;
int width=10;
int height=10;
QList<QRectF> body;
public:
//节点个数,初始头的位置,朝向(默认为上)
void initBody(int nodeNum=3,QPointF topLeft=QPointF(400,400),Dir dir=Dir::Up,int nodeWidth=10,int nodeHeight=10);
public:
void addNodeUp(int);
void addNodeDown(int);
void addNodeLeft(int);
void addNodeRight(int);
void moveUp(int);
void moveDown(int);
void moveRight(int);
void moveLeft(int);
void move(int,int); //沿着当前的方向移动
signals:
public slots:
};
#endif // SNAKE_H
这个Snake类也可以不用继承Object类,普通的类也行。
首先这个类里有一些属性,moveDir 表示蛇正在移动的方向,它的值是自定义的一个枚举值,分别代表上下左右。
width 和 height 分别代表蛇的每个节点的宽和高。
body 是存放每个节点的矩形位置。
Snake.cpp
#include "snake.h"
#include <