#ifndef MODEL_H #define MODEL_H #include #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 DangerGamer(uint index, qreal x, qreal y, uint dist); // список игроков, с которыми возможно столкновение QList > DangerGamer(QList > 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 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 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