lunes, 28 de enero de 2019

perder

Actividad 10. Ahora habrá que definir la función perder. Copia el siguiente código tras la función
 crear_mono. ¿Qué es lo que ha de ocurrir cuando somos derrotados? ¿Recuerdas la variable 
booleana fin_de_juego? Acertaste, hemos de darle el valor True. (¿entiendes por qué se ha 
declarado como global?). Además, como somos crueles, usamos enemigo.sonreir() para que 
el mono, que posee esa habilidad predefinida, muestre una sonrisa victoriosa en su cara...


def perder(torreta, enemigo):
# Indicar fin de juego y eliminar lo que ya no se necesita
global fin_de_juego
enemigo.sonreir()
torreta.eliminar()
pilas.tareas.eliminar_todas()
fin_de_juego = True
pilas.avisar("GAME OVER. Conseguiste %d puntos" % (puntos.obtener()))


Esta definición modificara la torreta y el enemigo. La primera función del código "global fin_de_juego " esta, indicara que el juego a terminado
 y tendrá que ser eliminado todos los elementos del juego.
 La siguiente función indica que el enemigo, en este caso los monos tendrán
que sonreír y la torreta se eliminara. Por ultimo indica que el fin del juego es 
verdadero y el juego tendra que avisar que se a terminado y los puntos que hemos 
alcanzado.

Ahora el juego ya está terminado y funciona más o menos bien. A partir de aquí estás 
en disposición de realizar uno nuevo cambiando el fondo, el puntaje, el movimiento o 
los actores. Pon a funcionar tu creatividad!!

mono_destruido

Actividad 8. Monos atacando, torreta disparando... ¡Algo tiene que pasar cuando 
choquen! En este paso vamos a dedicarnos precisamente a eso, a implementar 
la destrucción de los monos y de la torreta cuando éstos lo alcancen. 
Copia el siguiente código antes de la función crear_mono().


def mono_destruido(disparo, enemigo):
# Eliminar el mono alcanzado
enemigo.eliminar() disparo.eliminar()
# Actualizar el marcador con un efecto bonito
puntos.escala = 0
puntos.escala = pilas.utils.interpolar(puntos, 'escala', 1, duracion=0.5)
puntos.aumentar(1)

Esta definición modificara el disparo y el enemigo. La primera función del código indicara que el mono alcanzado tendrá que ser eliminado y junto a el también el disparo de la torreta. La siguiente función indica que el marcador partirá desde cero y ira aumentando puntos según cuantos monos alcancemos.
Por ultimo,
puntos.escala = pilas.utils.interpolar(puntos, 'escala', 1, duracion=0.5)
puntos.aumentar(1)
Esta instrucción solo sirve para realizar un efecto de escala sobre el marcador. 

viernes, 25 de enero de 2019

agregar_tarea

Crea la entrada agregar_tarea en tu blog y explica los parámetros del método 
agregar tarea y el significado de cada uno de ellos.

# Crear un enemigo cada segundo
pilas.tareas.agregar(1, crear_mono)

Las tareas son acciones que elegimos ejecutar en un determinado momento.
En esta función indica que la función esperara 1 segundo antes de crear otro mono.

viernes, 18 de enero de 2019

crear mono

  1. Vamos a analizar la función crear_mono(). Responde a las siguientes preguntas en la
     entrada crear_mono de tu blog.
    Cada vez que se llame, hay que crear un nuevo mono; eso es lo que hacemos  
    utilizando el módulo pilas.actores y almacenándolo en la variable local enemigo para su uso.  
    Fíjate que no queremos que simplemente aparezca, si no que lo haga con un efecto vistoso.Explica qué dos líneas de código realizan dicha acción.
enemigo.escala = 0
enemigo.escala =pilas.utils.interpolar(enemigo, 'escala', 0.5, duracion=5)

Estas dos líneas de código realizan la acción de que el mono no aparezca simplemente , si no que lo haga con un efecto vistoso.

  1. Las siguientes líneas, generan las coordenadas x e y del enemigo creado para situarlo en
     una posición aleatoria en la ventana. Para ello hemos utilizado la función randrange() que
    devuelve un número al azar entre los dos dados. ¿Podrías decir que módulo hemos importado en Python para poder usar la función? 
    import random 
  2. Además, para evitar que el enemigo aparezca demasiado cerca de la torreta y haga el juego imposible, si las coordenadas generadas son menores de 100, se le aleja una distancia de 180. Analiza el código que hace posible esta acción en una entrada de tu blog. 

    x = random.randrange(-320, 320)
    y = random.randrange(-240, 240)
    if x >= 0 and x <= 100:
    x = 180
    elif x <= 0 and x >= -100:
    x = -180
    if y >= 0 and y <= 100:
    y = 180
    elif y <= 0 and y >= -100:
    y = -180
    enemigo.x = x
    enemigo.y = y

  3. Finalmente, actualizamos la posición del mono modificando enemigo.x y enemigo.y. ¿Cuales son las instrucciones que realizan esta acción?


