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()
Esempio n. 2
0
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()