domingo, 20 de noviembre de 2011

Sistemas Distribuidos (4ta Entrega)

Que es un sistema Distribuido?
bueno este, como su nombre lo dice, es un software que se encuentra distribuido en diferentes computadores conectadas por medio de la red, con el protocolo cliente-servidor.
Estos sistemas funcionan mandando mensaje y recibiendo asi respondiendo a con una accion, los sistemas distribuidos son muy bueno para cuando un sistemas es demasiado complejo que se necesita mas de un computador con hardware limitado, podria ser casi ilimitado si utilizamos varios computadores conectados.

y que es un protocolo cliente-servidor?
pues este es un sistema donde el cliente es una maquina que solicita un determinado servicio y se denomina servidor a la maquina que lo proporciona.


Los servicios pueden ser:
  • Ejecución de un determinado programa.
  • Acceso a un determinado banco de información.
  • Acceso a un dispositivo de hardware.

ahora como implementaria mi software en un sistema distribuido:
primero tendria que crear otra clase que contenga sockets, en java ya existen estas clases predeterminadas en la API encontramos mucha informacion relacionada, esto es para crear conexiones por medio de la red, con esto implementaria al servidor, haria otra clase para el cliente que seria solo una interfaz que mandaria el mensaje por medio de esos sockets. mi software seria lo mismo pero en otro computador, que respondiera a mis mensajes desde otra computadora.
otra manera seria crear scrips con cgi's configurando un servidor abierto como apache y poner mi programa en la direccion de mi computador y de igual manera es un cliente-servidor.

aqui un link con informacion mas detallada http://www.augcyl.org/?q=glol-intro-sistemas-distribuidos

martes, 1 de noviembre de 2011

Patrones de Diseno (3ra entrega)

Bueno para esta parte de mi programa, lo hice con el Modelo Vista Controlador ya que tengo todo separando para no publicar tanto codigo lo hare un diagramas uml para simplificar la vision.

primero tengo mi parte separa de la interfaz grafica que asu vez se comunica con el controlador que es el que hace la logica de como calcular los colores de las caras asi como su posicion y asi quedaria modelado:


cuando el modelo es el cubo, que genera las ventanas botones etc, graficoscubito tiene toda la logica y el controlador es obtener coordenadas que asu vez llama a los movimientos

Eventos Y Excepciones (3ra entrega)


Fue dificil para mi, encontrar donde colocar una excepcion hasta que me di cuenta de que no se puede dan ciertos movimientos asi que puse como condicion, que si se llega a seleccionar una cara a mover, y intenta moverlo para un lado que on se pueda, generara un error y lanzara la excepcion con un mensaje de error
y aqui lo muestro:

try{
    if(caraSeleccionada==0){// si ninguna cara ha sido seleccionada
       throw new Exception();//lanzara una nueva excepcion que mas adelante la atrapara
   }
    else{
   System.out.println("esta accion si es posible");
    switch(caraSeleccionada){
   //y realiza el movimiento
}
}catch(Exception excepcion){
System.out.println("esta accion no puede hacerse, NINGUNA CARA HA SIDO SELECCIONADA");
     }

igual para cada cara, si en dado caso no ha escogido ninguna lanzara esa exepcion
y aqui una pantalla de la excepcion

y despues escogiendo una cara y realizando un movimiento



EVENTOS

mientras tanto los eventos son diferentes

disenie una accion para cada boton, los de los colores solo regresan el valor entero equivalente al color que movera asi:

JButton botonRojo=new JButton("Rojo");
 botonRojo.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent e){
      System.out.println("Cara seleccionada roja");
      caraSeleccionada=1;
  }
     }
     );
y de esta forma lo hice para cada boton, pero para los botones de movimientos fue en donde implemenente las excepciones donde tengo que llamar los colores de las caras para poder mandarlos al de los movimientos y aqui el codigo.

JButton botonoeste=new JButton("IZQUIERDA");
        botonoeste.addActionListener(new ActionListener() {
 public void actionPerformed(ActionEvent e){
  System.out.println("movio hacia izquierda");
   try{        
   if(caraSeleccionada==0){
    throw new Exception();
      }
      else{
   System.out.println("esta accion si es posible");

y es cuando llama al movimiento a realizar mandando las caras para que las cambie que es como lo muestro en las imagenes de arriba

por lo pronto es todo que tengan un buen dia.


Interfaz Grafica (3ra Entrega)

Para esta entrega mostrare mi interfaz grafica que para medio curso ya la tenia lista para medio curso
ya que lo necesitaba para mostrar los colores del cubo.
Para mi beta del programa estoy implementando eventos del raton y definiendo las acciones para cada boton que son los movimientos pero el disenio de la interfaz grafica es la misma.


agregue varios botones que son las que moveran las caras de los cubos cada que se haga un movimiento la pantalla se repintara con repaint().

utilice g.fillRect(x,y,anchura,altura)
para que los cuadros se pinten, utilice metodos que cree para buscarlos dentro de todas las caras asi buscar los colores para cada cara. y quedaria algo asi.



aqui ya movi un lado de la cara hacia arriba como se muestra en la imagen con los botones de eventos que en la proxima publicacion mencionare, para generar estos colores los busco en todo el cubo y calculo en x , y en numero de pixeles para que salgan acomodados.



Para este proyecot implemente JPanel, JButton, JFrame y un container para la ventana asi hice un objeto de cada uno de ellos para juntarlos todos en el container.

Aqui el codigo


 JPanel panelbotones= new JPanel();
 JButton botoneste= new JButton("DERECHA");
 JButton botonoeste=new JButton("IZQUIERDA");
 JButton botonnorte=new JButton("ARRIBA");
 JButton botonsur= new JButton("ABAJO");
panelbotones.setLayout(new GridLayout(1, 2));
panelbotones.add(botonsur);
panelbotones.add(botoneste);
panelbotones.add(botonoeste);
panelbotones.add(botonnorte);
Container ventana = getContentPane();
 ventana.add(gr,BorderLayout.CENTER);
ventana.add(panelbotones, BorderLayout.SOUTH);
setSize(450,400);
 setVisible(true);

Eso seria nadamas la interfas para la ventana, lo de los colores lo tengo en otra clase que pinta color por color dependiendo de donde este ubicada, con la funcion anteriormente mencionada.