Diferencia entre revisiones de «Curso Python DGA 2011/pygame/ejercicios clase»

De WikiEducator
Saltar a: navegación, buscar
Línea 21: Línea 21:
 
* Comprueba el resultado
 
* Comprueba el resultado
 
|Retroalimentacion=[[Archivo:Pygame act1.png|thumb|center|Tienes que ver algo así]]
 
|Retroalimentacion=[[Archivo:Pygame act1.png|thumb|center|Tienes que ver algo así]]
 +
}}
 +
{{:Curso Python DGA 2011/pygame/nav}}
 +
 +
{{MiTitulo | Ejercicios}}
 +
__TOC__
 +
{{Tip|
 +
Para hacer los ejercicios tienes que usar la plantilla y recursos que tienes en repositorio:
 +
https://github.com/neodoo/curso_python_dga_11/tree/master/pygame/starter_kit Las imágenes y sonidos están en las carpetas correspondientes.
 +
}}
 +
 +
{{Actividad|
 +
Title=Ejercicio 1. Preparación del entorno |
 +
TOCdepth=2|
 +
* Ejecuta el starter para comprobar que has descargado bien los archivos:
 +
$ python juego_mono.py
 +
: Tienes que ver una pantalla negra
 +
* Ponle un título a la ventana:
 +
pygame.display.set_caption('Mono zampador')
 +
* Carga la imagen de fondo (imagenes/selva.png)
 +
* Recuerda descomentar la línea del blit:
 +
pantalla.blit(fondo, (0,0))
 +
* Comprueba el resultado
 +
|Retroalimentacion=[[Archivo:Pygame act1.png|thumb|center|Tienes que ver algo así]]
 +
}}
 +
 +
 +
{{Actividad|
 +
Title=Ejercicio 2. Creación de sprite Mono |
 +
TOCdepth=2|
 +
Nuestro juego va a tener 2 personajes (sprites):
 +
* Un mono
 +
* Bananas
 +
En un archivo auxiliar ('''personajes.py''') crearemos los sprites. Desde el programa principal importaremos nuestros sprites y los utilizaremos.
 +
<ul>
 +
<li>
 +
Crea una clase Mono que herede de Sprite:
 +
<source lang="python" line="GESHI_NORMAL_LINE_NUMBERS">
 +
class Mono(Sprite):
 +
    def __init__(self, scr):
 +
        '''
 +
        scr es la pantalla del juego donde se pintará el personaje
 +
        '''
 +
        Sprite.__init__(self)
 +
        self.image = cargar_imagen('mono.png')
 +
#self.rect =    # inicializa su rectángulo
 +
        self.iniciar()
 +
    def update(self, keys):
 +
        pass
 +
    def draw(self):
 +
        pass            # Haz que draw dibuje la imagen en la pantalla en la posición de su rectángulo.
 +
    def iniciar(self):
 +
        # self.rect.center =  # Inicializa el rectángulo
 +
        pass
 +
</source>
 +
Completa:
 +
* Atributo self.rect
 +
* método draw
 +
* método iniciar
 +
</li><li>
 +
Crea un objeto mono en la zona de sprites del progama principal.
 +
</li><li>
 +
Llama a su método draw en la zona de dibujar.
 +
</li><li>
 +
Comprueba el resultado
 +
</li></ul>
 +
|Retroalimentacion=[[Archivo:Pygame act2.png|thumb|center|Tienes que ver algo así]]
 +
}}
 +
 +
{{Actividad|
 +
Title=Ejercicio 3. Creación de sprite Banana|
 +
TOCdepth=2|
 +
Haz lo mismo con el sprite Banana.
 +
|Retroalimentacion=[[Archivo:Pygame act3.png|thumb|center|Tienes que ver algo así]]
 +
}}
 +
 +
{{Actividad|
 +
Title=Ejercicio 4. Movimiento Banana|
 +
TOCdepth=2|
 +
Vamos a escribir el método update de la Banana:
 +
* La banana tendrá un movimiento vertical
 +
* Cada ciclo iremos aumentado el valor de y (3 pixeles por ejemplo)
 +
* Puedes seguir utilizando center o top ...
 +
* Cuando la banana llega abajo, vuelve a salir por la parte superior.
 +
* Modificamos el métido de iniciar. La x no será siempre el centro de la pantalla, sino un número aleatorio entre 0 y el ancho de la pantalla.
 +
** Usa '''random.randint'''
 +
** Ten cuidado con el mínimo y máximo para que la banana no quede fuera de la pantalla.
 +
* Introduce la llamada al método update de banana en la zona de '''actualizar sprites''' del bucle principal.
 +
* Comprueba el resultado.
 +
}}
 +
 +
{{Actividad|
 +
Title=Ejercicio 5. Movimiento Mono|
 +
TOCdepth=2|
 +
El mono se moverá horizontalmente utilizando el teclado. Escribe el método update del mono:
 +
* Le pasaremos como parámetro las teclas que están pulsadas en el ciclo.
 +
* Si está pulsada la tecla flecha izquierda, moveremos su rectángulo a la izquierda 5 pasos.
 +
<source lang="python" line="GESHI_NORMAL_LINE_NUMBERS">
 +
  # Update de la clase Mono
 +
  def update(self, keys):
 +
        if keys[K_LEFT]:
 +
            self.rect.centerx -= 5 # podemos usar un atributo: self.velocidad
 +
        elif keys[K_RIGHT]:
 +
            self.rect.centerx += 5
 +
</source>
 +
* Tendrás que corregirlo para que el mono no se pueda salir de la pantalla.
 +
* Introduce la captura de las teclas en el bucle principal en la zona de captura de eventos:
 +
  keys = pygame.key.get_pressed()
 +
* Llama al método update de Mono en la zona de actualizar del bucle principal
 +
* Comprueba el funcionamiento del programa.
 
}}
 
}}
  

