50 lines
3.2 KiB
C++
50 lines
3.2 KiB
C++
#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
|