class EscenaInicio(Escena):
    "Escena ejeutada tras perder el juego."
    def __init__(self):
        "Inicializar Escena de Juego Terminado."
        Escena.__init__(self)
        self.fondo = cargar_imagen("inicial.jpg")
        self.titulo = Texto("UD Bricks", tamano = 72)
        self.iniciar = Texto("[F5] Iniciar Juego", tamano = 36)
        self.salir = Texto("Salir [ESC]", tamano = 36)
        
    def leer_eventos(self, eventos):
        "Redirecciona a la pantalla adecuada."
        for evento in eventos:
            if evento.type == p.KEYDOWN:
                if evento.key == p.K_F5:
                    self.cambiar_escena(EscenaJuego())

    def dibujar(self, pantalla):
        "Mostrar pantalla de juego terminado."
        pantalla.blit(self.fondo, (0, 0))
        pantalla.blit(self.titulo.mostrar(), 
            ((WIDTH-self.titulo.rect.w)/2, (HEIGHT-self.titulo.rect.h)/2)
        )
        pantalla.blit(self.iniciar.mostrar(), 
            (10, HEIGHT-self.iniciar.rect.h-10)
        )
        pantalla.blit(self.salir.mostrar(), 
            (WIDTH-self.salir.rect.w-10, HEIGHT-self.salir.rect.h-10)
        )
Beispiel #2
0
class EscenaJuegoTerminado(Escena):
    "Escena ejeutada tras perder el juego."

    def __init__(self, puntos):
        "Inicializar Escena de Juego Terminado."
        Escena.__init__(self)
        self.fondo = cargar_imagen("terminado.jpg")
        self.instrucciones = Multilinea(("Reiniciar [F5]", "Salir [Esc]"))
        self.instrucciones.pos(2, 2, 16, 16)
        self.terminado = Texto("Juego Terminado", tamano=72)
        self.puntos = Texto("Puntos: " + str(puntos), tamano=48)

    def eventos(self, teclado=None):
        "Redirecciona a la pantalla adecuada."
        if teclado:
            if teclado[0].key == K_F5:
                self.cambiar_escena(EscenaJuego())

    def dibujar(self, pantalla):
        "Mostrar pantalla de juego terminado."
        pantalla.blit(self.fondo, (0, 0))
        self.instrucciones.mostrar(pantalla, 2)
        pantalla.blit(self.terminado.mostrar(),
                      self.terminado.pos(1, 1, 0, -24))
        pantalla.blit(self.puntos.mostrar(), self.puntos.pos(1, 1, 0, 24))
Beispiel #3
0
class EscenaJuego(Escena):
    "Escena del juego."
    def __init__(self):
        Escena.__init__(self)
        #Creacion de objetos del videojuego.
        self.serpiente = Serpiente()
        self.comida = Comida(self.serpiente)
        #Variables de control.
        self.puntos = 0
        self.termino = False
        #Textos.
        self.puntuacion = Texto("Puntos: ")
                        
    def eventos(self, teclado = None):
        self.serpiente.teclado(teclado)
        
    def actualizar(self):
        self.serpiente.actualizar()
        if self.serpiente.se_alimento(self.comida):
            self.comida.generar(self.serpiente)
            self.puntos += 10
        if self.serpiente.colisiona():
            self.cambiar_escena(EscenaJuegoTerminado(self.puntos))
        
    def dibujar(self, pantalla):
        "Muestra los objetos en pantalla."
        pantalla.fill( (0x11, 0x11, 0x11) )        
        #Dibujar objetos en la interfaz.
        pantalla.blit(self.comida.image, self.comida.mostrar())
        pantalla.blit(self.puntuacion.mostrar(str(self.puntos)), 
            self.puntuacion.pos(horz= 0, vert= 0))
        #Dibujar la serpiente.
        for i in range(0, len(self.serpiente.cuerpo)):
            pantalla.blit(self.serpiente.image, self.serpiente.cuerpo[i])
