Files
DEC/DEC_GUI/Agressor/model.h
2024-10-03 18:43:04 +07:00

50 lines
3.2 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef MODEL_H
#define MODEL_H
#include <QObject>
#include "agent.h"
class Model : public QObject
{
Q_OBJECT
public:
explicit Model(uint modelId, uint CM, uint CN, uint PM, uint PN, int radius, uint speed, bool period, uint distr,
uint enmity, uint newEnmity, QObject *parent = 0);
qreal mod(qreal a); // модуль числа
QList <Agent *> DangerGamer(uint index, qreal x, qreal y, uint dist); // список игроков, с которыми возможно столкновение
QList<QList<Agent *> > DangerGamer(QList<QList<Agent *> > danger, int index, qreal x, qreal y, uint dist);
bool leaveWindowX(uint agentId, QLineF checked); // проверка на покидание окна по координате X
bool leaveWindowY(uint agentId, QLineF checked); // проверка на покидание окна по координате Y
QLineF periodicTransf(uint index, QLineF tend); // преобразование координат из-за перидочности сцены
QLineF requiredVector(uint gamerId); // вычисление новых координат для игрока с номером gamerId
void modelIteration();
uint getId() {return id;}
QList <Agent *> getAgentList() {return this->agentList;}
void setEnmity(int enm) {this->enmity = enm;}
void setAvContentment(qreal cont){this->avContentment = cont;}
qreal getAvContentment(){return this->avContentment;}
void clear();
private:
uint id;
QList <Agent *> agentList; // список указателей на игроков
uint cowardMedian; // число игроков в режиме труса, движущихся по медиане
uint cowardNormal; // число игроков в режиме труса, движущихся по нормали
uint protectorMedian; // число игроков в режиме защитника, движущихся по медиане
uint protectorNormal; // число игроков в режиме защитника, движущихся по нормали
int agentRadius; // радиус шарика-агента (для передачи в конструктор)
uint newEnmity; // параметр enmity, полученный из диалогового окна
uint gamerSpeed; // скорость агентов
bool period; // метка периодичности краёв сцены (true - сцена периодична)
uint initDistr; // метка начального распределения игроков сцены (0 - случайное, 1 - на круге)
uint enmity; // минимальное расстояние, на которое игроки могут приближаются друг к другу, enmity = 0 - возможно покоординатное совпадение игроков
qreal avContentment;
signals:
public slots:
};
#endif // MODEL_H