TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: gersa2311 en 15 de Octubre de 2016, 15:04:30
-
Hola! buen día, necesito ayuda para poder hacer un juego igual al que dejare en el enlace en CCS, es un juego de saltar los objetivos, con su respectivo conteo de puntaje.
Enlace del juego presione http://miarduinounotieneunblog.blogspot.com/2016/02/juego-runner-scape-con-display-lcd-1602.html (http://miarduinounotieneunblog.blogspot.com/2016/02/juego-runner-scape-con-display-lcd-1602.html)
(https://3.bp.blogspot.com/-sumdai8rT3g/Vsc4WFn1bmI/AAAAAAAAA9s/DOe0ZV6nZzs/s320/Runner_Scape.JPG)
Mis problemas son:
-Generar los cuadros "aleatorio" de la parte inferior
-Como detectar un choque del la figura.
Uso CCS y no comprendo como realizar esas acciones, por eso les pido mas menos una idea de como implementarlo, de antemano gracias.
-
Tenes todo.. tenes el codigo... No se cual es el problema.
Deberias cambiar:
- Lo del setup(), para inciializar el LCD e iniciarlizar los pines correctamente, creo que lo mejor seria usar FAST_IO
En loop():
- Reemplazar los lcd.begin por lcd_gotoxy , los lcd.printf por lcd_putc("tdasa")
- Los delay(xx) por delay_ms(xx)
- Los random(xx) por rand() % xx ( requiere incluir stdlib.h si no me equivoco)
Al comienzo:
- Cambir el lcd.createChar por comandos para cargar datos a la CGRAM, aca te dejo un link que encontre mirando por internet
http://electgpl.blogspot.com.ar/2013/06/lcd-creacion-de-simbolos-en-cgram.html
Finalmente si no queres cambiar demasiado el codigo fuente (ya que se podria copiar y pegar) agregas una funcion main que haga esto:
void main(void)
{
setup();
while(1)
{
loop();
}
}
El tema de la colision esta en C, por lo cual podrias tranquilamente copiarlo.
-
.
Dudo mucho que un microcontrolador pueda generar realmente números aleatorios, a menos que la semilla sea distinta cada vez que arranque.
Si puedes leer algo que sea distinto cada vez, como el RTC si lo mantienes con una pila, o un sensor de temperatura o de luz, podías tener números aleatorios que sean de verdad aleatorios. De lo contrario cada vez que arranques la secuencia de números será siempre la misma, aunque para esta aplicación seguramente te vale.
-
Otra opción interesante y muy sencilla para generar una semilla aleatoria es considerar una lectura analógica de un pin que esté al aire, o conectado a una pista vacía que haga de antena.
-
Enserio esto se puede copiar y pegar en CCS ? Gracias lo intentare modificando lo que mencionas
Tenes todo.. tenes el codigo... No se cual es el problema.
Deberias cambiar:
- Lo del setup(), para inciializar el LCD e iniciarlizar los pines correctamente, creo que lo mejor seria usar FAST_IO
En loop():
- Reemplazar los lcd.begin por lcd_gotoxy , los lcd.printf por lcd_putc("tdasa")
- Los delay(xx) por delay_ms(xx)
- Los random(xx) por rand() % xx ( requiere incluir stdlib.h si no me equivoco)
Al comienzo:
- Cambir el lcd.createChar por comandos para cargar datos a la CGRAM, aca te dejo un link que encontre mirando por internet
http://electgpl.blogspot.com.ar/2013/06/lcd-creacion-de-simbolos-en-cgram.html
Finalmente si no queres cambiar demasiado el codigo fuente (ya que se podria copiar y pegar) agregas una funcion main que haga esto:
void main(void)
{
setup();
while(1)
{
loop();
}
}
El tema de la colision esta en C, por lo cual podrias tranquilamente copiarlo.
-
Gracias por sus respuestas, voy hacer lo que comentan.
-
Enserio esto se puede copiar y pegar en CCS ? Gracias lo intentare modificando lo que mencionas
Esta todo en C, Lo unico que tenes distintos son algunas funciones, como ya nombre que son las del lcd, random, el delay y tal ves algun pin. Lo demas es valido para cualquier C.
Lo que usa arduino, en realidad de una manera "oculta" es el codigo que te pase.
Entonces el usuario en ves de generar una funcion main, donde al comienzo pone el setup y ademas luego debe poner el while, En Arduino en ves de crear la funcion main ( que ya esta creada) tenes que crear las funciones setup y loop, en ese main oculto simplemente hace como te pase el programa es decir 2 llamadas simples.