A PAck of classic GAMEs for BEnnugd

Started by DCelso, November 05, 2008, 12:03:38 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

DCelso

:D, claro estás hablando de cómo funciona svn internamente, yo lo decía a nivel de usuario básico.
A efectos prácticos y usando siempre svn sin la opción -r, es como si se borrasen, modificasen y se añadieran los nuevos, ¿no crees? Bueno, haces bien en aclararlo, gracias.

Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

claro, es como si se borrasen...
siempre me gusta aclarar eso, porque me parece una de las mejores caracteristicas, asi con esto decis adios a los archivos .bak... ya que en cualquier momento podes recuperar un archivo viejo...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Prg

 :) , ok, entonce subiré toda la carpeta. gracias por compartir sus conocimientos amigos :) . me alegra conocerlos...  ;)
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

Prg

hola, creo que tardaré un poco más para subir la carpeta, quiero terminar conecte 4 para subirlo también, (quizá dos semanas más, para estar bien seguro). he estado revisando la inteligencia que me habías dado que está en C, sin embargo hay muchas cosas que no se parecen a nada en bennu [code language="bennu" options="singleline"]assert(!game_in_progress);[/code]
como esto, pero estoy investigando, de todos modos, no soy muy bueno jugando conecte 4 je je, así que aunque se entretenga la pc poniendo bolitas fuera del tablero, aún así me gana
no se burlen, las diagonales no son mi fuerte, y por ahí me gana.

disculpa, cuando me dijiste que le ganabas por las diagonales, era completando en forma ascendente o descendente, me refiero:

00001
00010
00100
0 000

ó

así:

000  0
00100
01000
10000

(el espacio en blanco es donde tú ponías) es que el juego no revisaba de la primera forma, sin embargo si le ganabas incluso de la segunda, entonces se la armabas buena, o estoy en serios líos, pues mi algoritmo está fallando.

Gracias.
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

SplinterGU

creo que tenes un equivalente a assert en una libreria de sandman...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

DCelso

Hola prg, he estado jugando de nuevo y me pasan cosas raras raras, si en la penúltima columna empiezas a hacer 4 y el ordenador te bloquea la cuarta y luego sigue él y después le bloqueas tu poniendo la última ficha posible de la columna, resulta que el ordenador no se da cuenta de que no caben mas fichas y sigue intentando poner ahí para intentar ganar.

Luego las diagonales no las tiene en cuenta, si intentas hacer cualquiera de las dos diagonales no te las bloquea da igual el sentido que hagas.

Creo que sadria mas a cuenta que replanteases la IA, he estado revisando el algoritmo que tienes puesto y está un poco caótico, dificil de segir, te propongo que escribas este otro
Quote
IA Computador
*************
       Repite para i=1 i<=numeroDeTresEnRayaOrdenador()
        Si (huecos_seguidos_libres_hacia_arriba()>=1 OR
       huecos_seguidos_libres_hacia_izquierda()>=1 OR
       huecos_seguidos_libres_hacia_derecha()>=1 OR
       huecos_seguidos_libres_hacia_diagonal_izquieda()>=1 OR
       huecos_seguidos_libres_hacia_diagonal_derecha()>=1)
          ponerficha();
          termninarJuego();
          return;   
          // Ganar
       FinRepite
       
       // numeroDeTresEnRayaOrdenador: devuelve el número de grupos de ficha que hacen tres en raya actualmente del ordenador. Idem para numeroDeDosEnRayaOrdenador pero con dos en vez de tres
       
       Repite para i=1 i<=numeroDeTresEnRayaJugador()
        Si (huecos_seguidos_libres_hacia_arriba()>=1 OR
       huecos_seguidos_libres_hacia_izquierda()>=1 OR
       huecos_seguidos_libres_hacia_derecha()>=1 OR
       huecos_seguidos_libres_hacia_diagonal_izquieda()>=1 OR
       huecos_seguidos_libres_hacia_diagonal_derecha()>=1)
          ponerficha();
          termninarTurno();
         return;   
       FinRepite

       Repite para i=1 i<=numeroDeDosEnRayaOrdenador()
        Si (huecos_seguidos_libres_hacia_arriba()>=2 OR
       huecos_seguidos_libres_hacia_izquierda()>=2 OR
       huecos_seguidos_libres_hacia_derecha()>=2 OR
       huecos_seguidos_libres_hacia_diagonal_izquieda()>=2 OR
       huecos_seguidos_libres_hacia_diagonal_derecha()>=2)
          ponerficha();
          termninarTurno();
         return;   
       FinRepite
       
       // fichas aisladas: que no forman ni dos ni tres en raya.
       Repite para i=1 i<=numeroFichasAisladas()
        Si (huecos_seguidos_libres_hacia_arriba()>=3 OR
       huecos_seguidos_libres_hacia_izquierda()>=3 OR
       huecos_seguidos_libres_hacia_derecha()>=3 OR
       huecos_seguidos_libres_hacia_diagonal_izquieda()>=3 OR
       huecos_seguidos_libres_hacia_diagonal_derecha()>=3)
          ponerficha();
          termninarTurno();
         return;   
       FinRepite
         
      // Si se llega aqui es la primera ficha en ponerse, se busca un sitio con cuatro huecos
      repite para i=0 i<ColumnasTablero
        Si (huecos_seguidos_libres_hacia_arriba()>=4 OR
           huecos_seguidos_libres_hacia_izquierda()>=4 OR
           huecos_seguidos_libres_hacia_derecha()>=4 OR
           huecos_seguidos_libres_hacia_diagonal_izquieda()>=4 OR
           huecos_seguidos_libres_hacia_diagonal_derecha()>=4 )
             PonerFichaEnHueco();
        Sino
            PonerFichaEnCualquierHueco();
        TerminarTurno();
        return;   
      finRepite     
     
      // Si se llega aqui es que no se ha podido poner ficha relevante, significa que nadie puede ganar ya, se produce situación de Tablas
      mostrar_tablas()
      terminar_juego()   
