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