Revisión de 10:15 30 ago 2011



Icon present.gif
Tip:

Para hacer los ejercicios tienes que usar la plantilla y recursos que tienes en repositorio: https://github.com/neodoo/curso_python_dga_11/tree/master/pygame/starter_kit Las imágenes y sonidos están en las carpetas correspondientes.



Ejercicio 1. Preparación del entorno

Icon activity.jpg

Ejercicio 1. Preparación del entorno

  • Ejecuta el starter para comprobar que has descargado bien los archivos:
$ python juego_mono.py
Tienes que ver una pantalla negra
  • Ponle un título a la ventana:
pygame.display.set_caption('Mono zampador')
  • Carga la imagen de fondo (imagenes/selva.png)
  • Recuerda descomentar la línea del blit:
pantalla.blit(fondo, (0,0))
  • Comprueba el resultado

Feedback.png






Icon present.gif
Tip:

Para hacer los ejercicios tienes que usar la plantilla y recursos que tienes en repositorio: https://github.com/neodoo/curso_python_dga_11/tree/master/pygame/starter_kit Las imágenes y sonidos están en las carpetas correspondientes.



Ejercicio 1. Preparación del entorno

Icon activity.jpg

Ejercicio 1. Preparación del entorno

  • Ejecuta el starter para comprobar que has descargado bien los archivos:
$ python juego_mono.py
Tienes que ver una pantalla negra
  • Ponle un título a la ventana:
pygame.display.set_caption('Mono zampador')
  • Carga la imagen de fondo (imagenes/selva.png)
  • Recuerda descomentar la línea del blit:
pantalla.blit(fondo, (0,0))
  • Comprueba el resultado

Feedback.png





Ejercicio 2. Creación de sprite Mono

Icon activity.jpg

Ejercicio 2. Creación de sprite Mono

Nuestro juego va a tener 2 personajes (sprites):

  • Un mono
  • Bananas

