Programar Juegos Arcade
con Python y PygameLab 13: Reuniendo Sprites
En este taller practicaremos el uso de Pygame sprites tal como vimos en Capítulo 13.
- Asegúrate de crear este programa dentro de su propia carpeta. Si lo empiezas a partir de la plantilla que tengo en BitBucket, entonces asegúrate de comenzar en la carpeta “Lab 13 - Sprite Collecting” y colocar todo dentro de ella.
- Comienza por el siguiente programa:
ProgramArcadeGames.com/python_examples/f.php?lang=es&file=sprite_collect_blocks.py - Actualiza los comentarios del principio, de forma que reflejen que es ahora tú programa, y no el mío.
- Modifícalo para que el protagonista se mueva con el teclado en lugar de hacerlo con el ratón.
Échale un vistazo al programa move_sprite_keyboard_smooth.py, también disponible en
la misma página.
ProgramArcadeGames.com/python_examples/f.php?lang=es&file=move_sprite_keyboard_smooth.py
- Deberás copiar la clase Protagonista de este archivo y pegarla en tu programa. No te deshagas de la clase Bloque. Necesitarás ambas clases, Bloque y Protagonista, para tu programa.
- En estos momentos, tu protagonista es una instancia de Bloque. Deberás cambiar esto de forma que se convierta en una instancia de la clase Protagonista. Observa que el constructor para Protagonista toma parámetros diferentes a los de Bloque.
- Actualiza tu bucle de eventos de forma que responda ahora al teclado.
- Elimina el código que desplaza al protagonista con el ratón.
- Haz de color azul al protagonista
- Asegúrate de que sólo existe una llamada a listade_todoslos_sprites.update() en tu bucle principal. Esto llamará al método update() en cada sprite.
- Ejecuta el programa y comprueba que funciona correctamente.
- Crea ahora sprites buenos y sprites malos.
- Sprites buenos
- Allí donde te habías creado 50 bloques, ahora, en lugar de añadirlos a una lista llamada bloque_lista, hazlo a una lista llamada bloque_lista_buena.
- Colorea de verde los bloques.
- Allí donde comprobabas las colisiones entre bloques, en el bucle principal, actualízalo de forma que ahora utilice bloque_lista_buena.
- Sprites malos
- Duplica este código y añade otros 50 bloques a una nueva lista llamada bloque_lista_mala.
- Asegúrate de que tu programa crea una sola lista llamada listade_todoslos_sprites. No vayas a recrearla antes de haber añadido los bloques malos y el protagonista.
- Colorea de rojo estos bloques
- Duplica este código y compruébalo contra bloque_lista_mala. Disminuye la puntuación en lugar de aumentarla
- Ejecuta el programa y comprueba que funciona correctamente.
- Emplea imágenes para resaltar los sprites buenos/malos tal como se ve en el archivo de ejemplo ProgramArcadeGames.com/python_examples/f.php?lang=es&file=sprite_collect_graphic.py. No emplear este tipo de imágenes conlleva una penalización de dos puntos.
- En lugar de usar simplemente print para mostrar la puntuación sobre la consola, haz que se muestre sobre la propia ventana de gráficos. Vuelve al Capítulo 5 y revisa la sección de cómo dibujar texto.
- Añade sonidos distintos para cuando el usuario golpee un bloque bueno o uno malo. Aquí tienes
un par de ellos en OpenGameArt.org:
ProgramArcadeGames.com/labs/sprite_collecting/good_block.wav
ProgramArcadeGames.com/labs/sprite_collecting/bad_block.wav
Para guardar una archivo de sonido, haz click con el botón derecho sobre él. Luego, dependiendo de tu navegador, selecciona "Guardar destino como" o "Guardar enlace como".
Recordemos que para que un sonido se reproduzca, usamos un click del ratón para disparar ese evento. Pero aquí no lo haremos de esa forma. Busca el código que detecta cuándo es que ocurre una colisión. Haz que se reproduzca el sonido cuando suceda una de ellas. Recuerda, también, que cuando cargas un sonido, debe hacerse antes del bucle principal, pero después del comando pygame.init(). - Añade comprobaciones para evitar que el protagonista se salga de la pantalla de juego. Estas comprobaciones deberían ir dentro del método update de la clase Protagonista. Deberían haber cuatro declaraciones de comprobación if, una por cada borde. Si los valores x e y del protagonista se salen fuera de los límites de la pantalla, devuelve al jugador dentro de ésta. No vayas a modificar cambio_x o cambio_y. Esto no funciona para objetos controlados por el jugador. No te olvides de comprobar los bordes derecho e inferior, son fáciles de confundir.
- Descarga un archivo de sonido wav u ogg para que suene si el usuario intenta salirse
de la pantalla. Aquí tienes uno que puedes usar:
ProgramArcadeGames.com/labs/sprite_collecting/bump.wav - A la hora de enviar tu programa al profesor, asegúrate de incluir también los efectos de sonido y los gráficos. Si estás usando una versión de control, comprueba que se suben todos los archivos. Si lo haces a través de un e-mail, comprime todos los archivos (no comprimas los archivos si estás usando una versión de control como SourceTree.)
You are not logged in. Log in here and track your progress.
Copyright © 2017
English version by Paul Vincent Craven
Spanish version by Antonio Rodríguez Verdugo
Russian version by Vladimir Slav
Turkish version by Güray Yildirim
Portuguese version by Armando Marques Sobrinho and Tati Carvalho
Dutch version by Frank Waegeman
Hungarian version by Nagy Attila
Finnish version by Jouko Järvenpää
French version by Franco Rossi
Korean version by Kim Zeung-Il
Chinese version by Kai Lin
English version by Paul Vincent Craven
Spanish version by Antonio Rodríguez Verdugo
Russian version by Vladimir Slav
Turkish version by Güray Yildirim
Portuguese version by Armando Marques Sobrinho and Tati Carvalho
Dutch version by Frank Waegeman
Hungarian version by Nagy Attila
Finnish version by Jouko Järvenpää
French version by Franco Rossi
Korean version by Kim Zeung-Il
Chinese version by Kai Lin