Archivo de la etiqueta: pitagoras

Juego 4 en raya hecho en C++

Revisando entre mis curiosidades me encontré un código que hice hace varios años (de la prepa creo), se trata del juego 4 en línea o 4 en raya hecho en C++, he decidido subirlo al blog ya que no me gustaría que se perdiera en el final de los tiempos xD.

Pueden descargar el código fuente aca:

Juego 4 en raya hecho en C++

#include <iostream>

using namespace std;

const int n=6;
const int m=8;

bool sobranEspaciosLibres(int tablero[n][m])
{
    for(int i = 0; i < 6; i++)
    {
        for(int j = 0; j < 8; j++)
        {
            if(tablero[i][j] == 0)
            {
                //Sobran espacios donde colocar fechas
                //cout<<"Hay espacios"<<endl;
                return true;
            }
        }
    }

    //No sobran mas espacios donde colocar fichas, juego empatado
    cout<<"No hay mas espacios: empate"<<endl;
    return false;
}

void ImprimirTablero(int tablero[n][m])
{
    for(int i = 0; i < 6; i++)
    {
        for(int j = 0; j < 8; j++)
        {
            if(tablero[i][j] == 1)
            {
                cout<<" O ";
            }
            else if(tablero[i][j] == 2)
            {
                cout<<" X ";
            }
            else
            {
                cout<<" . ";
            }

        }
        cout<<endl;
    }
}

int ColocarFichaEn(int tablero[n][m], int columna)
{
    for(int i = 0; i < 6; i++)
    {
        if(!(i+1 > 5))
        {
            if(tablero[i][columna] == 0 && tablero[i+1][columna] != 0 )
            {
                return i;
            }
        }
        else
        {
            //Alcanzo la base del tablero
            if(tablero[i][columna] == 0)
            {
                return i;
            }
        }
    }

    return -1;
}

bool columnaATope(int tablero[n][m], int columna)
{
    if(tablero[0][columna] != 0)
    {
        cout<<"No hay espacio para colocar la ficha ahi"<<endl;
        return true;
    }
    return false;
}

bool ganador(int tablero[n][m], int fila, int columna, int jugador)
{
    //Vertical
    bool encontrado = false;
    int total = 0;

    for(int i = 0; i < n; i++)
    {
        //cout<<"i: "<<i<<endl;
        if(encontrado)
        {
            if(tablero[i][columna] == jugador)
            {
                total++;
            }
            else
            {
                encontrado = false;
                total = 0;
            }
        }
        if(tablero[i][columna] == jugador && !encontrado)
        {
            encontrado = true;
            total++;
        }

        //cout<<"total: "<<total<<endl;
        if(total == 4)
        {
            cout<<"El jugador "<<jugador<<" gana!"<<endl;
            return true;
        }
    }

    //Horizontal
    encontrado = false;
    total = 0;

    for(int i = 0; i < m; i++)
    {
        //cout<<"i: "<<i<<endl;
        if(encontrado)
        {
            if(tablero[fila][i] == jugador)
            {
                total++;
            }
            else
            {
                encontrado = false;
                total = 0;
            }
        }
        if(tablero[fila][i] == jugador && !encontrado)
        {
            encontrado = true;
            total++;
        }

        //cout<<"total: "<<total<<endl;
        if(total == 4)
        {
            cout<<"El jugador "<<jugador<<" gana!"<<endl;
            return true;
        }
    }

    //Diagonal \
    //Obtener Coordenadas donde inicia la diagonal en base a fila - columna
    int nuevaFila = fila;
    int nuevaColumna = columna;
    encontrado = false;
    total = 0;

    //cout<<"Fila: "<<fila<<" Columna: "<<columna<<endl;

    while((nuevaFila != 0 || nuevaColumna != 0))
    {
        nuevaFila--;
        nuevaColumna--;

        //cout<<"nueva Fila: "<<nuevaFila<<" nueva Columna: "<<nuevaColumna<<endl;
        if(nuevaFila == 0 || nuevaColumna == 0)
        break;
    }

    //cout<<"nueva Fila: "<<nuevaFila<<" nueva Columna: "<<nuevaColumna<<endl;

    do
    {
        if(nuevaFila >= n)
        break;

        //cout<<"nueva Fila: "<<nuevaFila<<" nueva Columna: "<<nuevaColumna<<endl;
        if(encontrado)
        {
            if(tablero[nuevaFila][nuevaColumna] == jugador)
            {
                total++;
            }
            else
            {
                encontrado = false;
                total = 0;
            }
        }
        if(tablero[nuevaFila][nuevaColumna] == jugador && !encontrado)
        {
            encontrado = true;
            total++;
        }

        //cout<<"total: "<<total<<endl;
        if(total == 4)
        {
            cout<<"El jugador "<<jugador<<" gana!"<<endl;
            return true;
        }

        nuevaFila++;
        nuevaColumna++;

    }while(nuevaFila < n);



    //Diagonal /
    nuevaFila = fila;
    nuevaColumna = columna;
    encontrado = false;
    total = 0;

    //cout<<"Fila: "<<fila<<" Columna: "<<columna<<endl;

    while((nuevaFila != 0 || nuevaColumna != m))
    {
        nuevaFila--;
        nuevaColumna++;

        //cout<<"nueva Fila: "<<nuevaFila<<" nueva Columna: "<<nuevaColumna<<endl;
        if(nuevaFila == 0 || nuevaColumna == m)
        break;
    }

    //cout<<"nueva Fila: "<<nuevaFila<<" nueva Columna: "<<nuevaColumna<<endl;

    do
    {
        //cout<<"nueva Fila: "<<nuevaFila<<" nueva Columna: "<<nuevaColumna<<endl;
        if(nuevaFila >= n)
        break;

        //cout<<"nueva Fila: "<<nuevaFila<<" nueva Columna: "<<nuevaColumna<<endl;
        if(encontrado)
        {
            if(tablero[nuevaFila][nuevaColumna] == jugador)
            {
                total++;
            }
            else
            {
                encontrado = false;
                total = 0;
            }
        }
        if(tablero[nuevaFila][nuevaColumna] == jugador && !encontrado)
        {
            encontrado = true;
            total++;
        }

        //cout<<"total: "<<total<<endl;
        if(total == 4)
        {
            cout<<"El jugador "<<jugador<<" gana!"<<endl;
            return true;
        }

        nuevaFila++;
        nuevaColumna--;

    }while(nuevaFila < n);

    return false;
}

