[ Foro de Pascal ]

MEMORY BLOCK

04-May-2011 18:55
oscar gomez
2 Respuestas

Cordial saludo  profesor Nacho.

Mira estoy intentando realizar el juego de adivinar parejas(memory block), no me interesa por ahora la parte grafica, solo el manejo de la estructura mas adecuada (matrices),para ello mi idea es tener porejemplo una matriz de 5X5 en la que inicialmente muestre los numeros consecutivamente de la dimension de la matriz, es decir desde la casilla 1 a la 25  y quiero que cada casilla guarde una cadena que logicamente el usuario "no vera"(entre comillas por que o me interesa por ahora la parte grafica) hasta que no pulse sobre dicha casilla del numero asociado. esquematicamente seria algo asi:

1  2  3  4  5
6  7  8  9  10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25


Terna  Oso    Terna  Conejo  Delfin
Oso    Raton  Delfin  Pavo    Loro
Perro  Atun  Loro    Gato    Pavo
Perro  Pato  Atun    Paloma  Raton
Gato  Pato  Terna  Paloma  conejo


como ves si el usuario uno da click en 2 esta cambiaria a una visualizacion para el usuario con la cadena "OSO" y si da clic seguidamente en la casilla visualizada con el numero 6, se mostrara al usuario "OSO", por lo tanto este usuario habra hecho una pareja y tiene derecho a seguir, bien quisiera que por favor me ayudaras a como podria hacer para implementar este ejercicio, que seria lo mas conveniente usar dos matrices? como definiria la matriz de cadenas? como asociaria cada casilla de numeros con su respectiva cadena si genero aleatoriamente la matriz que guarda las cadenas?

por tu amable tiempo en ayudarme a orientarme en lo que deberia  hacer para codificarlo, quedare como siempre muy agradecido contigo  profesor Nacho, su generosidad es incalculable gracias.


23-May-2011 15:29
oscar gomez

Hola profesor Nacho.
profesor es que en este ejercicio no me has orientado y es un post antiguo podrias darme ideas por favor.

mil gracias profesor


24-May-2011 00:30
Antonio P.G.

Hola Óscar.

Ayer vi esto y me hizo pensar un poquillo. Así por encima lo que se me ocurre que podrías hacer es lo siguiente (solamente es una idea, je je):

- Tienes un array de tipo string[12], por ejemplo (ya que los nombres de los animales no son muy largos, digo yo), y ese array es máximo en un N (donde "N" tiene que ser par, claro, porque va por parejas).

- El usuario elige un número par ("n_parejas", por ejemplo) al principio del juego. Obviamente, "n_parejas" tiene que ser mayor o igual que 2 y menor o igual que N  (y además par, como hemos dicho). Sería interesante que si el usuario introduce un número que no fuese par, le dijese algo como "Pero bueno, ¿es que no sabes que tiene que ser par para que las parejas estén completas?". Para ello tendrías que evaluar el número que introduce, y tal, ya sabes, con un "repeat until" y eso.

- Por otro lado, la asignación de los animales en el array lo puedes hacer fijo (sencillito), o aleatorio (te puedo enseñar a esto último, pero si no estoy muy ocupado, que dentro de nada estoy de exámenes).

- Debes tener claro como quieres mostrar por pantalla los resultados y el progreso del juego. Con respecto a esto se pueden hacer varias cosas, como tener una pantalla secundaria (al pulsar una tecla concreta te apareciese una pantalla con los nombres de los animales adivinados, por ejemplo). Podrías incluso añadir un contador de intentos.

- Si quieres mostrar las "fichas" en forma de matriz, y el número de parejas no es fijo (lo elige el usuario), habría que crear algunas funciones de números enteros un poco liosas. (Yo invertí varias horas, más de 50 seguro, en hacer un SNAKE con mapas, niveles, velocidad... todo en modo texto, claro). Este punto, más que nada, es un aviso.

Éstas son algunas ideas. A mí, la verdad es que siempre me gustó hacer jueguecillos de estos, y de vez en cuando pienso en como mejorar algún algoritmo de alguno de ellos, pero nunca hay tiempo para implementarlo...

¡Espero haberte inspirado! (Y recuerda, apunta las ideas que se te ocurran o éstas, si te han gustado :-P, en un papel!)

¡Ciao!






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)