Beispiel #4
0
	def actualizar(self, pantalla):
		cadena="Marcador = "+ str(self.marcador)
		pantalla.fill((0,0,0))
		txt_salir = Texto(cadena, 30)
		txt_salir.pos(2, 2)
		pantalla.blit(txt_salir.mostrar(), txt_salir.pos(20, 20, 0, 0))
		cadena="Contador: "+ str(self.segundosTotal)
		txt_salir = Texto(cadena, 30)
		txt_salir.pos(1, 0)
		pantalla.blit(txt_salir.mostrar(), txt_salir.pos(2, 2, 0, 0))
		for recs in self.listarec:
			p.draw.rect(pantalla,(255,255,0), recs)
		for recs in self.listarec2:
			p.draw.rect(pantalla,(255,0,255), recs)
		p.draw.rect(pantalla, (200,20,20), self.r1)
		p.display.update()
Beispiel #5
0
class EscenaJuego(Escena):
    "Escena del juego."

    def __init__(self):
        Escena.__init__(self)
        #Creacion de objetos del videojuego.
        self.serpiente = Serpiente()
        self.comida = Comida(self.serpiente)
        #Variables de control.
        self.puntos = 0
        self.termino = False
        #Textos.
        self.puntuacion = Texto("Puntos: ")

    def eventos(self, teclado=None):
        self.serpiente.teclado(teclado)

    def actualizar(self):
        self.serpiente.actualizar()
        if self.serpiente.se_alimento(self.comida):
            self.comida.generar(self.serpiente)
            self.puntos += 10
        if self.serpiente.colisiona():
            self.cambiar_escena(EscenaJuegoTerminado(self.puntos))

    def dibujar(self, pantalla):
        "Muestra los objetos en pantalla."
        pantalla.fill((0x11, 0x11, 0x11))
        #Dibujar objetos en la interfaz.
        pantalla.blit(self.comida.image, self.comida.mostrar())
        pantalla.blit(self.puntuacion.mostrar(str(self.puntos)),
                      self.puntuacion.pos(horz=0, vert=0))
        #Dibujar la serpiente.
        for i in range(0, len(self.serpiente.cuerpo)):
            pantalla.blit(self.serpiente.image, self.serpiente.cuerpo[i])
Beispiel #6
0
    def imprimirRankin(self, pantalla):
		# Establecemos la conexion
		Conexion = MySQLdb.connect(host='localhost', user='******',passwd='root', db='serpiente')
		# Creamos el cursor
		cursor = Conexion.cursor()
		cursor.execute("SELECT * FROM Puntos ORDER BY Puntuacion DESC")
		score_data = cursor.fetchall()
		rows = len (score_data)
		puntosTotales = Texto("Nombre        Puntos", tamano= 30)
		pantalla.blit(puntosTotales.mostrar(), puntosTotales.pos(0,0,200,320))
		for i in range (0,5):
			puntosTotales = Texto(score_data[i][1], tamano= 30)
			aux=350
			aux+=i*20  
			pantalla.blit(puntosTotales.mostrar(), puntosTotales.pos(0,0,200,aux))
			puntosTotales2 = Texto(str(score_data[i][2]), tamano= 30)
			aux2=350
			aux2+=i*20  
			pantalla.blit(puntosTotales2.mostrar(), puntosTotales2.pos(0,0,340,aux2))
		Conexion.close()
Beispiel #7
0
class EscenaTitulo(Escena):
    "Escena inicial para desplegar menu."
    def __init__(self):
        Escena.__init__(self)
        self.fondo = cargar_imagen("titulo.jpg")
        self.txt_salir = Texto("[ESC] Salir", 48)
        self.txt_salir.pos(2, 2)
        self.txt_jugar = Texto("[F5] Jugar", 48)
        
    def eventos(self, teclado = None):
        "Leer eventos para determinar la escena siguiente."
        if teclado:
            tecla = teclado[0].key
            if tecla == K_F5:
                self.cambiar_escena(EscenaJuego())
        
    def dibujar(self, pantalla):
        "Dibujar el menu principal del videojuego."
        pantalla.blit(self.fondo, (0, 0))
        pantalla.blit(self.txt_salir.mostrar(), self.txt_salir.pos(2, 2, 0, 0))
        pantalla.blit(self.txt_jugar.mostrar(), self.txt_jugar.pos(2, 2, 0, 64))
