qna_rh
Thread Id: 20662
Thread Name: Incluir minijuego tipo Pac-Man en Ruby... ¿Es posible?
#0
~Almo 26431
Esta es mi pregunta:
¿Se podría hacer un minijuego dentro de Ruby simulando el clásico PAC-MAN mediante scripts?
Si es así, ¿mediante qué tipo de scripts podría realizarlo y de qué forma?
Espero una respuesta orientativa, no estoy pidiendo que me hagáis ningún script ni nada de eso.
¡Gracias!
#1
Javi4315♪ 13374
Hombre, pues mediante script es complicado. Tendrías que hacer que los fantasmas se movieran como deben moverse, que desaparezcan los cocos cuando pasas y que si te pilla un fantasma "Game over". En el hipotético caso de que se pueda, lo veo complicado. Quizás con ASM.
#2
Ángel Uchiha 12304
Sinceramente, podrías hacer algo más simple y parecido, pero dudo que eso se pueda hacer incluso con buenos conocimientos de ASM...
#3
Tito Dafting301_4315♪ Kuchiki 24341
Iniciado por Ángel Asakura
Sinceramente, podrías hacer algo más simple y parecido, pero dudo que eso se pueda hacer incluso con buenos conocimientos de ASM...


Cierto. Aunque es muy potente, el ASM que se usa en GBA limita bastante...
#4
cosarara97 12296
Iniciado por Dafting Qaqtus
Cierto. Aunque es muy potente, el ASM que se usa en GBA limita bastante...


Pardon? xD
Cuando haces un callasm estás enviando el procesador a tu rutina, de modo que tienes control total de la máquina. Y la GBA, amigos míos, es suficientemente potente para correr un pacman xD
A ver, volvamos a la duda principal. Con scripts, orientativamente... primero de todo necesitas un mapa para jugar. Hasta aquí todo fácil. El primer problema es que queremos que los fantasmas se muevan mientras tu te mueves. Para hacer algo así, lo que se me ocurre es mover al player con applymovements mientras leemos el input directamente de la memoria I/O (hay un tutorial por ahí que lo explica).
No se si funcionaría, poner un gatillo en cada casilla y applymovements sin waitmovement.
El siguiente problema que tienes es mover realmente los fantasmas - qué applymovements tienen que seguir. Para hacer esto, puedes crear 4 secuencias de movimientos para applymovements, cada uno con una de las 4 direcciones (en realidad ya las tendrás creadas para los movimientos del player). Una vez hecho esto, para que el script sepa hacia donde hay que mover cada mini, vas a necesitar:
- Un mapa en memoria del mapa de juego, ya sea directamente en el ROM y leyendo con comparevartofarbyte o parecido, o con un montón de variables.
- La posición del fantasma
Y para la IA:
- La posición del player
Algo básico sería primero conseguir que funcionara con un solo fantasma, y luego con los otros.
En pseudo código, la estructura sería algo así:

main:
while (el jugador aún no ha perdido) {
leer input
mover player respecto al input
(por cada fantasma)
calculo básico, hacia donde está el player, en los ejes x e y respecto al fantasma,
y a qué distancia
elegir si preferimos movernos horizontalmente o verticalmente, y en qué sentido
if (nos podemos mover hacia dicha dirección) {
hacerlo
} else {
movernos en la otra dirección (la que tiene prioridad 2, para entendernos)
}
comprobar si ya hemos pillado al player, y en ese caso salir
}


Oh, y si lo quisieras hacer con ASM, más que en ASM yo lo haría en C, pero la idea sería tomar prestada la pantalla un momento, montar el pacman independientemente de todo lo que hay en el juego de pokémon, y luego volver al juego de pokémon y refrescar la pantalla, todo esto usando RAM libre.
#5
NearX. 26316
resumen que es muy complicado chico.
y as caso caso a estos de arriba.
:D

EDITADO por cosarara97: Esto es spam, señor. +5%, 2 semanas.
#6
~Almo 26431
Muchas gracias a todos por vuestra atención, en especial a cosarara que ha terminado de resolver mi duda.

Intentaré hacerlo con muchos applymovements e imaginación xD.
Y si no hay mas remedio tendré que recurrir a algún ASM scripter cualificado (porque tiene guasa la cosa...)

Tema aclarado, ya podéis cerrar el tema.
#7
RedMort 26611
Antes de que lo cierren, podrias probar ahacer un pacman pero adaptado a un hack, que vayas de esquina en esquina por ejemplo, y que al llegar a cierta esquina, los bichitos se muevan de cierta forma, y hacer que solo puedas ganar si tiras por cierto camino que tu elijas, no se si me explico bien, hacer una modificacion del pacman, con applymovements y waitmovements en cada esquina, no en cada casilla, y que cada vez que pises la esquina, mueves 2 o 3 veces cada fantasma.
Si lo programas bien, haras que los fantasmas no te pillen si haces cierto camino, y que te pillen si haces cualquier otro.