Init version

This commit is contained in:
2024-10-03 18:43:04 +07:00
commit f80052961f
186 changed files with 71676 additions and 0 deletions

109
DEC_GUI/Agressor/manager.h Normal file
View File

@@ -0,0 +1,109 @@
#ifndef MANAGER_H
#define MANAGER_H
#include <QObject>
#include <QtWidgets>
#include "agent.h"
#include "agentitem.h"
#include "aphistory.h"
#include "manageritem.h"
#include "model.h"
#include "Kolch_Shind/qcustomplot.h"
class Manager : public QObject
{
Q_OBJECT
public:
explicit Manager(QObject *parent = 0); // конструктор
void initSettings(QGroupBox *set); // создание окна настроек
void initTab(QTabWidget *tabs);
QVector<qreal> calculateAvContenmentForGroups(uint typeCalc, uint iModel);
void iteration(uint j);
// геттеры
uint getCowardMedian(){return this->cowardMedian;}
uint getCowardNormal(){return this->cowardNormal;}
uint getProtectorMedian(){return this->protectorMedian;}
uint getProtectorNormal(){return this->protectorNormal;}
private:
QList<Model*> modelList;
QVector<qreal> xCoord; // x координата для построения графика средней неудовлетворённости
QVector<qreal> yCoord; // y координата для построения графика средней неудовлетворённости
QVector<qreal> xBatchCoord;
QVector<qreal> yBatchCoord;
uint cowardMedian; // число игроков в режиме труса, движущихся по медиане
uint cowardNormal; // число игроков в режиме труса, движущихся по нормали
uint protectorMedian; // число игроков в режиме защитника, движущихся по медиане
uint protectorNormal; // число игроков в режиме защитника, движущихся по нормали
int agentRadius; // радиус шарика-агента (для передачи в конструктор)
uint speedDistr; // распределение скоростей (однородное)
uint gamerSpeed; // скорость агентов
bool period; // метка периодичности краёв сцены (true - сцена периодична)
uint initDistr; // метка начального распределения игроков сцены (0 - случайное, 1 - на круге)
uint enmity; // минимальное расстояние, на которое игроки могут приближаются друг к другу, enmity = 0 - возможно покоординатное совпадение игроков
uint newEnmity; // параметр enmity, полученный из диалогового окна
int viewOrPackageMode; // 0 - визуализация одной модели, 1 - пакетное задание
int nIterations; // число итераций для пакетного задания
int nModels; // число запусков модели для пакетного задания
uint typeContentment; // способ расчёта ср.неудовлетворённости: 0 - сравнение со всеми агентами, 1 - сравнение внутри окрестности
//qreal avContentment; // ср.неудовлетворённость (ToDo: а надо ли?)
uint radiusLocality; // радиус окрестности в случае typeContenment = 1
QWidget *window;
QGridLayout *base;
QTabWidget *tabWindow;
QGraphicsScene *scene;
ManagerItem *manItem;
QCustomPlot *plot;
QPushButton *createButton; // кнопка создания модели
QPushButton *buttonTime; // кнопка "Pause/Start"
QLabel *labelContent;
QSpinBox *spinLocality;
QComboBox *viewOrPackage;
QCheckBox *checkLink;
QCheckBox *checkOutputToTxt;
QComboBox *comboTime;
QSpinBox *spinIterations;
QSpinBox *spinModels;
bool outputToTxt;
QTimer *timer;
QProgressBar *prBar;
QComboBox *graphCombo;
QCustomPlot *batchPlot;
QLineEdit *lineSaveWithName;
APHistory *history;
private slots:
void setCowardMedian(int cm) {this->cowardMedian = cm;}
void setCowardNormal(int cn) {this->cowardNormal = cn;}
void setProtectorMedian(int pm) {this->protectorMedian = pm;}
void setProtectorNormal(int pn) {this->protectorNormal = pn;}
void setAgentRadius(int rad){this->agentRadius = rad;}
void setSpeedDistr(int spDistr) {this->speedDistr = spDistr;}
void setGamerSpeed(int gamerSp) {this->gamerSpeed = gamerSp;}
void setPeriodicity(bool value) {this->period = value;}
void setDistr(int distr){this->initDistr = distr;}
void setEnmity(int enm) {this->enmity = enm;}
void setNewEnmity(int nEnm){this->newEnmity = nEnm;}
void setviewOrPackageMode(int val){this->viewOrPackageMode = val;}
void setNIterations(int number){this->nIterations = number;}
void setNModels(int number){this->nModels = number;}
void setOutputToTxt(bool output) {this->outputToTxt = output;}
void setTypeContenment(int type){this->typeContentment = type;}
//void setAvContentment(qreal cont){this->avContentment = cont;}
void setRadiusLocality(int rad){this->radiusLocality = rad;}
void initModel(); // создание модели по полученным данным
void timerEvent(); // итерация игры - вычисление новых координат для всех игроков
void handlePrBar();
void handleButton(); // остановка/возобновление игры
void timerRestart(int index); // перезапуск таймера
void resetProgressBarAndHistory();
void composeGraph(int iModel);
void saveGragh();
// вкл/выкл пункты окна настроеек
void manageSpinLocality(int value);
void managePackageOptions(int val);
};
#endif // MANAGER_H