Class Snake & Header Controller

This commit is contained in:
usermeme 2018-09-11 20:10:37 +03:00
parent 364e4c2911
commit 7d4153cb0d
8 changed files with 90 additions and 18 deletions

6
back-end/controller.cpp Normal file
View File

@ -0,0 +1,6 @@
#include "controller.h"
Controller::Controller()
{
}

16
back-end/controller.h Normal file
View File

@ -0,0 +1,16 @@
#ifndef CONTROLLER_H
#define CONTROLLER_H
#include <QObject>
#include "snake.h"
class Controller : public QObject
{
private:
Snake snake;
public:
Controller();
void update();
};
#endif // CONTROLLER_H

View File

@ -26,22 +26,21 @@ void Head::setX(double x) {
this->x = x; this->x = x;
} }
double Head::getSpeed() const void Head::render(){
qint64 tempTime = QDateTime::currentMSecsSinceEpoch() - time;
double my = y + *speed * sin(angle * TO_RADIAN);
y += (my - y) / 1000 * tempTime;
time = QDateTime::currentMSecsSinceEpoch();
}
double *Head::getSpeed() const
{ {
return speed; return speed;
} }
void Head::setSpeed(double value) void Head::setSpeed(double *speed)
{ {
speed = value; this->speed = speed;
}
void Head::render(){
qint64 tempTime = QDateTime::currentMSecsSinceEpoch() - time;
double my = y + speed * sin(angle * TO_RADIAN);
y += (my - y) / 1000 * tempTime;
time = QDateTime::currentMSecsSinceEpoch();
} }
Head::Head() { Head::Head() {

View File

@ -9,9 +9,10 @@
class Head : BaseClass class Head : BaseClass
{ {
private: private:
double x, y, angle, speed; double x, y, angle;
QString texture; QString texture;
qint64 time; qint64 time;
double *speed;
public: public:
Head(); Head();
double getAngle() const; double getAngle() const;
@ -23,12 +24,13 @@ public:
double getX() const; double getX() const;
void setX(double x); void setX(double x);
double getSpeed() const; double *getSpeed() const;
void setSpeed(double value); void setSpeed(double *value);
void render(); void render();
~Head(); ~Head();
}; };
#endif // HEAD_H #endif // HEAD_H

23
back-end/snake.cpp Normal file
View File

@ -0,0 +1,23 @@
#include "snake.h"
void Snake::setItems(const QVector<Head *> &value)
{
items = value;
}
QVector<Head *> Snake::getItems() const
{
return items;
}
void Snake::setSpeedHead(){
for(int i = 0;i < getItems().size(); ++i){
getItems().at(i)->setSpeed(&speed);
}
}
Snake::Snake() :
speed(SPEEDSNAKE)
{
setSpeedHead();
}

22
back-end/snake.h Normal file
View File

@ -0,0 +1,22 @@
#ifndef SNAKE_H
#define SNAKE_H
#define SPEEDSNAKE 10
#include <QVector>
#include "head.h"
class Snake
{
private:
QVector<Head*> items;
double speed;
bool isClick;
public:
Snake();
bool init(int size, bool click);
void setItems(const QVector<Head *> &value);
QVector<Head *> getItems() const;
void setSpeedHead (void);
};
#endif // SNAKE_H

View File

@ -5,5 +5,5 @@ Window {
visible: true visible: true
width: 640 width: 640
height: 480 height: 480
title: qsTr("Hello World") title: qsTr("SnakeOfTheRoad")
} }

View File

@ -15,7 +15,9 @@ DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \ SOURCES += \
back-end/main.cpp \ back-end/main.cpp \
back-end/baseclass.cpp \ back-end/baseclass.cpp \
back-end/head.cpp back-end/head.cpp \
back-end/snake.cpp \
back-end/controller.cpp
RESOURCES += qml.qrc RESOURCES += qml.qrc
@ -32,4 +34,6 @@ else: unix:!android: target.path = /opt/$${TARGET}/bin
HEADERS += \ HEADERS += \
back-end/baseclass.h \ back-end/baseclass.h \
back-end/head.h back-end/head.h \
back-end/snake.h \
back-end/controller.h