Falta el contenido de las funciones, pero esto ya es igual como se plantee mientas devuelvan lo esperado.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Prg

QuoteHola prg, he estado jugando de nuevo y me pasan cosas raras raras, si en la penúltima columna empiezas a hacer 4 y el ordenador te bloquea la cuarta y luego sigue él y después le bloqueas tu poniendo la última ficha posible de la columna, resulta que el ordenador no se da cuenta de que no caben mas fichas y sigue intentando poner ahí para intentar ganar.

a mi también me pasa, y es que como acomodé la IA la última vez, pues está muy mal, y no me di cuenta, tengo un error fatal por ahí que ya había detectado, pero que decidí mejor seguir la IA de el documento C que me habías pasado, sin embargo si ya tienes algo, pues mejor lo utilizo :)

QuoteLuego las diagonales no las tiene en cuenta
esta raro, a mí sí me las bloquea, será la posición, total, seguiré lo que me pasas, y nadamás creo las funciones que faltan

:)

muchísimas gracias.
¿oye y del buscaminas, al final cómo lo dejaste. a mí se me ocurría un array private de boolean, y así explicabas el uso de punteros, algo que se puede volver complicado o muy útil, según el manejo? :)

gracias por la IA, me has facilitado mucho las cosas, ahora sólo lo entiendo  :)

¡¡¡saludos!!!
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

DCelso

De nada por el algoritmo, como tal, no está probado puede que falten cosas, variables y/o funciones adicionales. Creo que las funciones de numero de tres (o dos) en raya debería quizas devolver un vector con la posiciones que producen tal efecto, para luego poner la ficha, depende un poco de la implementación que cada uno quiera usar.

En cuanto al buscaminas, yo no recuerdo haber empezado ninguno , ni siquiera habérmelo planteado. Puede ser interesante, quizas, luego cuando termine el manic miner (a lo mejor te referías a este) intente ponerme con este.

Actualmente estoy haciendo juegos de tablero digitales para algunos de estos a los que suelo hechar de vez en cuando una partida con los colegas. http://www.boardgamegeek.com/files/thing/15033

Son más fáciles de implementar que nada, consiste en crear procesos y darle movilidad nada mas :D.

Por cierto de camino podríais ayudarme con uno de ellos, bueno lo pongo mejor en mesa de ayuda.

Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Prg

#248
Quoteluego cuando termine el manic miner (a lo mejor te referías a este)
je je, en realidad sí, no sabía cual era uno y cuál el otro, nunca he jugado manic miner y pensé que eran la misma.

QuotePor cierto de camino podríais ayudarme con uno de ellos,
sí, por supuesto. :) , ¿con qué?

oye, encontré algo que necesito cambiar de tu algoritmo, es que sería muy fácil ganarle de no ser así; te comento:

en número de 3 en raya jugador, no podemos permitir que revise cuando ya haya 3 en raya en forma horizontal, pues no se puede bloquear, el bloqueo inicia cuando hay dos en raya, lo que implica no sólo cambiar un poco esa parte, sino también revisar si ya está bloqueado en horizontal por un lado, y por qué lado bloquear, lo mismo pasa en las formas diagonales. he estado pensando, podrías enviarme una captura de cuando ganas en forma diagonal, pero marcándome la última ficha que pusiste y la última que la pc puso, es muy importante, para no cometer errores actualmente. ya no es necesario, ya veo que pasa, gracias.

también, en la parte final, no puedo poner terminar juego porque es muy posible que aunque yo no pueda ganar, el jugador sí, y también que el jugador no se de cuenta, por lo tanto, no le puedo decir que va a ganar y yo ya no, considero más prudente no pocer terminar juego  cuando la pc no puede ganar, creeme, eso puede hacer enojar al jugador pues puede que iba a ganar con una ficha más y no le das la victoria, sino un ¡fin del juego, empate!
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

DCelso

