class EscenarioTres(Escenario): def __init__(self,*args): Escenario.__init__(self,*args) self.mover=True #sirve para saber si el jugador se puede mover self.todoTerreno=False self._iniPendiente=500 self._finPendiente=755 self.hiloCaida=None self.hiloSalto=None self.piso1=430 self.piso2=290 self.Duelo=None self.jugador=Jugador(20,430,Qt.white,5) self.setWindowTitle("Escenario Tres") def dibujarCofres(self,paint): paint.setBrush(Qt.red) paint.drawRect(40,413,35,35) paint.drawRect(370,413,35,35) def paintEvent(self, event): paint = QPainter() paint.begin(self) paint.setRenderHint(QPainter.Antialiasing) paint.setBrush(Qt.white) # cambiar el color paint.drawRect(event.rect()) imagen=QImage("fondo3","jpg") center=QPoint(0,0) paint.drawImage(center,imagen) self.dibujarCofres(paint) paint.setBrush(self.jugador.getColor()) center = QPoint(self.jugador.getPosX(), self.jugador.getPosY()) paint.drawEllipse(center,self.jugador.getRadio(),self.jugador.getRadio()) paint.end() #se define el movimiento de el jugador def keyPressEvent(self,e): if self.mover and e.key()==QtCore.Qt.Key_Right: x=self.jugador.getPosX() if (x>= 850) : self.mover = False self.Duelo=Duelo(self.jugador) elif(self.todoTerreno and x>self._iniPendiente and x<self._finPendiente): self.jugador.avanzar() self.jugador.acender(2.65) elif x<=self._iniPendiente or x>=self._finPendiente: self.jugador.avanzar() if x>=100 and x<=200: self.hiloCaida=HiloCaida(self,1) self.hiloCaida.start() else: self.repaint() if self.mover and e.key()==QtCore.Qt.Key_Left: x=self.jugador.getPosX() if(x>self._iniPendiente and x<self._finPendiente): self.jugador.retroceder() self.jugador.descender(2.65) elif x<=self._iniPendiente or x>=self._finPendiente: self.jugador.retroceder() if x>=200 and x<=300: self.hiloCaida=HiloCaida(self,-1) self.hiloCaida.start() else: self.repaint() if self.mover and e.key()==QtCore.Qt.Key_X: if(self.jugador.getPosX()>=40 and self.jugador.getPosX()<=75): self.hiloSalto=HiloSalto(self) self.hiloSalto.start() if(self.jugador.getPosX()>=370 and self.jugador.getPosX()<=420): self.todoTerreno=True self.jugador.setColor(Qt.black) self.repaint()
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()