Skip to content

Commit a83215d

Browse files
author
Pedro Foletto Pimenta
committed
time modulo et details de l'interface
1 parent 9975cbe commit a83215d

File tree

7 files changed

+307
-29
lines changed

7 files changed

+307
-29
lines changed

TODO_List

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ DERNIERE MAJ:
1616
-Area(Zone d'affichage)
1717

1818
-Interface
19+
-fonction play / pause
20+
-fonction reset
21+
1922
///////////////////////////////////////////////////////////////////////
2023

2124
A FAIRE:
@@ -27,8 +30,6 @@ Mode "training"
2730

2831
Création de ressources
2932
Rotation des images
30-
fonction play / pause
31-
fonction reset
3233
fonction update
3334

3435

TODO_List~

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/////////////////////////////////////////////////////////////////////
2+
DERNIERE MAJ:
3+
-La gestion collision est maintenant une methode de la classe objet
4+
-Methode draw (affichage) dans class objet
5+
-Mise en place d'équipe:
6+
team = 0 => ressource et block
7+
team = 1 => agent et tir (équipe bleu)
8+
team = 2 => agent et tir (équipe rouge)
9+
10+
-Ajout de classe :
11+
*Classe Tir
12+
*Classe Resource
13+
*Classe Block
14+
15+
-Affichage des objets (méthode draw(self) dans class objet)
16+
-Area(Zone d'affichage)
17+
18+
-Interface
19+
///////////////////////////////////////////////////////////////////////
20+
21+
A FAIRE:
22+
23+
Mode "evaluation"
24+
Mode "training"
25+
26+
:::::::::::::::::::::::::::::::Pour le JEU:::::::::::::::::::::::::::::::::::::::
27+
28+
Création de ressources
29+
Rotation des images
30+
fonction play / pause
31+
fonction reset
32+
fonction update
33+
34+
35+
36+
:::::::::::::::::::::::::::::Pour le learning:::::::::::::::::::::::::::::::::
37+
38+
Plein de chose.
39+
40+

__pycache__/interface.cpython-34.pyc

134 Bytes
Binary file not shown.

interface.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
WINDOW_WIDTH = 800
1515
WINDOW_HEIGHT = 500
1616

17+
TIME_PERIOD = 100 # miliseconds entre frames
18+
1719
IMAGEPATH_BACKGROUND = "Images/background.jpg"
1820

1921
class Ui_MainWindow(object):
@@ -67,6 +69,7 @@ def setupUi(self, MainWindow):
6769
self.spinBoxE1.valueChanged.connect(self.updateNbE1) # ajoutee
6870
self.spinBoxE1.setGeometry(QtCore.QRect(600, 100, 51, 27))
6971
self.spinBoxE1.setObjectName("spinBoxE1")
72+
self.spinBoxE1.setValue(1) #ajoutee
7073
self.spinBoxE2 = QtWidgets.QSpinBox(self.centralwidget)
7174
self.spinBoxE2.valueChanged.connect(self.updateNbE2) # ajoutee
7275
self.spinBoxE2.setGeometry(QtCore.QRect(780, 100, 51, 27))
@@ -84,10 +87,13 @@ def setupUi(self, MainWindow):
8487
self.SpinBoxTimePeriod.setGeometry(QtCore.QRect(650, 320, 91, 27))
8588
self.SpinBoxTimePeriod.setDecimals(4)
8689
self.SpinBoxTimePeriod.setObjectName("SpinBoxTimePeriod")
90+
self.SpinBoxTimePeriod.setRange(1,99999) #ajoutee
91+
self.SpinBoxTimePeriod.setValue(TIME_PERIOD) #ajoutee
8792
self.spinBoxModulo = QtWidgets.QSpinBox(self.centralwidget)
8893
self.spinBoxModulo.valueChanged.connect(self.updateTimeModulo) # ajoutee
89-
self.spinBoxModulo.setGeometry(QtCore.QRect(650, 360, 60, 27))
94+
self.spinBoxModulo.setGeometry(QtCore.QRect(650, 360, 100, 27))
9095
self.spinBoxModulo.setObjectName("spinBoxModulo")
96+
self.spinBoxModulo.setRange(1,99999) #ajoutee
9197
self.SpinBoxRSR = QtWidgets.QDoubleSpinBox(self.centralwidget) # resource spawn rate
9298
self.SpinBoxRSR.valueChanged.connect(self.updateRSR) # ajoutee
9399
self.SpinBoxRSR.setGeometry(QtCore.QRect(690, 160, 141, 27))

interface.py~

Lines changed: 202 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,202 @@
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

Comments
 (0)