miércoles, 6 de abril de 2016

Acuario con varios peces de un mismo tipo de que se mueveny burbujas



//se invoca al perosnaje/objeto Burbuja con las propiedades x... e y... y color... y velocidad
//En total aparecerán 8 clones del personaje burbuja


Burbuja burbujas1 = new Burbuja(int(random(480)), int(random(400)), int(random(255)), int(random(2,5)));
Burbuja burbujas2 = new Burbuja(int(random(480)),  int(random(400)), int(random(255)), int(random(2,5)));
Burbuja burbujas3 = new Burbuja(int(random(480)),  int(random(400)), int(random(255)), int(random(2,5)));
Burbuja burbujas4 = new Burbuja(int(random(480)),  int(random(400)), int(random(255)), int(random(2,5)));
Burbuja burbujas5 = new Burbuja(int(random(480)),  int(random(400)), int(random(255)), int(random(2,5)));
Burbuja burbujas6 = new Burbuja(int(random(480)),  int(random(400)), int(random(255)), int(random(2,5)));
Burbuja burbujas7 = new Burbuja(int(random(480)),  int(random(400)), int(random(255)), int(random(2,5)));
Burbuja burbujas8 = new Burbuja(int(random(480)),  int(random(400)), int(random(255)), int(random(2,5)));

 //creamos objeto


 PImage fondo;
 //creamos objeto


 PImage pescado1; //primer disfráz
 PImage pescado2; //segundo disfráz
//Aquí se deberán instanciar todos los clones del objeto pez que se utilizarán


fish1 pez1 = new fish1(int(random(480)), int(random(400)), int(random(1,7)));
fish1 pez2 = new fish1(int(random(480)), int(random(400)), int(random(1,7)));
fish1 pez3 = new fish1(int(random(480)), int(random(400)), int(random(1,7)));
fish1 pez4 = new fish1(int(random(480)), int(random(400)), int(random(1,7)));
fish1 pez5 = new fish1(int(random(480)), int(random(400)), int(random(1,7)));

void setup() {
    size(480, 360);
      //cargamos imagen fondo


        fondo = loadImage("imagenes/8.png");
      //y cargamos imagenes disfraces del personaje


      pescado1 = loadImage("imagenes/1.png");
      pescado2 = loadImage("imagenes/2.png");
      //La carga de imágenes es un proceso lentísimo por eso conviene hacerlo una única vez, y el lugar más indicado es el setup()


}

void draw(){
        //la mostramos, en este caso a partir del punto 1,1
        //el ancho de la imagen es el mismo de la ventana,
        //el alto de la imagen es el mismo de la ventana


        image(fondo,1, 1, width, height);
        //Mostramos a los clones del personaje en la ventana 

              pez1.mostrar();
        pez2.mostrar();
        pez3.mostrar();
        pez4.mostrar();
        pez5.mostrar();
       

        //Mostramos a los clones del personaje en la ventana
               burbujas1.mostrar();
        burbujas2.mostrar();
        burbujas3.mostrar();
        burbujas4.mostrar();
        burbujas5.mostrar();
        burbujas6.mostrar();
        burbujas7.mostrar();
        burbujas8.mostrar();
}

class fish1 {//programa del personaje
   //variables con las posiciones x e y del personaje


   float x;
   float y;

   int velocidad =5;  //contiene la velocidad del personaje

 
   int cambio = 0;     //se utiliza para saber que acaba de producirse un cambio

 
   int direccion = 0; //contiene si el movimiento es hacia izquierdas o derechas

 
   float scala = 0.5; //afecta al tamaño del disfráz

   void setup(){//método no utilizado que se suele poner para opciones de configuración, Al estar vacío, se puede quitar sin consecuencias

 
   }

   fish1(float pez_x, float pez_y, int pez_v) {  //Método constructor

 
       x = pez_x;
       y = pez_y;
       velocidad = pez_v;
    }

   void mostrar(){

        if (x > width) {
            //Sí el pez se sale de la ventana por el lado derecho
            //ponemos 1 en dirección para saber que a partir de ahora se tiene que mover hacia la izquierda


            direccion = 1;
        }

        if (x < -100) {
            //Sí el pez se sale de la ventana por el lado izquierdo
            //ponemos 0 en dirección para saber que a partir de ahora se tiene que mover hacia la izquierda

 
           direccion = 0;
        }
 

        if (direccion == 0){
            if (cambio == 0){

                //si el pez se mueve hacia la derecha y si hay que hacer un cambio de personaje
                //colocamos el personaje a una altura aleatoria 


                 y = random(100,height);

                //cambiamos la alarma/
indicador de cambio para no volver a entrar a este condicional más mientras dirección siga siendo 0                 cambio = 1;

                //cambiamos el tamaño del disfráz                 scala = 0.5 + random(0.5);
            }

            //movemos el disfraz hacia su nueva posición            x =  x+velocidad;

            image(pescado1,x, y, 100*scala, 100*scala);
        }else{
             if (cambio == 1){
                  //si el pez se mueve hacia la derecha y si hay que hacer un cambio de movimiento
                  //colocamos el personaje a una altura aleatoria 


                  y = random(100,height);
                  //cambiamos la alarma/indicador de cambio
para no volver a entrar a este condicional más mientras dirección siga siendo 1 
                
                 cambio = 0;
                  //cambiamos el tamaño del disfráz


                  scala = 0.5 + random(0.5);
            }
        x -= velocidad;
           image(pescado2,x, y, 100*scala, 100*scala);
        }
    }
}class Burbuja {
    float x1;
    float y1;
    color c;
    int direccion = 0;
    int n =  2; // es el factor velocidad de subida de la burbuja

 
    float tam =  10; //En tamaño se guardará el valor actual del tamaño de la burbuja
                   //el primer valor del tamaño será 10;


      Burbuja(float burbuja_x, float burbuja_y, color burbuja_c, int velocidad_c) {
        //Creamos un constructor con el mismo nombre de la clase y le pasamos sus parámetros/propiedades
       //esto hace que las propiedades (x, y, c, velocidad) tomen sus valores para el personaje nuevo que se va a invocar

 
       x1 = burbuja_x;
       y1 = burbuja_y;
       c = burbuja_c;
       n = velocidad_c;
    }

   void mostrar(){ //método que muestra la burbuja

 
      fill(c);   //el color tomará el valor de la propiedad c

 
      stroke(0, 0, 0);
      tam = (tam *1.008); // esto es para que la burbuja cada vez sea un poco más grande

 
      y1 = y1-n;  //cada vez que se dibuja llamado desde el bloque draw, y tomará un valor diferente
                //que cada vez será más pequeño decrementándose en el valor de n

 
      if (y1 < 0) { //si y es menor que cero

 
         y1 = height+n-random(200);   //hay que hacer qye y tomtam = 10; e el valor del alto de la ventana
                         //para que la Burbuja vuelva a comenzar su reccorrido hacia arriba

 
          tam = random(10);//si estamos en la parte inferior de la ventana hay que poner el nuevo tamaño de la burbuja

 
     x1 = random(480);
    
    }              
    
       ellipse(x1, y1, int(tam), int(tam));// los valores x e y tomarán el valor que se haya cargado en las propiedades x e y
                                             // El tamño será el valor entero del tam(que es un número con decimales) 

 
   }
}

//los comados en el bloque de configuración setup() se ejecutan una sóla vez.
//los comados en el bloque draw() se repiten durante todo el programa 




(C) Dpto Tecnología
IES Antonio Machado
Alcalá de Henares
Abril 2016