class EscenaJuego(Escena):
    "Clase que define la escena principal del videojuego."
    def __init__(self):
        "Inicialización de las variables del videojuego."
        Escena.__init__(self)
        self.fondo = cargar_imagen("fondo.jpg")
        self.pelota = Pelota()
        self.jugador = Jugador()
        self.muro = Muro()
        self.puntos = 0
        self.puntuacion = Texto("Puntos: ")
        self.vidas = 3
        self.t_vidas = Texto("Vidas: ")
        #Configuracion
        p.key.set_repeat(1, 25)
        
    def leer_eventos(self, eventos):
        for evento in eventos:
            if evento.type == p.KEYDOWN:
                self.jugador.mover(evento.key)
        
    def actualizar(self):
        "Actualiza los objetos del juego."
        self.pelota.actualizar()
        self.pelota.colision(self.jugador)
        self.puntos += self.pelota.colisionMultiple(self.muro.ladrillos)
        self.vidas  -= self.pelota.se_salio(self.jugador.rect)
        if self.vidas == 0:
            self.cambiar_escena(EscenaJuegoTerminado(self.puntos))

    def dibujar(self, pantalla):
        "Dibujar objetos en pantalla."
        pantalla.blit(self.fondo, (0, 0))
        pantalla.blit(self.puntuacion.mostrar(str(self.puntos)), (0, 0))
        pantalla.blit(self.t_vidas.mostrar(str(self.vidas)), (560, 0))
        pantalla.blit(self.pelota.image, self.pelota.rect)
        pantalla.blit(self.jugador.image, self.jugador.rect)
        for i in range(len(self.muro.ladrillos)):
            pantalla.blit(self.muro.image, self.muro.ladrillos[i])
Beispiel #9
0
class EscenaTitulo(Escena):
    "Escena inicial para desplegar menu."

    def __init__(self):
        Escena.__init__(self)
        self.fondo = cargar_imagen("titulo.jpg")
        self.txt_salir = Texto("[ESC] Salir", 48)
        self.txt_salir.pos(2, 2)
        self.txt_jugar = Texto("[F5] Jugar", 48)

    def eventos(self, teclado=None):
        "Leer eventos para determinar la escena siguiente."
        if teclado:
            tecla = teclado[0].key
            if tecla == K_F5:
                self.cambiar_escena(EscenaJuego())

    def dibujar(self, pantalla):
        "Dibujar el menu principal del videojuego."
        pantalla.blit(self.fondo, (0, 0))
        pantalla.blit(self.txt_salir.mostrar(), self.txt_salir.pos(2, 2, 0, 0))
        pantalla.blit(self.txt_jugar.mostrar(),
                      self.txt_jugar.pos(2, 2, 0, 64))
Beispiel #10
0
class EscenaJuegoTerminado(Escena):
    "Escena ejeutada tras perder el juego."
    def __init__(self, puntos):
        "Inicializar Escena de Juego Terminado."
        Escena.__init__(self)
        self.fondo = cargar_imagen("terminado.jpg")
        self.instrucciones = Multilinea( ("Reiniciar [F5]", "Salir [Esc]"))
        self.instrucciones.pos(2, 2, 16, 16)
        self.terminado = Texto("Juego Terminado", tamano= 72)
        self.puntos = Texto("Puntos: " + str(puntos), tamano= 48)
        
    def eventos(self, teclado= None):
        "Redirecciona a la pantalla adecuada."
        if teclado:
            if teclado[0].key == K_F5:
                self.cambiar_escena(EscenaJuego())

    def dibujar(self, pantalla):
        "Mostrar pantalla de juego terminado."
        pantalla.blit(self.fondo, (0, 0))
        self.instrucciones.mostrar(pantalla, 2)
        pantalla.blit(self.terminado.mostrar(), 
            self.terminado.pos(1, 1, 0, -24))
        pantalla.blit(self.puntos.mostrar(), self.puntos.pos(1, 1, 0, 24))
Beispiel #11
0
	def terminado(self, pantalla):
		if  self.marcador<1000:
			cadena="GameOver Min 1000"+ " tu puntuacion de: " + str(self.marcador)
			pantalla.fill((0,0,0))
			self.txt_salir = Texto(cadena, tamano=30)
			self.txt_salir.pos(2, 2)
			pantalla.blit(self.txt_salir.mostrar(), self.txt_salir.pos(20, 20, 0, 0))
			p.display.update()
		else:
			cadena="Coseguido puntuacion>1000 puntos: "+ " " + str(self.marcador)
			pantalla.fill((0,0,0))
			txt_salir = Texto(cadena, 30)
			txt_salir.pos(2, 2)
			pantalla.blit(txt_salir.mostrar(), txt_salir.pos(20, 20, 0, 0))
			p.display.update()