int main()
{
    int matriz[n][m];

    //Preparamos el tablero del juego rellenandolo con 0's
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < m; j++)
        {
            matriz[i][j] = 0;
            //cout<<matriz[i][j]<<" ";
        }
        //cout<<" "<<endl;
    }

    //Logica
    int jugador = 0;
    int ultimo = 0;
    do
    {
        int colocarColumna = -1;
        bool columnaTope = true;

        if(ultimo == 1)
        {
            jugador = 2;
        }
        else
        {
            jugador = 1;
        }

        do
        {
            cout<<"Turno del jugador "<<jugador<<" - Elije un numero del 1 al 8: "; cin>>colocarColumna; cout<<endl;
            colocarColumna--;
            columnaTope = columnaATope(matriz,colocarColumna);
        }
        while((colocarColumna < 0 || colocarColumna > 7) || columnaTope);

        int colocarFila = ColocarFichaEn(matriz,colocarColumna);
        matriz[colocarFila][colocarColumna] = jugador;
        ImprimirTablero(matriz);

        //Revisar si hay un 4 en raya
        if(ganador(matriz,colocarFila,colocarColumna,jugador))
        {
            break;
        }

        ultimo = jugador;
        jugador++;
    }
    while(sobranEspaciosLibres(matriz));

    return 0;
}

PD

No tiene nada de inteligencia artificial ni algoritmos minimax, es el código del juego simplemente, muy sencillo y algo feo también :p.

Tamagotchi hecho en Java

Este es el código del tamagotchi (intento de… xD) que nos dejaron hacer como examen final del curso de fundamentos de programación.

Por mil y una razones yo habría preferido hacerlo en PHP aprovechando todo el potencial de la web pero pues quisieron en Java y no se mucho de ese lenguaje =/ pero ya salio, aquí les dejo el código fuente, cualquier duda  hacérmela saber por este medio :).


/*
 * Tamagotchi hecho en Java
 * Noviembre 2010
 * by Alevsk - www.alevsk.com
 */

import java.awt.*;
import java.applet.Applet;
import javax.print.DocFlavor.URL;
import javax.swing.*;
import java.awt.event.*;
import java.util.Random;
import java.io.*;

public class tamagotchi extends Applet implements ActionListener
{
  //Variables del Tamagotchi
  int energia = 100;
  int hambre = 25;
  int felicidad = 25;
  int fuerza = 25;
  int experiencia = 0;
  int nivel = 0;
  int suciedad = 0;
  int puntos = 0;
  float sigNivel;
  String actual = "No esta haciendo nada";
  boolean advirtio = false;

