Nantes Université

Skip to content
Extraits de code Groupes Projets
Valider 36d44674 rédigé par Mikaël BRIDAY's avatar Mikaël BRIDAY
Parcourir les fichiers

pix voitures, user log

parent 5a823147
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import random
class QDrawing(QWidget):
......@@ -13,7 +14,13 @@ class QDrawing(QWidget):
self.carPos = [0]*10 #0 to 1
self.carState = ['drive']*10 #drive, load, ferry, unload
self.repaintSignal.connect(self.repaint)
self.pixOrig = QPixmap('bac/voiture.png')
self.pixOrig = []
files = []
for i in range(6):
files.append('bac/icons/voiture{0}.png'.format(i+1))
for i in range(10):
idx = random.randint(0,len(files)-1)
self.pixOrig.append(QPixmap(files[idx]))
def sizeHint(self):
return QSize(40,140)
......@@ -27,7 +34,9 @@ class QDrawing(QWidget):
ferryWidth = .12*width
groundFirstPartWidth = .6*width
carWidth = ferryWidth*0.9
pix = self.pixOrig.scaledToWidth(carWidth,Qt.SmoothTransformation)
pix = []
for i in range(10):
pix.append(self.pixOrig[i].scaledToWidth(carWidth,Qt.SmoothTransformation))
#background
colorGround = QColor('#a77844')
colorWater = QColor('#0f03ff')
......@@ -48,13 +57,13 @@ class QDrawing(QWidget):
carPosInFerry = ferryPixelPos+.1*carWidth
for i in range(10):
if self.carState[i] == 'drive':
painter.drawPixmap(self.carPos[i]*(groundFirstPartWidth-carWidth),i*height/10.,pix)
painter.drawPixmap(self.carPos[i]*(groundFirstPartWidth-carWidth),i*height/10.,pix[i])
elif self.carState[i] == 'load': #offset in ferry: .1*carWidth
painter.drawPixmap(groundFirstPartWidth+carWidth*(self.carPos[i]*1.1-1),i*height/10.,pix)
painter.drawPixmap(groundFirstPartWidth+carWidth*(self.carPos[i]*1.1-1),i*height/10.,pix[i])
elif self.carState[i] == 'ferry':
painter.drawPixmap(carPosInFerry,i*height/10.,pix)
painter.drawPixmap(carPosInFerry,i*height/10.,pix[i])
elif self.carState[i] == 'unload':
painter.drawPixmap(carPosInFerry + 1.2*carWidth*self.carPos[i],i*height/10.,pix)
painter.drawPixmap(carPosInFerry + 1.2*carWidth*self.carPos[i],i*height/10.,pix[i])
else:
raise Exception('internal error car state in QDrawing')
......
......@@ -42,12 +42,19 @@ class ferry(threading.Thread):
if not cond:
msg = "erreur '"+info+"': bac dans l'état '"+ferry.fsmString[self.fsm.current]
if self.debugEventModel:
self.debugEventModel.addEv(True,msg)
self.debugEventModel.addEv(1,msg)
print(msg)
sys.exit(1)
else:
if self.debugEventModel and msgIfOk:
self.debugEventModel.addEv(False,'ferry: : '+info)
self.debugEventModel.addEv(0,'ferry: : '+info)
def log(self,txt):
if self.debugEventModel:
if isinstance(txt,str):
self.debugEventModel.addEv(2,txt)
else:
self.debugEventModel.addEv(1,'bad argument when calling log')
def traverser(self):
self.check(self.fsm.isstate('atStart'),'traverser')
......@@ -105,14 +112,20 @@ class car(threading.Thread):
if not cond:
msg = "erreur '"+info+"': voiture "+str(self.carId) +" dans l'état '"+car.fsmString[self.fsm.current]+"' et bac dans l'état '"+self.ferry.fsmString[self.ferry.fsm.current]+"'"
if self.debugEventModel:
self.debugEventModel.addEv(True,msg)
self.debugEventModel.addEv(1,msg)
print(msg)
sys.exit(1)
else:
if self.debugEventModel and msgIfOk:
self.debugEventModel.addEv(False,'voiture '+str(self.carId)+': '+info)
self.debugEventModel.addEv(0,'voiture '+str(self.carId)+': '+info)
def log(self,txt):
if self.debugEventModel:
if isinstance(txt,str):
self.debugEventModel.addEv(2,txt)
else:
self.debugEventModel.addEv(1,'bad argument when calling log')
def avancer(self):
#drive
self.check(self.fsm.isstate('atStart'),'avancer')
......
......@@ -6,10 +6,11 @@ from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
pb = QImage('bac/cross.png').scaled(16,16,Qt.KeepAspectRatio)
pb = QImage('bac/icons/cross.png').scaled(16,16,Qt.KeepAspectRatio)
log = QImage('bac/icons/arrow-000.png').scaled(16,16,Qt.KeepAspectRatio)
class debugEventModel(QAbstractListModel):
signalAddEv = pyqtSignal(bool,str)
signalAddEv = pyqtSignal(int,str)
signalScroll = pyqtSignal()
def __init__(self,*args,debugEvent=None,**kwargs):
......@@ -24,8 +25,10 @@ class debugEventModel(QAbstractListModel):
if role == Qt.ToolTipRole:
return 'tooltip:'+text
if role == Qt.DecorationRole:
if status:
if status==1: #error
return pb
if status==2: #log
return log
def rowCount(self,index):
return len(self.debugEvent)
......@@ -33,7 +36,7 @@ class debugEventModel(QAbstractListModel):
def addEv(self,error,text):
self.signalAddEv.emit(error,text)
@pyqtSlot(bool,str)
@pyqtSlot(int,str)
def addEvGUIThread(self,error,text):
assert threading.current_thread() is threading.main_thread()
index = QModelIndex()
......
bac/icons/arrow-000.png

615 octets

Fichier déplacé
bac/icons/voiture1.png

62,6 ko

bac/icons/voiture2.png

40,8 ko

bac/icons/voiture3.png

68,7 ko

bac/icons/voiture4.png

54,3 ko

bac/icons/voiture5.png

66,4 ko

bac/icons/voiture6.png

73,9 ko

Fichier déplacé
......@@ -18,6 +18,7 @@ def ferryRun(self):
- self.traverser()
- self.revenir()
"""
self.log("ne fait rien…")
time.sleep(1)
def carRun(self):
......@@ -27,6 +28,7 @@ def carRun(self):
- self.debarquer()
"""
self.avancer()
self.log("devant l'eau!")
time.sleep(1)
def terminateCalled(self):
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter