gentoo linux, java, software libre y otras hierbas
ago, 21 2008 - 4:49 pm

El Juego de la Vida [Java]

Se trata de una implementación chichi del famoso Juego de la Vida en Java, ya que Burnhack me ha picado con el gusanillo de la curiosidad ;) En fin… el programa simula un espacio de células que cumplen con las reglas básicas del juego, permite dibujar nuevos patrones, generar granjas aleatorias, y poner en marcha automática o manualmente. De paso me sirvió para explicarle a mis hermanos el porqué del emblema hacker :D

Puedo decir que me divertí mucho programando, y que a la vez me da pena no haber podido dedicarle más de tres días: el resultado es un programa que funciona bien cuando se ejecuta de manera normalita, pero con la opción de zoom hay problemas. Y aquí les doy un par de consejos: puesto que al principio el programa lo iba a hacer junto con Burnhack, utilicé una clase que él utilizaba llamada BufferedImage (para dibujar las figuras). Luego, cuando me dí cuenta de que no entendía ni mierda nada del código de mi amigo, decidí hacer la lógica desde cero; y aquí van los consejos:

  • Hacer comentarios es SUPREMAMENTE IMPORTANTE, sobre todo cuando se programa en grupo
  • Cuando hagas este tipo de proyectos es mejor que uses Canvas; yo caí en cuenta muy tarde y ya me da flojera arreglarlo

Por supuesto, el programa está disponible para que lo estudien, lo copien, lo regalen, etc. Espero le sirva a alguien. Les quedo debiendo la explicación porqué es algo largo ;)

Nota: los iconos los he tomado de Icojoy

Compilación y ejecución…

#compilación
javac Glider.java
#ejecución normal
java Glider
#ejecución con la característica zoom (umm, que mal programador soy :mrgreen: )
java Glider –zoom

Descargar código fuente

26 Comentarios | deja el tuyo

3 enlaces entrantes

23 Comentarios en “El Juego de la Vida [Java]”

  1. Juani dice:

    Guarda con el Gusanillo!
    Lo probare en cuanto encuentre tiempo, estos últimos días es estado muy ocupado xD
    Nos vemos.

  2. Burnhack dice:

    Hola CasiDiablo !!! que bien te quedo y me has superado porque aunque no funcione bien el zoom.. El mio directamente no funcionaba porque no tenia ni idea de por donde cogerlo. Pero mi interfaz esta mucho mas guapa!!:P jeje
    Ahora el reto es…entre ambos lograremos manejar los patrones del golly????????

    Saludos cuidate!

  3. Casidiablo dice:

    Espero entonces tu programa para ver que tal, y si es el caso lo publico aquí (si quieres) ;)

    Un saludo!

  4. Cristian T dice:

    Hola muy buen programa, lo corri y anda tiene algunos errores pero esta re biennn

    saludos

  5. Jonathan dice:

    Hola casidiablo, tengo una consulta estoy realizando un automata celular que simula el comportamiento del sida. Mi programa funciona bien, es una matriz pero solo muestra numeros (0 celda vacia, 1 celula sana, 2 celula infectada) y quiero que muestre una matriz pero de colores (0 blanco, 1 verde, 2 blanco) como puedo hacer eso a partir de una matriz que contiene esos numeros?

  6. Cristian dice:

    @Jonathan: estás desarrollando el programa de cero, o basaste algo en lo que he puesto en ese ejercicio.

    En cualquier caso, si deseas que te ayude de la mejor manera, deberías ponerlo en el foro de Java de elhacker.net, con el código que llevas en donde se te ayudará bastante.

    Un saludo!

  7. Jonathan dice:

    Hola, si estoy programando desde cero, esta listo casi en su totalidad (tratare de subir el codigo lo antes posible) pero no se como implementar la parte grafica, lo que quiero es que muestre una malla como la de tu programa y que en base a los numeros de una matriz (0, 1 y 2) mustrre dsitinots colores. Te describo las reglas del juego:

    1.El universo del problema es una matriz nxn
    2.Cada localidad de la matriz es una celula
    3. Se utiliza la vecindad de Moor, algo asi:
    0 1 0
    1 * 1
    1 1 1
    donde * es la posicion de la matriz que queremos comparar y los numeros a su alrededor son sus vecinos adyacentes
    4. La matriz tiene fronteras periodicas
    5.Una celula infectada tiene probalilidad p1 de morir
    6.Con probalilidad p2 nace una celula
    7. Una celula sana se infecta con una probalilidad p3 si y solo si en la vecindad existe una celula infectada
    8. Con Probalilidad p4 un virus muere
    9.Cada celula infectada produce n virones (sus hijos) y esta muere.
    10. Si el 80% del sistema esta infectado, este colapsa
    11. El viron tiene 5 oportunidades de infectar una celula adyacente

  8. Jonathan dice:

    Esas fueron las reglas, que ya las programe en su mayoria. Gracias por tu atencion

    Un saludo

  9. NOEL 2006 dice:

    por kulpa de esa cosa estoy inmerso en una creisis existencial, maldigo el dia kien ideo eso de la makina de turing, touring, o komo se escriba!

  10. Amagax dice:

    hola.. me parece genial lo q haces por todos nosotros q estamnos empezando en el mundo de la programacion java.. Me gustaria saber si NetBeans sirve para software libre, o sea me rifiero a q si yo programo NetBeans en windos ese mismo prograna me sirva para software libre o se tendria q hacer una modificacion?. Me gustaria q me respondieras a mi correo. Por favor.

  11. Cristian dice:

    @Amagax:

    Puesto que si lo haces en Netbeans, la programación es en Java, y todo eso es multiplataforma….. conclusión: te corre en cualquier sistema operativo.

    Un saludo!

  12. Amagax dice:

    Gracias por tu respuesta.. =)

  13. MRLS dice:

    Bien hecho, no lo he descargado así que te pregunto: ¿Solo sirve para la versión original, o puedes crear otras variantes del juego?

    Es que tengo un proyecto de un compilador que consiste en un lenguaje que establezca las reglas para este juego, la ventaja es que solo tengo que hacer un compilador fuente-fuente que genere el código java en un archivo y luego llamar a la consola para compilarlo, pero en mi lenguaje lo estoy extendiendo a otras variantes de los universos cuadrados (Iba a hacerlo de N dimensiones, pero no soy muy bueno con la API 3D de java).

    Hace tiempo hice una versión que mostraba todo en la consola con println, pero era una porqueria para una unidad de programación orientada a objetos.

  14. Julian Arbelaez dice:

    buenos dias..

    Ya he visto como han hecho el juego de la vida, pero quisiera saber si existe o ustedes tienen un codigo de este juego pero lo mas simple posible, sin zoom ni nada de esto, como para principiantes muy principiantes, gracias..

¡Déjanos tu comentario!