En un archivo auxiliar (personajes.py) crearemos los sprites. Desde el programa principal importaremos nuestros sprites y los utilizaremos.

  • Crea una clase Mono que herede de Sprite:
    1. class Mono(Sprite):
    2.     def __init__(self, scr):
    3.         '''
    4.         scr es la pantalla del juego donde se pintará el personaje
    5.         '''
    6.         Sprite.__init__(self)
    7.         self.image = cargar_imagen('mono.png')
    8.  	#self.rect =    # inicializa su rectángulo
    9.         self.iniciar()
    10.     def update(self, keys):
    11.         pass
    12.     def draw(self):
    13.         pass            # Haz que draw dibuje la imagen en la pantalla en la posición de su rectángulo.
    14.     def iniciar(self):
    15.         # self.rect.center =   # Inicializa el rectángulo
    16.         pass

    Completa:

    • Atributo self.rect
    • método draw
    • método iniciar
  • Crea un objeto mono en la zona de sprites del progama principal.

  • Llama a su método draw en la zona de dibujar.

  • Comprueba el resultado


Feedback.png




Ejercicio 3. Creación de sprite Banana

Icon activity.jpg

Ejercicio 3. Creación de sprite Banana

Haz lo mismo con el sprite Banana.


Feedback.png




Ejercicio 4. Movimiento Banana

Icon activity.jpg

Ejercicio 4. Movimiento Banana

Vamos a escribir el método update de la Banana:

  • La banana tendrá un movimiento vertical
  • Cada ciclo iremos aumentado el valor de y (3 pixeles por ejemplo)
  • Puedes seguir utilizando center o top ...
  • Cuando la banana llega abajo, vuelve a salir por la parte superior.
  • Modificamos el métido de iniciar. La x no será siempre el centro de la pantalla, sino un número aleatorio entre 0 y el ancho de la pantalla.
    • Usa random.randint
    • Ten cuidado con el mínimo y máximo para que la banana no quede fuera de la pantalla.
  • Introduce la llamada al método update de banana en la zona de actualizar sprites del bucle principal.
  • Comprueba el resultado.





Ejercicio 5. Movimiento Mono

Icon activity.jpg

Ejercicio 5. Movimiento Mono

{{{1}}}





Ejercicio 2. Creación de sprite Mono

Icon activity.jpg

Ejercicio 2. Creación de sprite Mono

Nuestro juego va a tener 2 personajes (sprites):

  • Un mono
  • Bananas

En un archivo auxiliar (personajes.py) crearemos los sprites. Desde el programa principal importaremos nuestros sprites y los utilizaremos.

  • Crea una clase Mono que herede de Sprite:
    1. class Mono(Sprite):
    2.     def __init__(self, scr):
    3.         '''
    4.         scr es la pantalla del juego donde se pintará el personaje
    5.         '''
    6.         Sprite.__init__(self)
    7.         self.image = cargar_imagen('mono.png')
    8.  	#self.rect =    # inicializa su rectángulo
    9.         self.iniciar()
    10.     def update(self, keys):
    11.         pass
    12.     def draw(self):
    13.         pass            # Haz que draw dibuje la imagen en la pantalla en la posición de su rectángulo.
    14.     def iniciar(self):
    15.         # self.rect.center =   # Inicializa el rectángulo
    16.         pass

    Completa:

    • Atributo self.rect
    • método draw
    • método iniciar
  • Crea un objeto mono en la zona de sprites del progama principal.

  • Llama a su método draw en la zona de dibujar.

  • Comprueba el resultado


Feedback.png




Ejercicio 3. Creación de sprite Banana

Icon activity.jpg

Ejercicio 3. Creación de sprite Banana

Haz lo mismo con el sprite Banana.


Feedback.png




Ejercicio 4. Movimiento Banana

Icon activity.jpg

Ejercicio 4. Movimiento Banana

Vamos a escribir el método update de la Banana:

  • La banana tendrá un movimiento vertical
  • Cada ciclo iremos aumentado el valor de y (3 pixeles por ejemplo)
  • Puedes seguir utilizando center o top ...
  • Cuando la banana llega abajo, vuelve a salir por la parte superior.
  • Modificamos el métido de iniciar. La x no será siempre el centro de la pantalla, sino un número aleatorio entre 0 y el ancho de la pantalla.
    • Usa random.randint
    • Ten cuidado con el mínimo y máximo para que la banana no quede fuera de la pantalla.
  • Introduce la llamada al método update de banana en la zona de actualizar sprites del bucle principal.
  • Comprueba el resultado.