finish mandatory part of the lab
This commit is contained in:
parent
2418aafa97
commit
17ba18a200
@ -3,7 +3,8 @@ project(ProtocolDeveloppement)
|
|||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 14)
|
set(CMAKE_CXX_STANDARD 14)
|
||||||
|
|
||||||
set(CMAKE_PREFIX_PATH "/Qt/6.5.0/android_arm64_v8a/lib/cmake")
|
#set(CMAKE_PREFIX_PATH "/Qt/6.5.0/android_arm64_v8a/lib/cmake")
|
||||||
|
set(CMAKE_PREFIX_PATH "D:/programme/Qt/6.5.0/mingw_64/lib/cmake")
|
||||||
|
|
||||||
|
|
||||||
find_package(Qt6Widgets REQUIRED)
|
find_package(Qt6Widgets REQUIRED)
|
||||||
@ -13,6 +14,8 @@ find_package(Qt6Gui REQUIRED)
|
|||||||
add_executable(${PROJECT_NAME}
|
add_executable(${PROJECT_NAME}
|
||||||
main.cpp
|
main.cpp
|
||||||
stompframe.cpp
|
stompframe.cpp
|
||||||
|
stomp.cpp
|
||||||
|
app.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
link_directories( ${PCL_LIBRARY_DIRS} )
|
link_directories( ${PCL_LIBRARY_DIRS} )
|
||||||
|
38
app.cpp
38
app.cpp
@ -25,6 +25,7 @@ void App::receiveIndication(int id, QString destination, QString body) {
|
|||||||
if(destination.contains("field")){
|
if(destination.contains("field")){
|
||||||
fillField(body);
|
fillField(body);
|
||||||
}
|
}
|
||||||
|
computeMove();
|
||||||
}
|
}
|
||||||
|
|
||||||
void App::disconnectConfirmation() {
|
void App::disconnectConfirmation() {
|
||||||
@ -40,26 +41,51 @@ void App::addGem(int x, int y, int pts) {
|
|||||||
g.x = x;
|
g.x = x;
|
||||||
g.y = y;
|
g.y = y;
|
||||||
g.pts = pts;
|
g.pts = pts;
|
||||||
|
g.relativePts = computeRelativePts(g);
|
||||||
gems_.append(g);
|
gems_.append(g);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void App::printGem() {
|
||||||
|
for (Gem g: gems_) {
|
||||||
|
qDebug() << g.x << ":" << g.y << " - " << g.pts << Qt::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void App::fillField(QString body) {
|
void App::fillField(QString body) {
|
||||||
static int x = 0;
|
int x = 0;
|
||||||
static int y = 0;
|
int y = 0;
|
||||||
|
gems_.clear();
|
||||||
for(int i = 0; i<body.length(); i++) {
|
for(int i = 0; i<body.length(); i++) {
|
||||||
const QChar c = body.at(i);
|
const QChar c = body.at(i);
|
||||||
if(c == 'g') addGem(x, y, 100);
|
|
||||||
if(c == 'G') addGem(x, y, 250);
|
|
||||||
if(c == 'D') addGem(x, y, 500);
|
|
||||||
if(c == 'Y') {
|
if(c == 'Y') {
|
||||||
myVehicle_.x = x;
|
myVehicle_.x = x;
|
||||||
myVehicle_.y = y;
|
myVehicle_.y = y;
|
||||||
myVehicle_.me = true;
|
myVehicle_.me = true;
|
||||||
}
|
}
|
||||||
|
if(c == 'g') addGem(x, y, 100);
|
||||||
|
if(c == 'G') addGem(x, y, 250);
|
||||||
|
if(c == 'D') addGem(x, y, 500);
|
||||||
if(c == '\n') {
|
if(c == '\n') {
|
||||||
y++;
|
y++;
|
||||||
x = 0;
|
x = 0;
|
||||||
|
} else {
|
||||||
|
x++;
|
||||||
}
|
}
|
||||||
x++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QVector2D App::computeRelativePts(Gem g) {
|
||||||
|
QVector2D v = QVector2D(myVehicle_.x, myVehicle_.y) - QVector2D(g.x, g.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
void App::computeMove() {
|
||||||
|
Gem myGem;
|
||||||
|
for(Gem g : gems_) {
|
||||||
|
if(g.pts > myGem.pts) myGem = g;
|
||||||
|
}
|
||||||
|
if(myGem.x>myVehicle_.x) st_->sendRequest("/topic/sdi10.gem.command", "right");
|
||||||
|
else if(myGem.x<myVehicle_.x) st_->sendRequest("/topic/sdi10.gem.command", "left");
|
||||||
|
else if(myGem.y>myVehicle_.y) st_->sendRequest("/topic/sdi10.gem.command", "down");
|
||||||
|
else if(myGem.y<myVehicle_.y) st_->sendRequest("/topic/sdi10.gem.command", "up");
|
||||||
|
}
|
||||||
|
|
||||||
|
5
app.h
5
app.h
@ -4,6 +4,7 @@
|
|||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include "interface/iStompObserver.h"
|
#include "interface/iStompObserver.h"
|
||||||
#include "stomp.h"
|
#include "stomp.h"
|
||||||
|
#include <QVector2D>
|
||||||
|
|
||||||
class App : public QObject, public interface::iStompObserver {
|
class App : public QObject, public interface::iStompObserver {
|
||||||
public:
|
public:
|
||||||
@ -26,6 +27,7 @@ private:
|
|||||||
int x;
|
int x;
|
||||||
int y;
|
int y;
|
||||||
int pts;
|
int pts;
|
||||||
|
QVector2D relativePts;
|
||||||
} Gem;
|
} Gem;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -37,7 +39,10 @@ private:
|
|||||||
QVector<Gem> gems_;
|
QVector<Gem> gems_;
|
||||||
Vehicle myVehicle_;
|
Vehicle myVehicle_;
|
||||||
void addGem(int x, int y, int pts);
|
void addGem(int x, int y, int pts);
|
||||||
|
void printGem();
|
||||||
void fillField(QString body);
|
void fillField(QString body);
|
||||||
|
QVector2D computeRelativePts(Gem g);
|
||||||
|
void computeMove();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user