    //Checkbox checkcm, checkcd, checkweb, checkprog, checkcs, checkbd;
    JButton comer, entrenar, dormir, bañar, revivir;
    JTextField energia00, hambre00, felicidad00, fuerza00, experiencia00, nivel00, suciedad00, actual00;
    JLabel energia11, hambre11, felicidad11, fuerza11, experiencia11, nivel11, suciedad11, imagen11, actual11;
    //JTextArea result;
    JPanel acciones,status, imagen, situacion_actual;

    public void init()
    {
      //setName("Demostración del uso de eventos...");
      setSize(800,600);

      //botones
      comer = new JButton("Darle de comer");
      entrenar = new JButton("Entrenarlo");
      dormir = new JButton("Descanzar");
      bañar = new JButton("Bañarlo");
      revivir = new JButton("Revivir");
        revivir.setEnabled(false);

      //Campos de Texto
      energia00 = new JTextField(3);
        energia00.setEditable(false);
        energia00.setText(String.valueOf(energia));

      hambre00 = new JTextField(3);
        hambre00.setEditable(false);
        hambre00.setText(String.valueOf(hambre));

      felicidad00 = new JTextField(3);
        felicidad00.setEditable(false);
        felicidad00.setText(String.valueOf(felicidad));

      fuerza00 = new JTextField(3);
        fuerza00.setEditable(false);
        fuerza00.setText(String.valueOf(fuerza));

      experiencia00 = new JTextField(3);
        experiencia00.setEditable(false);
        experiencia00.setText(String.valueOf(experiencia));

      nivel00 = new JTextField(3);
        nivel00.setEditable(false);
        nivel00.setText(String.valueOf(nivel));

      suciedad00 = new JTextField(3);
        suciedad00.setEditable(false);
        suciedad00.setText(String.valueOf(nivel));

      actual00 = new JTextField(20);
        actual00.setEditable(false);
        actual00.setText(String.valueOf(actual));

      //Lables
      energia11 = new JLabel("Energia: ");
        energia11.setForeground(Color.white);

      hambre11 = new JLabel("Hambre: ");
        hambre11.setForeground(Color.white);

      felicidad11 = new JLabel("Felicidad: ");
        felicidad11.setForeground(Color.white);

      fuerza11 = new JLabel("Fuerza: ");
      fuerza11.setForeground(Color.white);

      experiencia11 = new JLabel("Experiencia: ");
        experiencia11.setForeground(Color.white);

      nivel11 = new JLabel("Nivel: ");
        nivel11.setForeground(Color.white);

      suciedad11 = new JLabel("Suciedad: ");
        suciedad11.setForeground(Color.white);

      actual11 = new JLabel("Situacion actual: ");
        actual11.setForeground(Color.white);

      //Imagen del tamagotchi
      imagen11 = new JLabel();
        ImageIcon im=new ImageIcon("../src/nada.gif");
          imagen11.setIcon(im);
          //con esto cheque donde se ejecutaba el programa para saber asi el path correcto de las imagenes
          System.out.println("Directorio ejecucion = " + System.getProperty("user.dir"));

      //paneles
      acciones = new JPanel();
        acciones.setBackground(Color.black);

      status = new JPanel();
        status.setBackground(Color.BLUE);

      imagen = new JPanel();
      //imagen.setBackground(Color.ORANGE);

      situacion_actual = new JPanel();
      situacion_actual.setBackground(Color.DARK_GRAY);

      //agregar elementos a los paneles
      acciones.add(comer);
      acciones.add(entrenar);
      acciones.add(dormir);
      acciones.add(bañar);
      acciones.add(revivir);

      status.add(energia11);
      status.add(energia00);
      status.add(hambre11);
      status.add(hambre00);
      status.add(fuerza11);
      status.add(fuerza00);
      status.add(felicidad11);
      status.add(felicidad00);
      status.add(experiencia11);
      status.add(experiencia00);
      status.add(nivel11);
      status.add(nivel00);
      status.add(suciedad11);
      status.add(suciedad00);

      imagen.add(imagen11);

      situacion_actual.add(actual11);
      situacion_actual.add(actual00);

      //mostrar los paneles
      add(acciones);
      add(status);
      add(imagen);
      add(situacion_actual);

      comer.addActionListener(this);
      entrenar.addActionListener(this);
      dormir.addActionListener(this);
      bañar.addActionListener(this);
      revivir.addActionListener(this);
    } //init

    public void paint(Graphics g)
    {
      acciones.setSize(620,35);
      acciones.setLocation(50,200);

      situacion_actual.setSize(340,30);
      situacion_actual.setLocation(50,350);

      imagen11.setSize(100,100);
      imagen11.setLocation(0,0);

      status.setSize(700,30);
      status.setLocation(50,500);
    }