Hola prg, tienes razón ,veo ahora que faltan cosas al algoritmo. Bastantes diría yo.
En realidad es un algoritmo para nivel de jugador novato, ya que si juegas intentando hacer dos por un lado dos por otro y luego poner una en medio y formar cinco de seguido no se daría cuenta y no te bloquearía. Pero eso es mas "power" ahora mismo no veo como quedaría el algoritmo para contemplar ese caso.
En cuanto a lo que comentas de generar tablas,es porque si no puedo poner ficha para ganar y no puedo bloquear al enemigo para que no gane, quiere decir que físicamente es imposible que gane cuando le toque porque yo no he podido poner ficha para que no pase, ¿comprendes?
Asi que para qué continuar, si es por placer de rellenarlo todo pues vale, pero lo veo ya una tontería seguir. No se si quizas el problema que ves venga por no contemplar el caso anterior también.

Sobre las diagonales, sí que veo que quizás como no es directo el bloquear tres seguidas, puesto que puede que en la columna en la que tengas que bloquear no haya fichas suficientes se commplica. Habria que dejar este caso para un nivel superior de IA por ahora :D, tampoco veo ahora mismo como ponerlo el el algoritmo para tenerlo en cuenta.

Debería programar el algoritmo y someterlo a pruebas para ver si falla, pero a priori no le veo fallos que provoquen que haga locuras, solo estas desventajas.

Pero que por mi parte no hace falta que lo hagas, solo son posibles alternativas. Puedes seguir con el tuyo.
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

Windgate

Guaaa, veo mucha comida de coco para el algoritmo xD
¿No hay nada por ahí en C o similar que se pueda traducir a Bennu y sea "perfecto"?
Ponernos a pensar el algoritmo ideal puede tomarnos mucho tiempo y no conseguir el resultado perfecto, seguro que alguien en su día lo programó y tendrá una solución bien buena.
Lo siento pero los clásicos no me motivan demasiado y no puedo ayudaros en ese sentido :(
Os sugiero "robar" una idea ya programada.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

Prg

je je, ya subí el conecte 4 y el wiz, a ver qué les parece.

Quote¿No hay nada por ahí en C o similar que se pueda traducir a Bennu y sea "perfecto"?
si, dcelso me pasó uno en c, pero como soy nuevo en c y llevaba mucho ya hecho, pues mejor lo hice yo.

ya está el algoritmo, no es tan bueno como el de c, es tardado, y le faltan cosas todavía, no se cuales, pero poco a poco las encontraré, es fácil ganarle, no se adelanta como nosotros esperamos, pero bueno, ya lo subí.

espero haberlo subido correctamente al svn.  :)
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

DCelso

PRG,
te han quedado muy bien el conecta4 y el wiz.
Cosas que me han pasado.
He compilado, he puesto el wiz , he estado jugando un rato y a mitad de pantalla pasa algo como que cambio de fase o no se que y se me teletransporta el personaje.
Tambien cuando me echo una barrera y caigo encima de un enemigo me matan, pero aparezco con la barrera puesta, luego al echarme la barrera de fuego se me quedan las dos puestas, ademas parece que nunca se terminan.
Mas cosas, doy a escape, e intento jugar otra vez y ya no hay enemigos, creo que le di a pararlos antes de que salieran y ya se quedaron parados para los restos al igual que me pasaba con las barreras.
Bueno doy a escape para salir y entro en conecta4 y no se me ve ni el tablero ni los personajes asi que tengo que salir del apagame y volverlo a ejecutar para probar el conecta4
En el conecta4:
ya no hace cosas raras la IA, como tirar en sitios donde no hay tablero.
Parece actuar inteligentemente para muchos casos, aún así le gané con una diagonal dos veces.
Luego he ganado una tercera porque me la ha regalado era una horizontal en segunda fila, resulta que me ha puesto una ficha en primera fila, dejándome poder poner una ficha encima suya y conectar4.

A ver si termino el manic miner y lo subo para incrementar el numero de juegos ;D, que lo tengo paradito.
También a ver si se anima alguien a colaborar con mas jueguecitos clasicos distintos. :D
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

SplinterGU

estuve probando estos juegos despues de mucho tiempo...

cosas que note...

columns no terminaba mas... iba por el nivel 10... no se cuantas miles de lineas...
el pong el personaje que maneja la computadora es muy preciso...
tic-tac-toe es muy facil ganarle... uno no deberia ganarle a la maquina... en el tic-tac-toe solo puede ganar quien inicia, pero si uno sabe como es la logica del juego, y no es quien empezo, puede provocar un empate... no hay forma de perder en el tic-tac-toe, a menos que uno cometa un error...
el galaxian esta excelente... pero me parece que la nave se mueve un poco lento (o soy muy malo) porque pierdo muy rapido
el wiz, creo que hay problemas con los graficos, porque no veo al personaje, veo un cono, unos rayos y cosas asi...
la mayoria de los juegos al pulsar ESC en vez de ir al menu principal, salen...

luego estan todos bien y son adictivos... me mantuvieron un buen rato entretenido, salvo el wiz, que no pude jugarlo...

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

#254
donde esta el conecta4? siguien usando el svn de google? yo baje todo de ahi desde cero...
otra cosa, no corre el dcb compilado, necesite recompilar.

creo que los problemas que mencione de los graficos se deben a mayusculas y minusculas en los nombres de los archivos... por favor, usar todo minusculas, asi es compatible con linux...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2