Esta parte del código es la que nos permite que el enemigo no aparezca demasiado cerca de la torreta y haga el juego imposible. Por lo tanto, lo situamos en una posición al azar, pero no demasiado cerca del jugador. Así que indicaremos que las coordenadas generadas sean menores de 100, para que se le aleje una distancia de 180. Para terminar le indicaremos que el enemigo x es igual a la coordenada x y el mismo paso con la y.

x = random.randrange(-320, 320)
y = random.randrange(-240, 240)
if x >= 0 and x <= 100:
x = 180
elif x <= 0 and x >= -100:
x = -180
if y >= 0 and y <= 100:
y = 180
elif y <= 0 and y >= -100:
y = -180
enemigo.x = x
enemigo.y = y


 

martes, 15 de enero de 2019

Torreta


  1. ¿Cuál es el motivo por el que se utiliza la instrucción pilasengine.actores.Bala?
    La instrucción es pilasengine.actores.Bala porque estamos indicando la 
    clase de actor que vamos a usar.
  2. ¿Por qué se representa la variable monos como una lista vacía?
    La variable monos se representa como una lista vacía porque 
    el juego no esta terminado por lo tanto, aun no hemos decidido 
    cuantos monos tendremos que crear.
  3. ¿Para qué se utiliza la función mono_destruido?
    La función mono_destruido se utilizara para que cuando la munición de la torreta 
    impacte  con los enemigos  en este caso son monos y como el juego no esta terminado
    no aparecen monos, por eso en esta función hay que indicarle pass, para que no de error. 
d.Cuando se añade la torreta del jugador, explica los parámetros que se pasan, y
porque se utiliza mono_destruido en lugar de enemigo_destruido()  

viernes, 11 de enero de 2019

Pilas-engine

Vamos a comentar paso a paso este primer juego creado con pilas-engine.

El juego consiste en una pequeña torreta que ha de disparar a los monos que se generan al azar en pantalla y que intentan llegar hasta él para destruirlo.

El juego incluye un sencillo marcador de puntuación, un control de sonido y avisos de texto en pantalla.





class Sonido(Actor):

"""Un icono de sonido en la parte inferior derecha de la pantalla.
Este actor se utilizará para habilitar el sonido o deshabilitarlo al hacer click sobre él.

def iniciar(self, x=0, y=0):
self.x = x
self.y = y
Estos puntos sitúa al objeto en una coordenada concreta.

self.ruta_normal = 'iconos/sonido_on.png'
self.ruta_press = 'iconos/sonido_off.png'
Estas, especifican en que carpeta se encuentra y en que ruta.
self.imagen = self.ruta_normal
Especifica cual es la imagen por defecto, cuando se construye el objeto es ruta normal.

self.radio_de_colision = 15
self.cuando_hace_click = self.cuando_pulsa
         Indica que tendrá que ejecutar  cuando pulsemos.

# Colocamos el boton en la esquina inferior derecha de la pantalla.
self._ancho_mundo, self._alto_mundo = self.pilas.widget.obtener_area()
self.x = (self._ancho_mundo / 2) - self.ancho
self.y = -1 * (self._alto_mundo / 2) + self.alto
         Estas formulas sirven para que se situé en la coordenada.

self.activado = True
Indica que esta activado.
def cuando_pulsa(self):
"""Alterna entre sonido habilitado o deshabilitado."""
 Se crea una función para que cuando pulsa alterne entre habilitado o deshabilitado.
if self.activado:
self.pilas.deshabilitar_musica()
Si esta activado se deshabilitara la musica.
self.pilas.deshabilitar_sonido()
Si esta activado se deshabilitara el sonido.  
self.imagen = self.ruta_press
self.pilas.avisar("Sonido deshabilitado")
Indica con un cartel que el sonido esta deshabilitado.
self.activado = False
Indica que esta desactivado.  
else:
self.pilas.deshabilitar_musica(estado=False)
Sino esta activado se habilitara la musica.  
self.pilas.deshabilitar_sonido(estado=False)
Sino esta activado se habilitara el sonido.  
self.imagen = self.ruta_normal
self.pilas.avisar("Sonido habilitado")
Indica con un cartel que el sonido esta habilitado.
self.activado = True

Al acabar con este proceso el juego ya está terminado y funciona más o menos bien. 
A partir de aquí estás en disposición de realizar uno nuevo cambiando el fondo, el puntaje, el movimiento o los actores.
Pon a funcionar tu creatividad!!