     public void actionPerformed(ActionEvent evento)
     {
           // el usuario oprimió Intro en objeto JTextField campoTexto1
           if ( evento.getSource() == comer )
           {
             //aumentar los valores de hambre(comida)
             hambre = hambre + 20 + bonus();
               hambre00.setText(String.valueOf(hambre));
               puntos = 20 + bonus();

               //aumentar los valores de energia
             energia = energia + 20 + (bonus()/2);
               energia00.setText(String.valueOf(energia));

               //aumentar los valores de felicidad
               felicidad = felicidad + 10 + (bonus()/3);
               felicidad00.setText(String.valueOf(felicidad));

               //aumentar los valores de fuerza
             suciedad = suciedad + 10 + (bonus()/2);
               suciedad00.setText(String.valueOf(suciedad));

               //para efectos de debug ver cuales son los valores agregas en la shell
               System.out.println("[Accion] Le diste de comer [Pts.comida+]: "+(20 + bonus())+" [Pts.energia+]: "+(20 + (bonus()/2))+" [Pts.felicidad+]: "+(10 + (bonus()/3))+" [Pts.suciedad+]:"+(20 + (bonus()/2)));
             ImageIcon im = new ImageIcon("../src/comiendo.gif");
             imagen11.setIcon(im);

             actual = "Comiendo";
             actual00.setText(actual);

               JOptionPane.showMessageDialog(null, "Le diste de comer al Tamagotchi y gano "+puntos+" puntos de comida y algo de energia", "Comiendo", JOptionPane.INFORMATION_MESSAGE);
               muere();
               //repaint();

           }
           if ( evento.getSource() == entrenar )
           {
             //generar un entrenamiento
             Random rnd = new Random();
             int ax = 0;

             ax = ((int)(rnd.nextDouble() * 2));

             if( ax == 1)
             {
               ImageIcon im=new ImageIcon("../src/entrenando_corre.gif");
               imagen11.setIcon(im);
               actual = "corriendo";

             }
             else
             {
               ImageIcon im=new ImageIcon("../src/entrenando_pelea.gif");
               imagen11.setIcon(im);
               actual = "peleando con otro tamagotchi";
             }

             //aumentar los valores de experiencia
               experiencia = experiencia + 40 + bonus();
               experiencia00.setText(String.valueOf(experiencia));

               //Restar valores a energia
             energia = energia - 20 - (bonus()/3);
               energia00.setText(String.valueOf(energia));

               //Restar los valores de hambre
             hambre = hambre - 25 - (bonus()/2);
               hambre00.setText(String.valueOf(hambre));

               //aumentar los valores de fuerza
             fuerza = fuerza + 10 + bonus();
               fuerza00.setText(String.valueOf(fuerza));

               //aumentar los valores de fuerza
             suciedad = suciedad + 20 + (bonus()/2);
               suciedad00.setText(String.valueOf(suciedad));

               felicidad = felicidad - 20 - bonus();
               felicidad00.setText(String.valueOf(felicidad));

               //para efectos de debug ver cuales son los valores agregas en la shell
               System.out.println("[Accion] Esta entrenando [Pts.felicidad-]: "+20 + bonus()+"[Pts.experiencia+]: "+(40 + bonus())+" [Pts.energia-]: "+(20 + (bonus()/2))+" [Pts.hambre-]: "+(25 + (bonus()/2))+" [Pts.fuerza+]: "+(10+bonus())+" [Pts.suciedad+]:"+(20 + (bonus()/2)));

               actual00.setText(actual);
               puntos = 40 + bonus();

               JOptionPane.showMessageDialog(null, "El Tamagotchi esta entrenando muy duro ... ha ganado "+puntos+" puntos de exp", "Entrenando", JOptionPane.INFORMATION_MESSAGE);
               subirNivel();

                 if(energia &lt; 20 &amp;&amp; advirtio != true)                   {                    energia00.setBackground(Color.RED);                    JOptionPane.showMessageDialog(null, "Ten cuidado si la energia del tamagotchi llega a 0 morira, dale de comer", "Peligro", JOptionPane.INFORMATION_MESSAGE);                        advirtio = true;                  }                                muere();              //repaint();            }            if ( evento.getSource() == dormir )            {              ImageIcon im=new ImageIcon("../src/descanzando.gif");              imagen11.setIcon(im);              actual = "Esta descanzando";              actual00.setText(actual);                            energia = 100;                energia00.setText(String.valueOf(energia));                                felicidad = felicidad + 30 + bonus();                felicidad00.setText(String.valueOf(felicidad));                                fuerza = fuerza - 40 - (bonus()/3);                fuerza00.setText(String.valueOf(fuerza));                              //para efectos de debug ver cuales son los valores agregas en la shell                System.out.println("[Accion] Tomando un descanzo [Pts.energia+]: "+100+" [Pts.felicidad+]: "+(30 + bonus()+" [Pts.fuerza-]: "+(40 + (bonus()/3))));                JOptionPane.showMessageDialog(null, "El tamagotchi ha descanzado y recobrado todas sus fuerzas, tambien es mas feliz", "Descanzando", JOptionPane.INFORMATION_MESSAGE);              muere();            }            if ( evento.getSource() == bañar )            {              ImageIcon im=new ImageIcon("../src/bañar.gif");              imagen11.setIcon(im);              actual = "Bañandose ... no le gusta";              actual00.setText(actual);                            felicidad = felicidad - 10 - (bonus()/3);              felicidad00.setText(String.valueOf(felicidad));              suciedad = 0;              suciedad00.setText(String.valueOf(suciedad));                           //para efectos de debug ver cuales son los valores agregas en la shell                System.out.println("[Accion] Bañandose [Pts.suciedad-]: "+0+" [Pts.felicidad-]: "+(10 + (bonus()/3)));                               JOptionPane.showMessageDialog(null, "El tamagotchi tomo un baño, aunque no le gusta &gt;.&lt;", "Bañandose", JOptionPane.INFORMATION_MESSAGE);

             muere();
           }
           if ( evento.getSource() == revivir )
           {
             hambre00.setBackground(Color.WHITE);
             energia00.setBackground(Color.WHITE);
             felicidad00.setBackground(Color.WHITE);
             fuerza00.setBackground(Color.WHITE);
             experiencia00.setBackground(Color.WHITE);
             nivel00.setBackground(Color.WHITE);
             suciedad00.setBackground(Color.WHITE);

              energia = 100;
              hambre = 25;
              felicidad = 25;
              fuerza = 25;
              experiencia = 0;
              nivel = 0;
              suciedad = 0;

               energia00.setText(String.valueOf(energia));
                 energia00.setBackground(Color.WHITE);
               hambre00.setText(String.valueOf(hambre));
               felicidad00.setText(String.valueOf(felicidad));
               fuerza00.setText(String.valueOf(fuerza));
               experiencia00.setText(String.valueOf(experiencia));
               nivel00.setText(String.valueOf(nivel));
               suciedad00.setText(String.valueOf(suciedad));

             comer.setEnabled(true);
             entrenar.setEnabled(true);
             dormir.setEnabled(true);
             bañar.setEnabled(true);
             revivir.setEnabled(false);

               ImageIcon im=new ImageIcon("../src/nada.gif");
             imagen11.setIcon(im);

             System.out.println("Reviviendo");
               JOptionPane.showMessageDialog(null, "El tamagotchi ha revivido", "Revivio", JOptionPane.INFORMATION_MESSAGE);

           }
                 //acción
     }
     private void muere()
     {
       if(energia &lt;= 0)
       {
         energia00.setBackground(Color.RED);
             ImageIcon im=new ImageIcon("../src/muere.gif");
             imagen11.setIcon(im);
             actual = "muerto";
             actual00.setText(actual);
             JOptionPane.showMessageDialog(null, "El tamagotchi ha muerto .. no lo cuidaste lo suficientemente bien", "Murio", JOptionPane.INFORMATION_MESSAGE);

             //descativamos todos los botones y activamos el de revivir para que juege de nuevo
             comer.setEnabled(false);
             entrenar.setEnabled(false);
             dormir.setEnabled(false);
             bañar.setEnabled(false);
             revivir.setEnabled(true);
       }
       else
       {
         if(hambre &lt;= 0)
         {
           hambre00.setBackground(Color.RED);
                 ImageIcon im=new ImageIcon("../src/hambre.gif");
               imagen11.setIcon(im);
               actual = "Tiene mucha hambre";
               actual00.setText(actual);
           JOptionPane.showMessageDialog(null, "Estas matando de hambre al tamagotchi, dale de comer rapido", "Sugerencia: Darle de comer", JOptionPane.INFORMATION_MESSAGE);
         }
         else
         {
           hambre00.setBackground(Color.WHITE);
         }
         if(fuerza &lt;= 0)
         {
           fuerza00.setBackground(Color.RED);
                 ImageIcon im=new ImageIcon("../src/debil.gif");
               imagen11.setIcon(im);
               actual = "Esta muy debil";
               actual00.setText(actual);
           JOptionPane.showMessageDialog(null, "El tamagotchi esta muy debil, entrenalo", "Sugerencia: Entrenarlo", JOptionPane.INFORMATION_MESSAGE);
         }
         else
         {
           fuerza00.setBackground(Color.WHITE);
         }
         if(felicidad &lt;=0)          {            felicidad00.setBackground(Color.RED);                  ImageIcon im=new ImageIcon("../src/enojado.gif");                imagen11.setIcon(im);                actual = "Te odia, correee!";                actual00.setText(actual);            JOptionPane.showMessageDialog(null, "Hiciste que el tamagotchi te odie &gt;.&lt;, haz algo para que se ponga feliz", "Sugerencia: Entrenar, Comer o Descanzar", JOptionPane.INFORMATION_MESSAGE);          }          else          {            felicidad00.setBackground(Color.WHITE);          }          if(suciedad &gt;= 100)
         {
           suciedad00.setBackground(Color.RED);
                 ImageIcon im=new ImageIcon("../src/sucio.gif");
               imagen11.setIcon(im);
               actual = "Esta muy sucio";
               actual00.setText(actual);
           JOptionPane.showMessageDialog(null, "Esta muy sucio, dale un baño", "Sugerencia: Darle un baño", JOptionPane.INFORMATION_MESSAGE);
         }
         else
         {
           suciedad00.setBackground(Color.WHITE);
         }
       }
     }
   //Metodo para gestionar los niveles del tamagotchi
      private void subirNivel()
      {
          Random rnd = new Random();
          float expExtra;

          //nivel = Integer.parseInt(nivelField.getText());
          //sigNivel = Integer.parseInt(confianzaField.getText());

          if(nivel == 0)
          {
              if(experiencia &gt; 100)
              {

                  nivel = nivel + 1;
                  nivel00.setText(String.valueOf(nivel));
                  expExtra = ((float)(rnd.nextDouble() * 0.5));
                  sigNivel = (experiencia * 2)+(experiencia * expExtra); //Experiencia requerida para el siguiente nivel
                  JOptionPane.showMessageDialog(null, "Felicidades  ha avanzado al nivel 1\nPara el siguiente nivel necesitaras "+sigNivel+" puntos de exp.", "Felicidades", JOptionPane.INFORMATION_MESSAGE);
                  System.out.println("experiencia*2:"+experiencia*2+" aleatorio: "+(experiencia * expExtra));
                  //confianzaField.setText(String.valueOf(sigNivel));
              }
          }
          else
          {
              if(experiencia &gt;= sigNivel)
              {
                  nivel = Integer.parseInt(nivel00.getText());
                  nivel = nivel + 1;
                  nivel00.setText(String.valueOf(nivel));
                  expExtra = ((float)(rnd.nextDouble() * 0.5));
                  sigNivel = (experiencia * 2)+(experiencia * expExtra); //Experiencia requerida para el siguiente nivel
                  JOptionPane.showMessageDialog(null, "Felicidades  ha avanzado al nivel "+nivel+"\nPara el siguiente nivel necesitaras "+sigNivel+" puntos de exp.", "Felicidades", JOptionPane.INFORMATION_MESSAGE);
                  System.out.println("experiencia*2:"+experiencia*2+" aleatorio: "+(experiencia * expExtra));
                  //confianzaField.setText(String.valueOf(sigNivel));
              }
          }
      }
      public static int bonus()
      {
          int bonus = 0;
          Random rnd = new Random();
          bonus = (int)(rnd.nextDouble() * 30.0);//Asignar el valor aleatorio a la variable
          return bonus;
      }
}

Pueden descargar el codigo fuente junto con los recursos (imágenes) del siguiente link

Ahora lo que sigue es presentar este viernes el otro proyecto desarrollado con Java del que también posteare el código fuente, consiste en una aplicación para reconocer varios gestos del WiiMote y realizar distintas tareas en el SO, lo desarrollamos para una Mac.

salu2

Ejercicios Java: Tabla de pitagoras

Este es el programa que nos dejaron hacer en el tercer parcial, una aplicacion que mostrar la tabla de pitagoras y si el usuario daba un numero mostrar la tabla de ese numero nada mas.

import java.io.*;
import javax.swing.*;

public class tablasMultiplicar {
int[][] tabla = new int[10][10];
int columnas = tabla.length;
int filas = tabla[0].length;

  void llenarMatriz()
  {
    int i = 0, j = 0;
    
    //Llenar en horizontal y vertical
    for(i = 0;i < filas; i++)
    {
      tabla[0][i] = i+1;
      tabla[i][0] = i+1;
    }
    
    for(i = 1;i < filas; i++)
    {
      for(j = 1; j < columnas; j++)
      {
        tabla[i][j] = tabla[0][j] * tabla[i][0];
      }
      
    }
  }
  
  void imprimirMatriz(int n)
  {
    int i = 0, j = 0;
    String matrizArray = "";
    
    //imprimir matriz completa
    if(n == 0)
    {
      for(i = 0;i < filas; i++)
      {
        for(j = 0; j < columnas; j++)
        {
          //Para que la matriz se vea mas bonita
          if(tabla[i][j] >= 10)
          {
            matrizArray = matrizArray+"["+tabla[i][j]+"]   ";
          }
          else
          {
            matrizArray = matrizArray+"["+tabla[i][j]+"  ]   ";
          }
          
        }
        //System.out.print("\n");
        matrizArray = matrizArray+"\n\n";
      }
      JOptionPane.showMessageDialog(null, matrizArray, "Toda la tabla de multiplicar", JOptionPane.INFORMATION_MESSAGE);
    }
    else
    
    //Imprimir solo una tabla de multiplicar
    if(n > 0 && n <= 10)
    {
      for(i = 0;i < filas; i++)
      {
        //matrizArray = matrizArray+"["+tabla[n-1][i]+"]";
        matrizArray = matrizArray+(n)+" * "+(i+1)+"    = "+tabla[n-1][i]+"\n";
      }
      JOptionPane.showMessageDialog(null, matrizArray, "Tabla del numero: "+n, JOptionPane.INFORMATION_MESSAGE);
    }
    else
    {
      JOptionPane.showMessageDialog(null, "Ese numero esta fuera de rango de 1 - 0", "#FAIL", JOptionPane.INFORMATION_MESSAGE);
    }
  }
  