Beispiel #12
0
 def dibujar(self):
     "Muestra los objetos en pantalla."
     self.pantalla.fill( (0x11, 0x11, 0x11) )        
     #Dibujar objetos en la interfaz.
     self.pantalla.blit(self.comida.image, self.comida.mostrar())
     self.pantalla.blit(self.puntuacion.mostrar(str(self.puntos)), 
         self.puntuacion.pos(horz= 0, vert= 0))
     #Dibujar la serpiente.
     for i in range(0, len(self.serpiente.cuerpo)):
         self.pantalla.blit(self.serpiente.image, self.serpiente.cuerpo[i])
     #Juego Terminado
     if self.termino:
         self.instrucciones.mostrar(self.pantalla, 2)
         terminado = Texto("Juego Terminado", tamano= 72)
         self.pantalla.blit(terminado.mostrar(), terminado.pos(1, 1))
     p.display.flip()
Beispiel #13
0
 def dibujar(self):
     "Muestra los objetos en pantalla."
     self.pantalla.fill((0x11, 0x11, 0x11))
     #Dibujar objetos en la interfaz.
     self.pantalla.blit(self.comida.image, self.comida.mostrar())
     self.pantalla.blit(self.puntuacion.mostrar(str(self.puntos)),
                        self.puntuacion.pos(horz=0, vert=0))
     #Dibujar la serpiente.
     for i in range(0, len(self.serpiente.cuerpo)):
         self.pantalla.blit(self.serpiente.image, self.serpiente.cuerpo[i])
     #Juego Terminado
     if self.termino:
         self.instrucciones.mostrar(self.pantalla, 2)
         terminado = Texto("Juego Terminado", tamano=72)
         self.pantalla.blit(terminado.mostrar(), terminado.pos(1, 1))
     p.display.flip()
Beispiel #14
0
    def dibujar(self, pantalla, value):
		if value==False:
		    "Muestra los objetos en pantalla."
		    pantalla.fill( (0x11, 0x11, 0x11) )        
		    #Dibujar objetos en la interfaz.
		    pantalla.blit(self.comida.image, self.comida.mostrar())
		    pantalla.blit(self.puntuacion.mostrar(str(self.puntos)), 
		        self.puntuacion.pos(horz= 0, vert= 0))
		    #Dibujar la serpiente.
		    for i in range(0, len(self.serpiente.cuerpo)):
		        pantalla.blit(self.serpiente.image, self.serpiente.cuerpo[i])
		else:
			puntosTotales = Texto("Puntos: " + str(self.puntos), tamano= 32)  
			pantalla.blit(self.fondo, (0, 0))
			pantalla.blit(self.terminado.mostrar(),self.terminado.pos(1, 1, 0, -24))
			pantalla.blit(puntosTotales.mostrar(), puntosTotales.pos(1, 1, 0, 24))
			self.rankin(pantalla)
