PRÁCTICA DE LABORATORIO #2 DE SISTEMAS EMBEBIDOS
Enviado por Helena • 11 de Septiembre de 2018 • 1.361 Palabras (6 Páginas) • 300 Visitas
...
[pic 4]
Imagen 4. Función menu() del programa.
En la función juego(), inicializa las variables necesarias para una jugada como por ejemplo el número de “vidas”. Seguidamente se encuentra un ciclo while para determinar si el juego no se ha acabado (cuando vidas = 0), y donde generalmente esta otro ciclo y la disminución de vidas, cuando se ha perdido una vida o mejor cuando el carro se ha estrellado con un obstáculo, este realiza un efecto de “llamas” como se puede observar en la imagen 5.
[pic 5]
Ilustración 5. Efecto del “carro en llamas” luego de la colisión con uno de los obstáculos.
El otro ciclo mencionado dentro del ciclo de numero de vidas, es de tipo while y se repite hasta que el jugador pierda una vida; a grandes rasgos en dicho ciclo, se hace toda la lógica y la impresión en la LCD durante una partida, en primera instancia , se pregunta si en los últimos tres ciclos, se ha asignado un nuevo obstáculo en la pantalla, esto para asegurar que el juego tenga solución o en otras palabras que el carro se pueda mover y no sea acorralado, se llama la función asignar(), la cual por medio de random() determina con una probabilidad del 50% si sale un obstáculo nuevo o no, de ser así, nuevamente por medio de la generación de un random() se asigna la fila al nuevo obstáculo creado con probabilidad del 50%.
La creación del nuevo obstáculo es determinada por su estado (enable), donde 0 es no utilizado en el momento y 1 significa que este está en juego, por lo que si no está habilitado se puede crear un nuevo obstáculo. Como también se puede observar en la imagen 6, el ejemplo con pos1[] se le asigna el valor de 12 en la columna inicial, para posteriormente este sea impreso en la casilla más a la derecha
[pic 6]
Imagen 6.
Luego de llamar la función asignar(), se imprime el tablero, con el carro en la posición, numero de vidas, el nivel, y los obstáculos en juego, y se determina si un obstáculo esta en la fila y columna del carro, de ser asi una variable determina que este ha perdido o lo que se traduce en salir del ciclo. También se determina si un obstáculo esta en la columna 0, de ser asi, este obstáculo puede ser deshabilitado para ser reutilizado por la función asignar(), y finalmente, se reduce una unidad de la variable velocidad, la cual por medio de la función cydelay() determina realmente la dificultad de la partida, y por lo cual esto se traduce en subir el nivel, impreso en la esquina inferior derecha del tablero, lo cual se puede apreciar en la imagen 7.
[pic 7]
Imagen 7. Visualización del juego en la LCD donde se puede observar el carro en las primeras posiciones, los obstáculos generados que en este caso son 4, el número de vidas que para este ejemplo son 3 y el nivel de dificultad que hasta el momento ha alcanzado el usuario que en este caso es el cuarto nivel.
[pic 8]
Ilustración 8. Visualización del juego en la LCD donde se puede observar el carro en las primeras posiciones, los obstáculos generados que en este caso son 2, el número de vidas que para este ejemplo son 2 y el nivel de dificultad que hasta el momento ha alcanzado el usuario que en este caso es el primer nivel.
[pic 9]
Imagen 9. Pantalla de inicio del juego “Crash Car” en la LCD.
- Conclusiones:
Al desarrollar el código de programación nos encontramos con un problema al momento de generar valores aleatorios para poder garantizar que la visualización de los obstáculos no tuviese un comportamiento repetitivo, es decir, que las posiciones fueran predecibles. Sin embargo, se logró obtener el comportamiento aleatorio cuando se implementó la librería stdlib.h, lo que evidencia la asociación que tiene el lenguaje de programación que maneja el PSoC con el lenguaje de programación C.
Por otra parte, la implementación de los módulos de interrupción permitió facilito el trabajo de detectar la posición del carro.
El uso de la variable enable permitió determinar si un obstáculo de los que se generaban se encontraba activo o inactivo en la pantalla y de esta manera evitar inconvenientes o errores que se verían reflejados en la visualización.
...