  public static void main(String[] args) throws IOException
  {
    int n;
    String opc = "";
    tablasMultiplicar matriz = new tablasMultiplicar();
    matriz.llenarMatriz();
    
    JOptionPane.showMessageDialog(null, "Programa que muestra la tabla de pitagoras", "Programa Chido", JOptionPane.INFORMATION_MESSAGE);
    
    do
    {
      opc = JOptionPane.showInputDialog("0 = Mostrar toda la tabla\nEscribe un numero 1-10 para consultar esa tabla nada mas\nEscribre SALIR para terminar el programa");
      opc = opc.toUpperCase();
      if(opc.equals("SALIR"))
      {
        JOptionPane.showMessageDialog(null, "Gracias por usar el programa", "Gracias!", JOptionPane.INFORMATION_MESSAGE);
        break;
      }
      
      n = Integer.parseInt(opc);
      matriz.imprimirMatriz(n);
      
    }while(!opc.equals("salir"));    
  }

}

salu2

Fundamentos de la programacion orientada a objetos

Bueno hoy decidí darle una repasada a mis apuntes de Java, me costo encontrarlos :p, como una recapitulación de lo que ya había aprendido y para que no se me olvidara (bien dicen que lo que no se utiliza se olvida, extraño mi guitarra U.U) y para cambiarle un poquito también, ya como que pura programación web me empacho jeje.