Beispiel #15
0
class EscenaJuego():
    "Escena del juego."
    def __init__(self, nombre):
		"Nombre del jugador"
		self.nombre=nombre
		"Creamos los objetos del juego"
		self.serpiente = Serpiente()
		self.comida = Comida(self.serpiente)
		"Variables de control y puntuacion"
		self.puntos = 0
		self.haComido=False	
		self.insertar=False	
		self.termino = False
		"Texto"
		self.puntuacion = Texto("Puntos: ")
		self.fondo = cargar_imagen("terminado.jpg")
		self.terminado = Texto("Juego Terminado", tamano= 50) 
		
    "Mover la Serpiente"    
    def eventos(self, teclado = None):
        self.serpiente.teclado(teclado)

    "Comprobamos si la serpiente ha comido o colisiona"  
    def actualizar(self):
		self.serpiente.actualizar()
		if self.serpiente.se_alimento(self.comida):
			self.haComido=True
			self.comida.generar(self.serpiente)
			self.puntos += 10
		else:
			self.haComido=False
		if self.serpiente.colisiona():
			return True
		return False

    def comer(self):
        return self.haComido
    


    "Dibujamos la serpiente y la comida, tambien controla el final de la partida en el else"	
    def dibujar(self, pantalla, value):
		if value==False:
		    "Muestra los objetos en pantalla."
		    pantalla.fill( (0x11, 0x11, 0x11) )        
		    #Dibujar objetos en la interfaz.
		    pantalla.blit(self.comida.image, self.comida.mostrar())
		    pantalla.blit(self.puntuacion.mostrar(str(self.puntos)), 
		        self.puntuacion.pos(horz= 0, vert= 0))
		    #Dibujar la serpiente.
		    for i in range(0, len(self.serpiente.cuerpo)):
		        pantalla.blit(self.serpiente.image, self.serpiente.cuerpo[i])
		else:
			puntosTotales = Texto("Puntos: " + str(self.puntos), tamano= 32)  
			pantalla.blit(self.fondo, (0, 0))
			pantalla.blit(self.terminado.mostrar(),self.terminado.pos(1, 1, 0, -24))
			pantalla.blit(puntosTotales.mostrar(), puntosTotales.pos(1, 1, 0, 24))
			self.rankin(pantalla)

    "Insertamos la puntuacion e imprimimos el rankin"
    def rankin(self, pantalla):
		#Comprobamos que es la primera vez que entra para insertar la puntuacion
		if self.insertar==False and self.puntos!=0:
			self.insertarPuntos()
		self.imprimirRankin(pantalla)
		
		
    def imprimirRankin(self, pantalla):
		# Establecemos la conexion
		Conexion = MySQLdb.connect(host='localhost', user='******',passwd='root', db='serpiente')
		# Creamos el cursor
		cursor = Conexion.cursor()
		cursor.execute("SELECT * FROM Puntos ORDER BY Puntuacion DESC")
		score_data = cursor.fetchall()
		rows = len (score_data)
		puntosTotales = Texto("Nombre        Puntos", tamano= 30)
		pantalla.blit(puntosTotales.mostrar(), puntosTotales.pos(0,0,200,320))
		for i in range (0,5):
			puntosTotales = Texto(score_data[i][1], tamano= 30)
			aux=350
			aux+=i*20  
			pantalla.blit(puntosTotales.mostrar(), puntosTotales.pos(0,0,200,aux))
			puntosTotales2 = Texto(str(score_data[i][2]), tamano= 30)
			aux2=350
			aux2+=i*20  
			pantalla.blit(puntosTotales2.mostrar(), puntosTotales2.pos(0,0,340,aux2))
		Conexion.close()
		


    def insertarPuntos(self):
		# Establecemos la conexion
		Conexion = MySQLdb.connect(host='localhost', user='******',passwd='root', db='serpiente')
		# Creamos el cursor
		cursor = Conexion.cursor()
		self.insertar=True
		query= "SELECT * FROM Puntos WHERE id=(SELECT MAX(id) FROM Puntos)"
		cursor.execute(query)
		registros= cursor.fetchone()
		numero=registros[0]
		numero = numero+1
		#insertamos el la nueva puntuacion
		query='INSERT INTO Puntos (id,Nombre,Puntuacion) VALUES ("%d","%s","%d")'%(numero,self.nombre,self.puntos)
		cursor.execute(query)
		Conexion.commit()
