Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





SHANGHAI JUEGO

Iniciado por Kabila, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

Kabila

                                 Estoy haciendo un juego tipo shanghai, y me he encontrado la problematica a la hora de hacer las fases.....
Si habeis jugado, sabreis que el puzzle se tiene que poder completar. No encuentro ahora la manera de hacer un algoritmo para que esto ocurra...aleatoriamente seria un desastre....alguien ha hecho algun juego de estos y podia comentarme el algoritmo o en su defecto alguna pagina que lo explicara

bueno hasta luego                                

ProD

                                Buenas... pues el algoritmo que se suele utilizar para resolver este tipo de juegos es el famoso "backtraking", es un algoritmo que va probando con todos los caminos y posibilidades para resolver un problema, informate más sobre este algoritmo para aplicarlo a tu caso en concreto.

Un saludo.
                               
as ideas son capitales que sólo ganan intereses entre las manos del talento

Loover

                                Buenas, yo si tengo un jueguecillo de ese tipo y la verdad es que me quedó bastante bien (incluso he pillado distribuidora). Como bien has dicho, colocar las fichas de modo aleatorio es una chapuza como una casa, pues no todas las fases se podrán completar, con el consiguiente cabreo del usuario.
Lo que yo hice fue un programa curioso. Genereba una fase aleatoria y hacia que el propio ordenador fuera el que la jugara, si completaba la fase, grababa las posiciones iniciales en un fichero, sino la descartaba. De este modo, en 10 minutos jugando el ordenador a toda pastilla había calculado unas 500 fases que al estar constituidas por las posiciones de las fichas pues no ocupaban casi nada.
Y ya no tienes más que acceder a dicho fichero y elegir una de esas fases que si pueden completarse.
Se que hay otras soluciones, pero esta es la que a mi se me ocurrio.

Puedes bajarte la demo de mi juego aquí:
http://www.looverstudios.host.sk/shangai.zip                                
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

feclare

                               
   Buenas, otra posible idea para montar los tableros, es jugar la partida al reves. Es decir que empiezas con el tablero vacio y vas poniendo las piezas por parejas en cualquier sitio vacio, elegido al azar( pero en que se pueda poner la pieza). De esta manera te aseguras que el puzzle se puede resolver.                                

Kabila

                                Bueno, pues parece que el algoritmo se llama backtraking. O sea que si no encuentro la solucion vuelvo para atras. el sistema de loover es curioso. Me ha gustado bastante la demo que me baje...esta muy limpia. Espero que te vaya bien con Alex. Pero creo que me quedare con el sistema de feclare...que aunque en realidad todo es mas de lo mismo, lo veo mas logico, ademas, de poder hacerse rapidamente y en "full time".Ahora hare unas pruebas para encontrar el punto exacto.
gracias.
                               

Loover

                                De nada hombre, me alegra que te guste la demo. ¿Cómo sabes que se llama Alex el de la distribuidora, xD?
Yo también pense en mi momento en hacer un algoritmo como el de feclare... pero tuve varios problemas. Por ejemplo, coloco una pareja de fichas que en este momento se pueden quitar... pero luego al colocar otras puede que me las tapen... y que ciertas combinaciones me lleven a dejarme la partida atascada. Supongo que no dí con el algoritmo perfecto.
Y luego, viendo la tele, vi una película de un ordenador que jugaba el sólo y me hizo tanta gracia que decidí adoptarlo. Y ese algoritmo si que era muy sencillo.
Suerte!                                
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Loover

                                Ah, no se si te fijaste en la demo... en los botones de abajo... en el que busca una posible pareja. Si tienes algún problema con ese algoritmo (o con cualquier cosa) avisame.
Ciao.

Y los demás, a ver si os animais a echarle un vistazo :sonriendo:


http://www.looverstudios.host.sk/shangai.zip

[ Este Mensaje fue editado por: Loover el 2002-05-15 12:03 ]

[ Este Mensaje fue editado por: Loover el 2002-05-15 12:06 ]                                
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Kabila

                                [loover]
Que como se lo de Alex? Pues son muchos años en esto. Alex era el boss de Crystal el cual vendio a nutridata y al final despues de follones e impagos (no se quien tuvo la culpa), se lo monto por su cuenta.
Bueno toda ayuda vendria bien.
por ejemplo...para controlar las alturas, tienes un array para cada piso?...y no estaria mal que me comentaras lo de sacar la solucion de la proxima pieza.

bueno hasta luego.                                