Pues ¿que es la programación orientada a objetos?, es una metodología de desarrollo de software en la cual un programa es conceptual-izado como un grupo de objetos que trabajan en conjunto y esos objetos son creados a partir de clases, con esta imagen quedara mas claro, eso espero 😉

Photobucket

Como las muñecas rusas, una clase contiene dentro objetos (que mas tarde son instanciados), los objetos a su vez contienen métodos (son las acciones que realiza el objeto), los métodos tienen atributos, después declaración, luego expresiones y al final operadores … mejor vean bien la imagen 🙂

Entonces para que quede mas claro, una clase es algo que engloba un grupo de objetos que tienen algo en común, por ejemplo “Caballo” hay diferentes tipos de caballos (Albino, Andaluz, Alter Real, Azteca, Dales) pero al final de cuentas todos son caballos, entonces podríamos decir que hay una CLASE Caballo y que las diferentes razas son sus objetos 🙂

Ahora veremos mas afondo los objetos, ya habíamos dicho que los objetos tienen atributos (sus características que los definen individualmente) y métodos (las acciones que realizan). Imaginemos que tenemos un OBJETO Jugador de Rugby que pertenece a una CLASE … bueno vean mejor la imagen.

Photobucket

Sus atributos (características) serian: peso, altura, edad, velocidad y sus métodos (las acciones que puede realizar) serian Patear, interceptar, correr, placar, lanzar, driblar, etc.

