|
| 1 | +# -*- coding: utf-8 -*- |
| 2 | + |
| 3 | +# Form implementation generated from reading ui file 'projetMajeure.ui' |
| 4 | +# |
| 5 | +# Created by: PyQt5 UI code generator 5.6 |
| 6 | +# |
| 7 | +# WARNING! All changes made in this file will be lost! |
| 8 | + |
| 9 | +from PyQt5 import QtCore, QtGui, QtWidgets |
| 10 | +from PyQt5.QtWidgets import QWidget, QPushButton, QApplication |
| 11 | +from PyQt5.QtGui import QPainter, QColor, QFont, QBrush, QPixmap |
| 12 | +from PyQt5.QtCore import Qt, QTimer |
| 13 | + |
| 14 | +WINDOW_WIDTH = 800 |
| 15 | +WINDOW_HEIGHT = 500 |
| 16 | + |
| 17 | +TIME_PERIOD = 100 # miliseconds entre frames |
| 18 | + |
| 19 | +IMAGEPATH_BACKGROUND = "Images/background.jpg" |
| 20 | + |
| 21 | +class Ui_MainWindow(object): |
| 22 | + # classe cree par QtDesigner |
| 23 | + MainWindow = None # ajoutee |
| 24 | + def setupUi(self, MainWindow): |
| 25 | + self.MainWindow = MainWindow |
| 26 | + self.MainWindow.setObjectName("MainWindow") |
| 27 | + self.MainWindow.resize(845, 583) |
| 28 | + self.centralwidget = QtWidgets.QWidget(self.MainWindow) |
| 29 | + self.centralwidget.setObjectName("centralwidget") |
| 30 | + self.playpause = QtWidgets.QPushButton(self.centralwidget) |
| 31 | + self.playpause.clicked.connect(self.MainWindow.game.playPause) # ajoutee |
| 32 | + self.playpause.setGeometry(QtCore.QRect(530, 30, 141, 27)) |
| 33 | + self.playpause.setObjectName("playpause") |
| 34 | + self.reset = QtWidgets.QPushButton(self.centralwidget) |
| 35 | + self.reset.clicked.connect(self.MainWindow.game.reset) # ajoutee |
| 36 | + self.reset.setGeometry(QtCore.QRect(700, 30, 131, 27)) |
| 37 | + self.reset.setObjectName("reset") |
| 38 | + self.gameWidget = gameWidget(self.centralwidget, self.MainWindow.game) |
| 39 | + self.gameWidget.setGeometry(QtCore.QRect(20, 20, 500, 500)) |
| 40 | + self.gameWidget.setObjectName("gameWidget") |
| 41 | + self.nbAgents = QtWidgets.QLabel(self.centralwidget) |
| 42 | + self.nbAgents.setGeometry(QtCore.QRect(530, 70, 131, 17)) |
| 43 | + self.nbAgents.setObjectName("nbAgents") |
| 44 | + self.e1 = QtWidgets.QLabel(self.centralwidget) |
| 45 | + self.e1.setGeometry(QtCore.QRect(530, 110, 71, 17)) |
| 46 | + self.e1.setObjectName("e1") |
| 47 | + self.learningRate = QtWidgets.QLabel(self.centralwidget) |
| 48 | + self.learningRate.setGeometry(QtCore.QRect(530, 210, 111, 17)) |
| 49 | + self.learningRate.setObjectName("learningRate") |
| 50 | + self.e2 = QtWidgets.QLabel(self.centralwidget) |
| 51 | + self.e2.setGeometry(QtCore.QRect(710, 110, 61, 17)) |
| 52 | + self.e2.setObjectName("e2") |
| 53 | + self.rSpawnRate = QtWidgets.QLabel(self.centralwidget) |
| 54 | + self.rSpawnRate.setGeometry(QtCore.QRect(530, 170, 151, 17)) |
| 55 | + self.rSpawnRate.setObjectName("rSpawnRate") |
| 56 | + self.rdmPathProb = QtWidgets.QLabel(self.centralwidget) |
| 57 | + self.rdmPathProb.setGeometry(QtCore.QRect(530, 250, 151, 17)) |
| 58 | + self.rdmPathProb.setObjectName("rdmPathProb") |
| 59 | + self.timePeriod = QtWidgets.QLabel(self.centralwidget) |
| 60 | + self.timePeriod.setGeometry(QtCore.QRect(530, 330, 151, 17)) |
| 61 | + self.timePeriod.setObjectName("timePeriod") |
| 62 | + self.timeModulo = QtWidgets.QLabel(self.centralwidget) |
| 63 | + self.timeModulo.setGeometry(QtCore.QRect(530, 360, 151, 17)) |
| 64 | + self.timeModulo.setObjectName("timeModulo") |
| 65 | + self.nbEpisodesLabel = QtWidgets.QLabel(self.centralwidget) |
| 66 | + self.nbEpisodesLabel.setGeometry(QtCore.QRect(530, 470, 151, 17)) |
| 67 | + self.nbEpisodesLabel.setObjectName("nbEpisodesLabel") |
| 68 | + self.spinBoxE1 = QtWidgets.QSpinBox(self.centralwidget) |
| 69 | + self.spinBoxE1.valueChanged.connect(self.updateNbE1) # ajoutee |
| 70 | + self.spinBoxE1.setGeometry(QtCore.QRect(600, 100, 51, 27)) |
| 71 | + self.spinBoxE1.setObjectName("spinBoxE1") |
| 72 | + self.spinBoxE1.setValue(1) #ajoutee |
| 73 | + self.spinBoxE2 = QtWidgets.QSpinBox(self.centralwidget) |
| 74 | + self.spinBoxE2.valueChanged.connect(self.updateNbE2) # ajoutee |
| 75 | + self.spinBoxE2.setGeometry(QtCore.QRect(780, 100, 51, 27)) |
| 76 | + self.spinBoxE2.setObjectName("spinBoxE2") |
| 77 | + self.nbEpisodes = QtWidgets.QLabel(self.centralwidget) |
| 78 | + self.nbEpisodes.setGeometry(QtCore.QRect(680, 460, 51, 31)) |
| 79 | + self.nbEpisodes.setObjectName("nbEpisodes") |
| 80 | + self.SpinBoxLearningRate = QtWidgets.QDoubleSpinBox(self.centralwidget) |
| 81 | + self.SpinBoxLearningRate.valueChanged.connect(self.updateLR) # ajoutee |
| 82 | + self.SpinBoxLearningRate.setGeometry(QtCore.QRect(690, 200, 141, 27)) |
| 83 | + self.SpinBoxLearningRate.setDecimals(10) |
| 84 | + self.SpinBoxLearningRate.setObjectName("SpinBoxLearningRate") |
| 85 | + self.SpinBoxTimePeriod = QtWidgets.QDoubleSpinBox(self.centralwidget) |
| 86 | + self.SpinBoxTimePeriod.valueChanged.connect(self.updateTimePeriod) # ajoutee |
| 87 | + self.SpinBoxTimePeriod.setGeometry(QtCore.QRect(650, 320, 91, 27)) |
| 88 | + self.SpinBoxTimePeriod.setDecimals(4) |
| 89 | + self.SpinBoxTimePeriod.setObjectName("SpinBoxTimePeriod") |
| 90 | + self.SpinBoxTimePeriod.setRange(1,99999) #ajoutee |
| 91 | + self.SpinBoxTimePeriod.setValue(TIME_PERIOD) #ajoutee |
| 92 | + self.spinBoxModulo = QtWidgets.QSpinBox(self.centralwidget) |
| 93 | + self.spinBoxModulo.valueChanged.connect(self.updateTimeModulo) # ajoutee |
| 94 | + self.spinBoxModulo.setGeometry(QtCore.QRect(650, 360, 100, 27)) |
| 95 | + self.spinBoxModulo.setObjectName("spinBoxModulo") |
| 96 | + self.spinBoxModulo.setRange(1,99999) #ajoutee |
| 97 | + self.SpinBoxRSR = QtWidgets.QDoubleSpinBox(self.centralwidget) # resource spawn rate |
| 98 | + self.SpinBoxRSR.valueChanged.connect(self.updateRSR) # ajoutee |
| 99 | + self.SpinBoxRSR.setGeometry(QtCore.QRect(690, 160, 141, 27)) |
| 100 | + self.SpinBoxRSR.setDecimals(10) |
| 101 | + self.SpinBoxRSR.setObjectName("SpinBoxRSR") |
| 102 | + self.SpinBoxRPP = QtWidgets.QDoubleSpinBox(self.centralwidget) # random path prob |
| 103 | + self.SpinBoxRPP.valueChanged.connect(self.updateRPP) # ajoutee |
| 104 | + self.SpinBoxRPP.setGeometry(QtCore.QRect(690, 240, 141, 27)) |
| 105 | + self.SpinBoxRPP.setDecimals(10) |
| 106 | + self.SpinBoxRPP.setObjectName("SpinBoxRPP") |
| 107 | + self.MainWindow.setCentralWidget(self.centralwidget) |
| 108 | + self.menubar = QtWidgets.QMenuBar(self.MainWindow) |
| 109 | + self.menubar.setGeometry(QtCore.QRect(0, 0, 845, 25)) |
| 110 | + self.menubar.setObjectName("menubar") |
| 111 | + self.MainWindow.setMenuBar(self.menubar) |
| 112 | + self.statusbar = QtWidgets.QStatusBar(self.MainWindow) |
| 113 | + self.statusbar.setObjectName("statusbar") |
| 114 | + self.MainWindow.setStatusBar(self.statusbar) |
| 115 | + |
| 116 | + self.retranslateUi() |
| 117 | + QtCore.QMetaObject.connectSlotsByName(self.MainWindow) |
| 118 | + |
| 119 | + def retranslateUi(self): |
| 120 | + _translate = QtCore.QCoreApplication.translate |
| 121 | + self.MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) |
| 122 | + self.playpause.setText(_translate("MainWindow", "Play / Pause")) |
| 123 | + self.reset.setText(_translate("MainWindow", "Reset")) |
| 124 | + self.nbAgents.setText(_translate("MainWindow", "Nombre d\'Agents")) |
| 125 | + self.e1.setText(_translate("MainWindow", "Equipe 1:")) |
| 126 | + self.learningRate.setText(_translate("MainWindow", "Learning rate : ")) |
| 127 | + self.e2.setText(_translate("MainWindow", "Equipe 2:")) |
| 128 | + self.rSpawnRate.setText(_translate("MainWindow", "Resource spawn rate : ")) |
| 129 | + self.rdmPathProb.setText(_translate("MainWindow", "Random path prob:")) |
| 130 | + self.timePeriod.setText(_translate("MainWindow", "Time period:")) |
| 131 | + self.timeModulo.setText(_translate("MainWindow", "Time modulo:")) |
| 132 | + self.nbEpisodesLabel.setText(_translate("MainWindow", "Nombre d\'Episodes:")) |
| 133 | + self.nbEpisodes.setText(_translate("MainWindow", "<html><head/><body><p><span style=\" font-size:18pt; font-weight:600;\">0</span></p></body></html>")) |
| 134 | + def updateNbE1(self): # fonction pour le spinbox |
| 135 | + self.MainWindow.game.window_nb_agents_E1 = self.spinBoxE1.value() |
| 136 | + def updateNbE2(self): # fonction pour le spinbox |
| 137 | + self.MainWindow.game.window_nb_agents_E2 = self.spinBoxE2.value() |
| 138 | + def updateRSR(self): # fonction pour le spinbox |
| 139 | + self.MainWindow.game.window_resource_spawn_rate = self.SpinBoxRSR.value() |
| 140 | + def updateLR(self): # fonction pour le spinbox |
| 141 | + self.MainWindow.game.window_learning_rate = self.SpinBoxLearningRate.value() |
| 142 | + def updateRPP(self): # fonction pour le spinbox |
| 143 | + self.MainWindow.game.window_random_path_prob = self.SpinBoxRPP.value() |
| 144 | + def updateTimePeriod(self): # fonction pour le spinbox |
| 145 | + self.MainWindow.game.window_time_period = self.SpinBoxTimePeriod.value() |
| 146 | + def updateTimeModulo(self): # fonction pour le spinbox |
| 147 | + self.MainWindow.game.window_time_modulo = self.spinBoxModulo.value() |
| 148 | + |
| 149 | + |
| 150 | + |
| 151 | +class gameWidget(QWidget): |
| 152 | + #classe de l'aire d'affichage |
| 153 | + qp = None # Q painter |
| 154 | + brush = None # Q brush |
| 155 | + background_pm = None # pixmap pour le background |
| 156 | + game = None |
| 157 | + |
| 158 | + def __init__(self, parent, game): |
| 159 | + super().__init__(parent) |
| 160 | + |
| 161 | + self.qp = QPainter() |
| 162 | + self.game = game |
| 163 | + |
| 164 | + self.background_pm = QPixmap() |
| 165 | + self.background_pm.load(IMAGEPATH_BACKGROUND) |
| 166 | + #self.background_pm = QPixmap() |
| 167 | + #self.brush = QBrush(Qt.SolidPattern) |
| 168 | + |
| 169 | + self.setGeometry(0, 0, 100, 100) |
| 170 | + self.resize(WINDOW_WIDTH, WINDOW_HEIGHT) |
| 171 | + self.move(300, 300) |
| 172 | + self.show() |
| 173 | + |
| 174 | + def paintEvent(self, event): |
| 175 | + self.qp.begin(self) |
| 176 | + #self.qp.setBrush(self.brush) |
| 177 | + #afficher le background |
| 178 | + #self.qp.drawRect(0, 0, 10000, 10000) |
| 179 | + self.qp.drawPixmap(0,0,500,500,self.background_pm) |
| 180 | + #afficher les objets |
| 181 | + for objet in self.game.objectsList: |
| 182 | + objet.draw(self.qp) |
| 183 | + # ___ |
| 184 | + self.qp.end() |
| 185 | + |
| 186 | + |
| 187 | +class Fenetre(QtWidgets.QMainWindow): |
| 188 | + #classe d'affichage |
| 189 | + game = None |
| 190 | + def __init__(self, game): |
| 191 | + super().__init__() |
| 192 | + |
| 193 | + self.game = game |
| 194 | + |
| 195 | + self.setGeometry(300, 300, 350, 100) |
| 196 | + self.setWindowTitle('REINFORCEMENT LEARNING') |
| 197 | + self.resize(WINDOW_WIDTH, WINDOW_HEIGHT) |
| 198 | + self.move(300, 300) |
| 199 | + self.show() |
| 200 | + |
| 201 | + |
| 202 | + |
0 commit comments