viernes, 21 de septiembre de 2012

"Autómatas Celulares"

Segunda Práctica " Autómatas Celulares"








  • Introducción

Para esta segunda práctica  como ya se mostró al inicio de la presentación escogimos el tema de “Autómatas Celulares” y como se indica la idea es mostrar al menos 4 reglas, pero estamos pensando en poner 10 reglas si no tenemos algún problema con el tiempo u otras cosas que se nos puedan presentar. 

  • Objetivo
El objetivo es representar las generaciones del conjunto de células mostrando 10 reglas de los autómatas celulares, como ya sabemos también el objetivo al realizar esta práctica es el fenómeno de auto-reproducción donde los trabajos con autómatas celulares son un ejemplo del intento de alcanzar la simulación de este fenómeno.


  • Justificación
El principal motivo por el que nos decidimos por el tema de autómatas celulares fue por el tiempo que teníamos para investigar algunas cosas de los otros temas, este tema que escogimos fue el que entendimos mejor y el que se nos hizo más práctico de programar a parte de que teníamos una idea de como hacerlo.


  • Desarrollo
La idea al principio era hacer como se indica 4 reglas al menos, pero conforme estuvimos avanzando consideramos que también podríamos agregar más, en este caso 10 reglas.
Como fuimos progresando con el código nos pusimos de acuerdo y le codificamos las otras 6 reglas mas para que fueran las 10, no había mucho problema puesto que solo se agregaron las funciones de las otras 6 reglas y se agregaron los botones restantes.
Llegamos a tener fallas al momento de imprimir por que no salia de acuerdo a la regla o solo salia una linea en diagonal, eso nos llevo tiempo en arreglarlo.
Hemos terminado el programa funciona correctamente, imprime las reglas como deben de ser y no hay falla alguna.


  • Código
import javax.swing.*;

      public class principal extends JFrame{

              public static final int SIZE_X = 1270;
                public static final int SIZE_Y = 760;
                  public Boolean patron_automata;
                    public int nRegla;
                      
                        public principal(){
                           setTitle("Automata Celulares ");
                             setSize(SIZE_X+1,SIZE_Y);
                               setResizable(false);
                                 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                   setLocationRelativeTo(null);
                                    }
                                      public void mostrar(){
                                         add( new dibujo(SIZE_X+123,SIZE_Y,patron_automata,nRegla));
                                           setVisible(true);
                                            }
                                          }
                                          Reglas: 

                                              public static final Boolean[] regla45 = {false,false,true,false,true,true,false,true};
                                              public static final Boolean[] regla57 = {false,false,true,true,true,false,false,false};
                                              public static final Boolean[] regla73 = {false,true,false,false,true,false,false,true};
                                              public static final Boolean[] regla75 = {false,true,false,false,true,false,true,true};
                                              public static final Boolean[] regla89 = {false,true,false,true,true,false,false,true};
                                              public static final Boolean[] regla246 = {true,true,true,true,false,true,true,false};
                                              public static final Boolean[] regla214 = {true,true,false,true,false,true,true,false};
                                              public static final Boolean[] regla125 = {false,true,true,true,true,true,false,true};
                                              public static final Boolean[] regla105 = {false,true,true,false,true,false,false,true};
                                              public static final Boolean[] regla109 = {false,true,true,false,true,true,false,true};

                                          public void mostrar(){
                                              setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                                              setLocationRelativeTo(null);
                                              setVisible(true);
                                          }
                                          public static void main(String[] args){
                                          new interfaz().mostrar();

                                          }
                                          public interfaz(){
                                          setTitle("Automata celular");
                                              setSize(600,400);
                                              setResizable(false);
                                              setLayout(null);
                                              intro = new JLabel("Programa interactivo de automatas celulares");
                                              intro.setBounds(150,10,400,100);
                                              add(intro);
                                              Botones = new JButton[10];

                                              handler = new botones(this);
                                              preparaacion(); 
                                          • Resultados
                                          Como implementamos 10 reglas obtuvimos resultados algo interesantes, las imágenes que se muestran son algunas de las pantallas que obtuvimos:

                                          Regla 45:




                                          Regla 57:


                                          Regla 246:


                                          • Video Youtube


                                          • Conclusiones
                                          La práctica nos resultó más interesante de lo que esperábamos ya que investigando nos dimos cuenta que hay patrones interesantes que se pueden formar. En esta práctica el principal problema que tuvimos fue el tiempo ya que entre otras materias teníamos que estar investigando por día un poco de todo, también aprendimos o mejoramos nuestro conocimiento sobre imprimir gráficas 2d así como la implementación de autómatas celulares.


                                          No hay comentarios:

                                          Publicar un comentario