Loover

                                Bueno, Alex alega que el es inocente (claro, no va a decir ¡meterme en la carcel!; y que se fue de crystal al ver lo chapuceros y cabrones que eran). Ya veremos en que acaba la cosa.
Para las alturas, cada ficha tenía asignada (aparte de la posición "x", "y" y el gráfico) una varible "z", que indicaba más o menos profundidad. De este modo, al pinchar sobre pantalla, me salían x posibles fichas (imagina que pinchas encima de una y debajo tiene 3 más) y entre esas escogía la de menor "z". Luego hay que ver si esta atrapada o no, etc.
Para el algoritmo que elige una posible ficha... ahora me he dado cuenta que utilizo idenficadores de procesos (cosas del Fenix) por lo que no servirá para c++. Aunque la idea es esta:
Recorres todas las fichas y vas apuntando las que estén libres en un array (suponiendo que cada ficha tenga asignado un gráfico, imaginemos 36 gráficos, y 4 fichas tienen un mismo gráfico):
De [1..36]
Si libre() entonces Array [Numero de gráfico].Veces++
Luego en ese array tendras (según el número del gráfico):
Veces
 0     Esa ficha ni siquiera esta libre
 1     Hay una que esta libre, pero no tiene una pareja libre.
2,3 o 4     Hay una pareja libre! Resaltemoslas (para ello podemos ampliar la estructura del array de antes en dos secciones mas por cada casilla del array (IdenficadorFicha1 e IdentificadorFicha2). Es decir que aparte del gráfico común, cada ficha tenga un identificador único.

Más o menos lo hacia así.



                               
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

fiero

                                Hola, está muy chulo el juego, enhorabuena!

solo una pregunta, por qué va tan lento el ratón? dibujas todo el tiempo la pantalla como en un juego 3D?

un saludo                                
www.videopanoramas.com Videopanoramas 3D player

Loover

                                Gracias :sonriendo:
Si, es que no esta programado usando ninguana api gráfica, ni c++. Cuando lo hice no tenía ni idea de c, ni de opengl ni direct3d (ni nada) xD. Sabía pascal y poco más. Así que encontré el Fenix, lenguaje orientado a videojuegos parecido al pascal y lo hice con eso. Lo malo es que el fenix no puede ir más rapido :triste: A mi me va bien, pq tengo un peazo ordenador, pero si es verdad que en mi 200 antiguo el ratón iba petado.
Vamos, ese mismo juego, con esos gráficos, corriendo bajo opengl iria fostiado... pero termine hasta el moño de él y no pienso hacer mas shangais.
[Kabila]
Aunque el juego sea de lo más sencillo, me llevó muchisimo trabajo (también hice los gráficos) y me jodería mucho que me la jugara la distribuidora. ¿Sabes algo más de Alex?

PD: El proximo juego que haga te aseguro que no usare Fenix :sonriendo: (aunque lo recomiendo a todo aquel que no quiera meterse con apis gráficas)





[ Este Mensaje fue editado por: Loover el 2002-05-16 02:17 ]                                
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Kabila

                                [loover]
Pues de Alex no se mucho mas. De vez en cuando recibo un e-mail invitandome a mandarle algun juego y me cuenta "su Historia". Yo no se exactamente quien tenia o no razon. Pero de todas formas deberia de haber sido mas honrado por lo menos con los que estabamos con el desde el principio. Pues nosotros no teniamos culpa de que el hubiera vendido la empresa. Lo que si tengo oidas es que por ahora en esta nueva etapa y de momento va pagando que ya es algo.
Sobre el juego seguramente me lo montare mejor por arrays que es mas directo que las Z y es tambien mejor para hacer el algoritmo de montar el puzzle.......
hasta pronto                                

Loover

                                [Kabila]
¿Haces juegos por tu cuenta? ¿Estás en algún grupo? Si tienes web o algo me gustaria verla.
¿Y el Shangai? ¿Lo haces como hobby?                                
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Kabila

                                [loover]
Si, soy el director de Exelweiss ent.
La web esta un poco pachucha.ya que la teniamos sin cambiar y ahora solo tiene puesta la pagina principal (como Pyro)
http://www.exelweiss.com.
el shanghai es para hacer un encargo de 6 juegos para una maquina de pantalla tactil.
No, lo hacemos por curro.                                

Loover

                                Que nivel. Me gustan vuestros juegos (que vicies me pegaba al del sonámbulo).
Bueno, pues mucha suerte con esos jueguecillos.                                
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.