Beispiel #16
0
class UnboundSnake():
    "Videojuego de la Serpiente realizado con Pygame."
    def __init__(self):
        "Inicializa el videojuego."
        p.init()
        self.pantalla = p.display.set_mode(PANTALLA)
        p.display.set_caption("Unbound Snake")
        #Creacion de objetos del videojuego.
        self.serpiente = Serpiente()
        self.comida = Comida(self.serpiente)
        #Variables de control.
        self.puntos = 0
        self.termino = False
        #Textos.
        self.puntuacion = Texto("Puntos: ")
        self.instrucciones = Multilinea( ("Reiniciar [F5]", "Salir [Esc]"))
        self.instrucciones.pos(2, 2, 16, 16)
        
    def dibujar(self):
        "Muestra los objetos en pantalla."
        self.pantalla.fill( (0x11, 0x11, 0x11) )        
        #Dibujar objetos en la interfaz.
        self.pantalla.blit(self.comida.image, self.comida.mostrar())
        self.pantalla.blit(self.puntuacion.mostrar(str(self.puntos)), 
            self.puntuacion.pos(horz= 0, vert= 0))
        #Dibujar la serpiente.
        for i in range(0, len(self.serpiente.cuerpo)):
            self.pantalla.blit(self.serpiente.image, self.serpiente.cuerpo[i])
        #Juego Terminado
        if self.termino:
            self.instrucciones.mostrar(self.pantalla, 2)
            terminado = Texto("Juego Terminado", tamano= 72)
            self.pantalla.blit(terminado.mostrar(), terminado.pos(1, 1))
        p.display.flip()
    
    def reiniciar(self, teclado):
        "Reinicia el juego en caso de haber perdido."
        if teclado:
            if teclado[0].key == K_F5:
                self.__init__()
    
    def jugar(self):
        "Ejecuta el videojuego."
        jugando = True
        reloj = p.time.Clock()
        while jugando:
            #Frecuencia de actualizacion (Velocidad de la serpiente).
            reloj.tick(10)
            #Obtencion de eventos.
            teclado = p.event.get(p.KEYDOWN)
            cerrar  = p.event.get(p.QUIT)
            # Nucleo del juego. ########################################
            if not self.termino:
                #Control de la serpiente.
                self.serpiente.teclado(teclado)
                #Actualizar la posicion de la serpiente.
                self.serpiente.actualizar()
                #Generar nueva comida si la serpiente se alimento.
                if self.serpiente.se_alimento(self.comida):
                    self.comida.generar(self.serpiente)
                    self.puntos += 10
            else:
                self.reiniciar(teclado)
            if self.serpiente.colisiona():
                self.termino = True
            jugando = salir(cerrar, teclado)
            ############################################################
            self.dibujar()
Beispiel #17
0
class Logica(p.sprite.Sprite):
	"Inicia los rectangulos"
	def __init__(self):
		self.listarec=[]
		self.listarec2=[]
		self.marcador=0
		self.r1=p.Rect(300,220,25,25)
		self.segundosTotal=0
		self.fuente1=p.font.SysFont("Arial", 30,True, False)
		for x in range(50):
			w=random.randrange(10,30)
			h=random.randrange(10, 40)
			x=random.randrange(450)
			y= random.randrange(30, 450)
			self.listarec.append(p.Rect(x,y,w,h))
		for x in range(20):
			w=random.randrange(10,20)
			h=random.randrange(10, 20)
			x=random.randrange(450)
			y= random.randrange(30, 450)
			self.listarec2.append(p.Rect(x,y,w,h))
	"Contador de segundos"
	def ejecutar(self):
		self.segundosTotal=p.time.get_ticks()/1000
		
	"Resuelve los evento de teclado sin pulsar"
	def evento(self, evento):
		if evento == p.K_UP:
			self.r1.centery-=15
		if evento == p.K_DOWN:
			self.r1.centery+=15
		if evento == p.K_RIGHT:
			self.r1.centerx+=15
		if evento == p.K_LEFT:
			self.r1.centerx-=15
	"Eventos del teclado pulsado"
	def evento2(self, evento):
		if evento == p.K_UP:
			self.r1.centery-=15
		if evento == p.K_DOWN:
			self.r1.centery+=15
		if evento == p.K_RIGHT:
			self.r1.centerx+=15
		if evento == p.K_LEFT:
			self.r1.centerx-=15 
	"Si colisiona con otro rectangulo"
	def colision(self):
		for recs in self.listarec:
				if self.r1.colliderect(recs):
					self.marcador+=25
					self.listarec.remove(recs)
		for recs in self.listarec2:
				if self.r1.colliderect(recs):
					self.marcador-=15
					self.listarec2.remove(recs)	
		
	"Pinta pantalla, rectangulos"
	def actualizar(self, pantalla):
		cadena="Marcador = "+ str(self.marcador)
		pantalla.fill((0,0,0))
		txt_salir = Texto(cadena, 30)
		txt_salir.pos(2, 2)
		pantalla.blit(txt_salir.mostrar(), txt_salir.pos(20, 20, 0, 0))
		cadena="Contador: "+ str(self.segundosTotal)
		txt_salir = Texto(cadena, 30)
		txt_salir.pos(1, 0)
		pantalla.blit(txt_salir.mostrar(), txt_salir.pos(2, 2, 0, 0))
		for recs in self.listarec:
			p.draw.rect(pantalla,(255,255,0), recs)
		for recs in self.listarec2:
			p.draw.rect(pantalla,(255,0,255), recs)
		p.draw.rect(pantalla, (200,20,20), self.r1)
		p.display.update()
	"Juego terminado por acabar el tiempo"
	def terminado(self, pantalla):
		if  self.marcador<1000:
			cadena="GameOver Min 1000"+ " tu puntuacion de: " + str(self.marcador)
			pantalla.fill((0,0,0))
			self.txt_salir = Texto(cadena, tamano=30)
			self.txt_salir.pos(2, 2)
			pantalla.blit(self.txt_salir.mostrar(), self.txt_salir.pos(20, 20, 0, 0))
			p.display.update()
		else:
			cadena="Coseguido puntuacion>1000 puntos: "+ " " + str(self.marcador)
			pantalla.fill((0,0,0))
			txt_salir = Texto(cadena, 30)
			txt_salir.pos(2, 2)
			pantalla.blit(txt_salir.mostrar(), txt_salir.pos(20, 20, 0, 0))
			p.display.update()
		
	"Controla el numero de segundos totales del juego"	
	def fin(self):
		if self.segundosTotal>30:
			return True
		else:
			return False
Beispiel #18
0
class UnboundSnake():
    "Videojuego de la Serpiente realizado con Pygame."

    def __init__(self):
        "Inicializa el videojuego."
        p.init()
        self.pantalla = p.display.set_mode(PANTALLA)
        p.display.set_caption("Unbound Snake")
        #Creacion de objetos del videojuego.
        self.serpiente = Serpiente()
        self.comida = Comida(self.serpiente)
        #Variables de control.
        self.puntos = 0
        self.termino = False
        #Textos.
        self.puntuacion = Texto("Puntos: ")
        self.instrucciones = Multilinea(("Reiniciar [F5]", "Salir [Esc]"))
        self.instrucciones.pos(2, 2, 16, 16)

    def dibujar(self):
        "Muestra los objetos en pantalla."
        self.pantalla.fill((0x11, 0x11, 0x11))
        #Dibujar objetos en la interfaz.
        self.pantalla.blit(self.comida.image, self.comida.mostrar())
        self.pantalla.blit(self.puntuacion.mostrar(str(self.puntos)),
                           self.puntuacion.pos(horz=0, vert=0))
        #Dibujar la serpiente.
        for i in range(0, len(self.serpiente.cuerpo)):
            self.pantalla.blit(self.serpiente.image, self.serpiente.cuerpo[i])
        #Juego Terminado
        if self.termino:
            self.instrucciones.mostrar(self.pantalla, 2)
            terminado = Texto("Juego Terminado", tamano=72)
            self.pantalla.blit(terminado.mostrar(), terminado.pos(1, 1))
        p.display.flip()

    def reiniciar(self, teclado):
        "Reinicia el juego en caso de haber perdido."
        if teclado:
            if teclado[0].key == K_F5:
                self.__init__()

    def jugar(self):
        "Ejecuta el videojuego."
        jugando = True
        reloj = p.time.Clock()
        while jugando:
            #Frecuencia de actualizacion (Velocidad de la serpiente).
            reloj.tick(10)
            #Obtencion de eventos.
            teclado = p.event.get(p.KEYDOWN)
            cerrar = p.event.get(p.QUIT)
            # Nucleo del juego. ########################################
            if not self.termino:
                #Control de la serpiente.
                self.serpiente.teclado(teclado)
                #Actualizar la posicion de la serpiente.
                self.serpiente.actualizar()
                #Generar nueva comida si la serpiente se alimento.
                if self.serpiente.se_alimento(self.comida):
                    self.comida.generar(self.serpiente)
                    self.puntos += 10
            else:
                self.reiniciar(teclado)
            if self.serpiente.colisiona():
                self.termino = True
            jugando = salir(cerrar, teclado)
            ############################################################
            self.dibujar()