def __init__(self,duel): Thread.__init__(self) self.duelo=duel self.stop=False def run(self): while True: if self.duelo.anchopintado<=0: self.duelo.anchopintado=498 self.duelo.jugador.disminuirVidas() self.duelo.repaint() if self.duelo.jugador.vidas==0: self.duelo.anchopintado=0 self.duelo.repaint() break else: self.duelo.anchopintado-=5 self.duelo.repaint() sleep(0.1) if self.stop: break if __name__=="__main__": app=QApplication(sys.argv) jugador=Jugador(40,500,Qt.white,5) jugador.setNivel(2) Ventana_Duelo=Duelo(jugador) sys.exit(app.exec_())
class EscenarioDos(Escenario): pisoUno=None pisoDos=None pisoTres=None nivel_piso_x=200 #separacion horizontal entre pisos nivel_piso_y=300 # altura de los pisos valor=0 tam=0 def __init__(self,*args): #constructor Escenario.__init__(self,*args) self.mover=True color=QColor(0,0,155) self.jugador=Jugador(0,Escenario.dimension_y-self.nivel_piso_y-50,color,10)#posicion inicial del jugador self.jugador.setRadio(50) self.jugador.setNivel(2) self.setWindowTitle("Escenario Dos") self.thread_pintarPasadizo=Hilo(self,Accion.pasadizo) self.estadoEscenario=EstadoEscenario.pasadizoOff def paintEvent(self, event): paint = QPainter() paint.begin(self) paint.setRenderHint(QPainter.Antialiasing) fondoEscenario=QImage("Fondo_Escenario_Dos","png") center=QPoint(0,0) paint.drawImage(center,fondoEscenario) self.dibujarPisos(paint) paint.setBrush(self.jugador.getColor()) paint.drawEllipse(self.jugador.getPosX(),self.jugador.getPosY(),self.jugador.getRadio(),self.jugador.getRadio()) paint.setBrush(Qt.green) paint.drawRect(self.tam,Escenario.dimension_y-self.nivel_piso_y,self.thread_pintarPasadizo.valor_X,10)#rectangulo que se mueve paint.end() def dibujarPisos(self,painter): self.tam=125 #ancho del piso valor_X=0 valor_Y=0 pisoUno=QRect(0,Escenario.dimension_y-self.nivel_piso_y,self.tam,self.nivel_piso_y) pisoDos=QRect(self.tam,Escenario.dimension_y-20,self.nivel_piso_x,20) pisoTres=QRect(self.tam+self.nivel_piso_x,Escenario.dimension_y-self.nivel_piso_y,2*self.tam,self.nivel_piso_y)#piso tres es dos veces mas grande que piso Uno pisoCuatro=QRect(3*self.tam+self.nivel_piso_x+self.nivel_piso_x,Escenario.dimension_y-self.nivel_piso_y,2*self.tam,self.nivel_piso_y)#piso cuatro es dos veces mas grande que piso Uno painter.setBrush(Qt.green) painter.drawRect(pisoUno) painter.drawRect(pisoDos) painter.drawRect(pisoTres) painter.drawRect(pisoCuatro) #cajas de habilidad painter.setBrush(Qt.red) painter.drawRect(self.tam,Escenario.dimension_y-20-20,30,20) painter.drawRect(self.tam+self.nivel_piso_x+2*self.tam-30,Escenario.dimension_y-self.nivel_piso_y-20,30,20) def keyPressEvent(self,e): if self.mover==True and e.key()==QtCore.Qt.Key_Right: self.jugador.avanzar() self.repaint()# se vuelve a pintar el circulo con las nuevas coordenadas if self.estadoEscenario==EstadoEscenario.pasadizoOff and self.jugador.getPosX()>self.tam-self.jugador.getRadio()/2: #si el pasadizo esta cerrado jugador se cae al piso dos self.my_thread=Hilo(self,Accion.caida) self.mover=False #Bloquea el movimiento self.my_thread.start() if self.mover==True and e.key()==QtCore.Qt.Key_Left: self.jugador.retroceder() self.repaint() if self.jugador.getPosY()>Escenario.dimension_y-self.nivel_piso_y and self.jugador.getPosX()< self.tam+30 and e.key()==QtCore.Qt.Key_X: self.mover=False #bloquea el movimiento self.hilo=Hilo(self,Accion.teletransportacion) self.hilo.start() if self.jugador.getPosX()== self.tam+self.nivel_piso_x+2*self.tam-30 and e.key()==QtCore.Qt.Key_Y: self.mover=False #bloquea el movimiento self.hilo=Hilo(self,Accion.salto) self.hilo.start() if self.jugador.getPosX()>3*self.tam+self.nivel_piso_x+self.nivel_piso_x: self.duelo=Duelo(self.jugador) def activarPasadizo(self): self.mover==False #bloquea el movimiento self.thread_pintarPasadizo.start()