Resumiendo una clase puede tener tantos objetos como queramos, pero todos deben de tener algo en común, lean el ejemplo de los caballos mas arriba, y cada objetos tiene atributos y métodos, existen 2 tipos de cada cosa.

  • Atributos Instancia: Solo los tiene ese objeto en particular (una caracteristicas que solo tiene cierta raza de caballo)
  • Atributos Clase: los comparten todos los objetos (una caracteristica compartida por todas las razas de caballos)
  • Métodos Instancia: La acción que solo realiza ese objeto en particular (Una acción que solo puede realizar un cierto jugador del equipo de rugby como ser el capitán por ejemplo, solo hay un capitán)
  • Métodos Clase: Una acción que es compartida por todas las clases (una acción que que puede realizar cualquier jugador(Objeto) del equipo como pasar el balon
  • )

Veamos algo de practica y no solo teoría 😉
Hace tiempo hice un ejemplo del uso de POO básica acerca de unos robots, utilize para eso Netbeans.

Primero cree 2 clases: AplicacionRobot y RobotDante

codigo RobotDante.java

package robots;
class RobotDante
{
    //variables instancia, son los 3 atributos del robot
    String estatus;
    int velocidad;
    float temperatura;

    //crear primer comportamiento, primer metodo de instancia
    void comprobarTemperatura()
    {
        if(temperatura > 660)
        {
            estatus = "volviendo a casa";
            velocidad = 5;
        }
    }

    //crear segundo comportamiento, segundo método de instancia
    void mostrarAtributos()
    {
        System.out.println("Estatus: "+estatus);
        System.out.println("Velocidad: "+velocidad);
        System.out.println("Temperatura: "+temperatura);
    }
}

Vemos como creamos la clase RobotDante con todo y sus atributos, las variables estatus, velocidad y temperatura y también creamos 2 métodos (las acciones que puede realizar el objetos, en este caso el robot :)), el primer método es un control de temperatura (si se supone que es un robot de la nasa que explora volcanes x’D) y el segundo muestra sus atributos actuales (características del robot), después …

package robots;
class AplicacionRobot
{
    public static void main(String[] args)
    {
       //Instanciar un nuevo objeto de la clase RobotDante, crear un nuevo robot :p
       RobotDante dante = new RobotDante();

       //darle valores a los atributos del robot(el objeto)
       dante.estatus = "Explorando ...";
       dante.velocidad = 2;
       dante.temperatura = 510;

       //llamar un metodo
       dante.mostrarAtributos();

       System.out.println("Incrementando la velocidad a 3");
       dante.velocidad = 3;

       //llamar un metodo
       dante.mostrarAtributos();

       System.out.println("Se detecto un aumento de temperatura a 670!");
       dante.temperatura = 670;

       //llamar un metodo
       dante.mostrarAtributos();

       System.out.println("Comprobando temperatura una vez mas ...");
       
       //llamar un metodo
       dante.comprobarTemperatura();
       dante.mostrarAtributos();
    }
}

Como java es un lenguaje totalmente enfocado a objetos siempre debemos comenzar con una clase, pero esta en particular tiene el método main que es por donde comenzara a ejecutarse el programa y a partir de ahí instanciar las demás clases (instanciar se escucha bonito pero no es mas que crear los objetos), creo que el código esta bien explicado, de todas maneras si sobran algunas dudas, son bienvenidas en los comentarios, así como sugerencias y criticas constructivas 😀

descargar

Y por ultimo quiero hacerle una felicitación al profesor Jesús Conde @0utkast en internet por que prácticamente todo lo que se de internet lo he estado aprendiendo a travez de sus métodos de enseñanza y de sus videtutoriales, enseñando a la gente a ser autodidacta 😉

Salu2

Un poco de Java

Bueno termine mi trabajo por hoy y quise ver una película, entonces un amigo de la escuela me hablo que si podía checar un código en java, hacia mucho que no tocaba ese lenguaje como un mes jeje, pero le dije que sip, y al ultimo termine yo también empapándome de java, es código básico pero sirve para estar al tiro jeje, aquí les dejo como quedo al ultimo.

Lo que hace es encontrar el numero de triples pitagóricos en la serie del 1 al 500, se puede modificar mas el programa para que el user ponga el rango pero así lo quise dejar ^^

Primero que nada que es la triple pitagorica, bueno se acuerdan del teorema de pitagoras, pues una triple pitagorica es la equivalencia de a2 + b2 = c2 por ejemplo: 42 + 32 = 52

Sigue leyendo