Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Ayuda con juego de laberinto (https://www.clubdelphi.com/foros/showthread.php?t=95400)

JoAnCa 18-09-2021 19:27:04

Ayuda con juego de laberinto
 
Hola a todos
Para reforzar el aprendizaje de mi nena, se me ocurrio crear un juego didactico, el cual consiste en caminar por un laberinto en el que se encontrara obstaculos que debera vencer contestando preguntas, y habrá puertas que para abrirlas tendra que contestar preguntas tambien.
La base de datos de preguntas se puede enriquecer con mas preguntas de diferentes materias, segun las necesidades de aprendizaje de los niños.

El problema esta en que no se como hacer para detectar las paredes del laberinto para no atravesarlas, asi como los obstaculos y si la pared es una puerta o no, para que formule las preguntas.

Ya tengo la ingenieria del software completada, y cuando voy a comenzar a programar es que me encuentro con esta traba.

La idea es mover con las teclas del cursor un TImage (con la imagen de un niño) por todo el laberinto.
El laberinto pienso poner otro TImagen con la imagen del laberinto.
Los obstaculos seran otros TImages que al llegar con el niño debe salir la pregunta.

Estoy en el camino correcto? o estas ideas no son las mas apropiadas

Que ideas me pueden dar para hacer lo que quiero?

Casimiro Notevi 18-09-2021 21:31:20

Hay muchas formas de hacerlo, pero creo que primero debes crearte "un mapa", que viene a ser un array multidimensional con lo que hay en cada sitio.
Para que se entienda fácil, imagina el simple juego de los barquitos, con una rejilla de 10x10 y con los barcos repartidos, algo así:

-1234567890
A---------S
B--CC---P--
C-----S-P--
D--A----P--
E--A----P--
F--A--S----
G-------CC-
H-AAA------
I-----C----
J-----C--S-

Debes verificar cada paso, en tu juego, con el mapa que hayas creado, por ejemplo en este caso, los "-" es agua, no hay nada. La "S" es un submarino, los "AAA" acorazados, etc.
Y en tu juego habrá una puerta, un objeto con un valor, etc.
Otra cosa muy distinta es mover los dibujos por pantalla, que es algo aparte de la estructura del funcionamiento interno del juego.
Espero haberte dado una pista.

JoAnCa 19-09-2021 03:14:50

Cita:

Empezado por Casimiro Notevi (Mensaje 542908)
Hay muchas formas de hacerlo, pero creo que primero debes crearte "un mapa", que viene a ser un array multidimensional con lo que hay en cada sitio.
Para que se entienda fácil, imagina el simple juego de los barquitos, con una rejilla de 10x10 y con los barcos repartidos, algo así:

-1234567890
A---------S
B--CC---P--
C-----S-P--
D--A----P--
E--A----P--
F--A--S----
G-------CC-
H-AAA------
I-----C----
J-----C--S-

Debes verificar cada paso, en tu juego, con el mapa que hayas creado, por ejemplo en este caso, los "-" es agua, no hay nada. La "S" es un submarino, los "AAA" acorazados, etc.
Y en tu juego habrá una puerta, un objeto con un valor, etc.
Otra cosa muy distinta es mover los dibujos por pantalla, que es algo aparte de la estructura del funcionamiento interno del juego.
Espero haberte dado una pista.


Gracias por la respuesta
Esto ya me da la idea de como construir el laberinto, no como lo tenia pensado con una imagen unica (un png)
Asi es mas facil hacer los laberintos, ya que seran varios niveles o laberintos. Cada laberinto se hará a partir de una matriz como me dices.


Lo que me queda es el mover el dibujo del jugador, y que interactue con las paredes, puertas y los demas objetos, detectar que "ha tocado" cada cosa

JoAnCa 20-09-2021 20:55:16

Pues ya encontre la forma de mover al personaje del jugador por el laberinto.
Lo que hago es de forma paralela moverme por el array y preguntando que letra hay en esa posición, y en dependencia de ello, muevo al jugador o interectuo con el objeto segun proceda.


Lo que se me presenta otra dificultad, es que la imagen del jugador no se me pone transparente sobre otra imagen.
Cuando esta sobre un TPanel si se hace transparente, pero cuando está sobre otra imagen (el piso del laberinto, u otro objeto) muestra el recuadro blanco alrededor del personaje.


Como hacer para cuando el TImage esté sobre otro, se vean las partes transparentes, y se vea la imagen de fondo a traves de sus partes transparentes?

Casimiro Notevi 20-09-2021 21:12:13

Cita:

Empezado por JoAnCa (Mensaje 542952)
Pues ya encontre la forma de mover al personaje del jugador por el laberinto.
Lo que hago es de forma paralela moverme por el array y preguntando que letra hay en esa posición, y en dependencia de ello, muevo al jugador o interectuo con el objeto segun proceda.

Sí, así es como yo he hecho algunos juegos sencillos, ya hace muchos años.


Cita:

Empezado por JoAnCa (Mensaje 542952)
Lo que se me presenta otra dificultad, es que la imagen del jugador no se me pone transparente sobre otra imagen.
Cuando esta sobre un TPanel si se hace transparente, pero cuando está sobre otra imagen (el piso del laberinto, u otro objeto) muestra el recuadro blanco alrededor del personaje.
Como hacer para cuando el TImage esté sobre otro, se vean las partes transparentes, y se vea la imagen de fondo a traves de sus partes transparentes?

A ver si no está transparente sino que es del mismo color que el tpanel y por eso te parece que lo es.

JoAnCa 20-09-2021 21:23:21

Cita:

A ver si no está transparente sino que es del mismo color que el tpanel y por eso te parece que lo es.
Si, puede ser, pero tengo que aclarar que en realidad no es un TImage, es un TsImage de la biblioteca AlphaControls y tiene su propiedad Transparent en True.

Y despues de escribir el post anterior me doy cuenta que el problema es del control TsImage cuando le pongo un sSkinManager para ponerle un skin a la aplicacion
Cuando vi que con TImage si sale bien, elimine el sSkinManager y ya al TsImage si le funciona la transparencia, parece que es algo de esos controles

Quise usar el TsImage porque me permite seleccionar la imagen de un TImageList, que es mas comodo cuando creo los bloques de forma dinamica en ejecucion.


La franja horaria es GMT +2. Ahora son las 03:28:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi