martes, 16 de junio de 2015

TP 3


TP 3


0) Realizar un programa que permita dibujar (como con un lápiz) solo de la mitad derecha de la pantalla.



1) Realizar un programa que permita dibujar (como con un lápiz) solo una zona circular de radio 100 que parte desde el centro de la pantalla.


2) Realizar un programa que permita dibujar (como con un lápiz) solo una zona cuadrada de lado 100, centrada en la pantalla. Al presionar una tecla, el lápiz se tiene que convertir en una goma de borrar que me permita eliminar de la pantalla lo dibujado a medida que movemos el mouse.



3) Realizar un programa que permita dibujar (como con un lápiz) con color ROJO. Al presionar la tecla "A" que empiece a pintar en color AZUL. Al presionar la tecla "V" que comience a pintar en color VERDE. Y al presionar "R" que vuelva a pintar en color ROJO



4) Realizar un programa que permita dibujar (como con un lápiz), pero al presionar una zona cuadrada ubicada en la esquina inferior derecha de 20 X 20, se borre toda la pantalla


.

5) Cree un programa que me permita dibujar una elipse que siga la posición del mouse. Al hacer click debe cambiar de color rojo al azul, y viceversa. De esta forma la elipse alternará entre rojo y azul como tantos click haga.



6) Modificar el ejercicio anterior para que solo alterne cuando se encuentra dentro de la zona cuadrada ubicada en el centro de la pantalla. La zona tiene un ancho y alto de 100 pixels




7) Modificar el ejercicio 5 para que el cambio se produzca cuando cruzan las 2 diagonales principales de la pantalla. En una zona cambiará de ROJO a AZUL, en otra zona de VERDE a AMARILLO, en otra zona de Cuadrado a Triángulo, y en la última solo dibujara como un lápiz.



8) Crear un programa que me permita dibujar una elipse en pantalla que se mueva desde la derecha hacia la izquierda en un principio. Al llegar al borde de la pantalla, debe cambiar el sentido desde la izquierda hacia la derecha. Lo mismo debe suceder con el margen izquierdo.



9) Basándonos en el ejercicio 8), debemos modificar el programa para que al hacer click se modifique el sentido de los objetos de forma que se empiecen a mover de abajo hacia arriba, y de forma inversa cuando lleguen a los bordes.



10) Modificar el programa del ejercicio 8), para que al hacer click sobre la elipse la misma se detenga, y retorne a su movimiento anterior cuando se haga click sobre la elipse nuevamente.



11)Realizar un programa que permita realizar la acción de un Boton. El Botón será implementado en un programa que me permita arrancar el movimiento de una bola y detenerlo. En el mismo debe haber 2 botones, uno para arrancar y otro para detener la bola.



12) Dados 2 botones en la pantalla (implementados por el alumno) y una elipse ubicada en el centro moviéndose hacia la derecha; al ser presionado 1 de ellos, hará que el sentido de la elipse sea hacia la izquierda; al presionar el otro botón, hará que el sentido sea hacia la derecha. Si la elipse toca alguno de los 2 bordes, debe aparecer un texto diciendo "PERDISTE!"



13) Modificar el ejercicio 12) para que también se controle el movimiento horizontal, aplicando la misma lógica en los bordes.



14) Realizar un programa con la misma base del ejercicio 12, pero sin botones. En la pantalla debe aparecer un contador que va a marcar las veces que hicimos click en la pantalla. La elipse va a comenzar moviéndose en una dirección aleatoria (Arriba,Abajo,Derecha, Izquierda). Al hacer click en la elipse, esta cambiará de dirección, pero aleatoria también. El fin es ver cuantos clicks se pueden hacer antes de que la elipse toque el borde.



15) Modificar el ejercicio 14) para que cada 10 clicks aumente la velocidad de la elipse en 5 pixels.



16) Realizar un programa que dibuje una Bola que pueda ir rebotando por las paredes de la pantalla.



17) Realizar un objeto circular que aumente y disminuya su diámetro automáticamente entre un valor mínimo y uno máximo. El objeto debe moverse junto con la posición del mouse y deberá tener 20 pixels de diámetro mínimo y 200 de máximo.

E

18) Realizar un programa que permita el movimiento de un rectángulo que, comenzando en el extremo superior izquierdo, se mueva hasta el extremo derecho, luego descienda hasta la esquina inferior derecha, de allí se mueva hasta la esquina inferior izquierda y después ascienda hasta la posición de salida. Al llegar a cada esquina deberá cambiar de color.



19) Realizar un programa que me permita hacer 3 clicks en la pantalla. El primero debe permitir que se dibuje una línea vertical en la posición X del mouse en la pantalla, el segundo, otra línea vertical en la pantalla dada por la posición en X del mouse. El tercer click me va a cambiar de color el área comprendida entre ambas zonas, teniendo que hacer click en la zona entre ambas líneas.

martes, 26 de mayo de 2015

TP2

TP 2

Ejercicios de Interactividad:

1) Realizar un programa que permita mover una figura circular de color negro de la siguiente forma:
- Al mover el mouse hacia arriba, la figura debe moverse hacia abajo
- Al mover el mouse hacia abajo, la figura debe moverse hacia arriba
- Al hacer click con el mouse, la figura debe pasar a ser azul
– Al presionar una tecla, la figura debe pasar a ser negro

void setup(){
    size(400,400);
    background(255);
    }
void draw(){
        ellipse(200,height-mouseY,50,50);
    }
void mousePressed(){
    fill(0,0,255);
    ellipse(200,height-mouseY,50,50);
}
void keyPressed(){
    fill(O);
   ellipse(200,height-mouseY,50,50);
}


2) Realizar un programa que me permita dibujar en la pantalla, con trazo negro.

void setup(){
    size(400,400);
    background(255);
    }
void draw(){
    fill(0);
    line(pmouseX,pmouseY,mouseX,mouseY);
    }



3) Tomando el Ejercicio 2), a medida que se va dibujando, el programa me debe permitir cambiar el color de la figura a Azul a medida que presiono una tecla, y aumentar el tamaño del mismo cuando presione el mouse.

  float m=2;
void setup(){
    size(400,400);
    background(255);
       }
void draw(){
    strokeWeight(m);
    line(pmouseX,pmouseY,mouseX,mouseY);
 }
void mousePressed(){
m++
    }
void keyPressed(){
    stroke(0,0,255);
    line(pmouseX,pmouseY,mouseX,mouseY);
}


4) Realizar un programa que me permita dibujar una elipse centrada en la pantalla, luego, a medida que muevo el mouse en forma horizontal me permita modificar el ancho, y si lo muevo en forma vertical, modificar el alto.

void setup(){
    size(400,400);
    }
void draw(){
    ellipse(200,200,mouseX,mouseY);
}


5) Para qué sirve la función random()? Cuales son las diferencias entre random(50) y random(-50,50)

La funcion random() se utiliza para obtener un valor alazar entre un rango anteriormente establecido.
La diferencia entre el primero y el segundo, es que uno da un valor entre 0 y 50 y el otro entre -50 y 50.

6) Realizar un programa que se encargue de ubicar 100 cuadrados en posiciones aleatorias de la pantalla, con dimensiones también aleatorias , siendo el tamaño mínimo 50 y el máximo 200.

void setup(){
    size (400,400);
    }
void draw(){    rect(random(50,200),random(50,200),random(50,200),random(50,200));
}

  
7) Realizar un programa que me permita ir moviendo el mouse en la pantalla, y a medida que voy moviendo el mismo, se va desplazando una elipse. Otra cosa es que debe haber 4 líneas que salen de las esquinas y se unen al centro de la elipse, se manera que las 5 figuras se mueven juntas.

void setup(){
    size(400,400);
    background(255);
}
void draw(){
    strokeWeight(-3);
    line(0,0,mouseX,mouseY);
    line(0,400,mouseX,mouseY);
    line(400,400,mouseX,mouseY);
    line(400,0,mouseX,mouseY);
    fill(17,130,55);
    ellipse(mouseX,mouseY,80,80);
}


8) Realizar un programa que me permita diagramar líneas ubicadas de forma vertical en la pantalla, pero que las mismas se vayan dibujando de acuerdo a la posición X del mouse. Aparte, el color de las mismas debe de ser aleatorio cada vez que se dibujen.

void setup(){
    size(400,400);
 }
void draw(){
    strokeWeight(4);
    stroke(random(255),random(255),random(255));
    line(mouseX,0,mouseX,mouseY);
 }


9) Basándonos en la posición del mouse en la pantalla, escribir un programa que permita escribir líneas en la pantalla que partan desde el punto (0,0) y (400,400), hacia la posición del puntero del mouse. La pantalla debe de ser de 400 X 400. Los colores de las líneas que parten desde el punto (0,0) deben poseer la tonalidad verde y el mismo debe variar de acuerdo a la distancia del mouse al punto mencionado. Lo mismo para las líneas que parten desde (400,400) pero con tonalidades azules.

void setup(){
    size(400,400);
 }
    void draw(){
        strokeWeight(3);
        float a=dist(0, 0, mouseX,mouseY);
        float b=dist(400, 400,mouseX,mouseY);
        stroke(0,a,0);
        line(0,0,mouseX, mouseY);
        stroke(0,0,b);
        line(400,400, mouseX,mouseY);
   }


10) Realizar un programa dibuje como si fuese un lápiz, y borre cuando se presiona el botón del mouse, permitiéndome volver a escribir cuando presiono alguna tecla.

void setup(){
    size(400,400);
    background(255);
       }
void draw(){
    line(pmouseX,pmouseY,mouseX,mouseY);
 }
 void keyPressed(){
    loop();
  }
void mousePressed(){
background(255);
noLoop()
    }


11) Para que se utiliza la función noLoop()? Y la función loop()?

noLoop() frena los frames, loop() permiten que los Frames continuen.

12) Realizar un programa que me permita ir generando elipses de ancho y alto aleatorio, pero que las mismas se ubiquen en las coordenadas opuestas a la posición del mouse. De esta forma si el mouse se encuentra en (100,100), se deberá generar una elipse en (300,300) (Suponiendo una pantalla de 400 X 400). Si se encuentra en (150,200), deberá estar en (250,200). Al presionar una tecla, se deberá detener la interacción con la pantalla, de manera que no se generen más elipses, y si hago click en la pantalla, me debe permitir volver a interactuar.

void setup(){
    size(400,400);}
void draw(){
    background(255);
    fill(0);
    ellipse(width-mouseX,height-mouseY,random(200),random(200));
}
 void mousePressed(){
    loop();
}
void keyPressed(){
background(255);
noLoop()
}


13) Realizar un programa que me permita mientras mantengo pulsado el botón del mouse, generar puntos en posiciones aleatorias en una distancia máxima desde la posición del mouse, de 100 pixels.

void setup(){
    size(400,400);
    background(255);
}
void draw(){ 
    fill(random(255),0,random(255));
}
 void keyPressed(){
     ellipse(mouseX-random(-100,100),mouseY-random(-100,100),6,6);
}


14) Para que se utiliza la función round()?

La funcion round() sirve para calcular el valor entero mas cercano dentro de los Floats.

Ejercicios de Variables:

1) Realizar un programa que dibuje una circunferencia de radio 50 en la esquina superior izquierda de la pantalla. Luego, por cada fotograma que se dibuje en la pantalla, la circunferencia debe ir avanzando en diagonal a la esquina inferior derecha.

int a;
void setup(){
    size(400,400);
    background(255);
    a = 1;
    }
void draw(){
        background(255);
    ellipse(a,a,50,50);
    a++
}


2) Realizar el mismo ejercicio que el punto 1), pero con otra circunferencia que se vaya desplazando desde la esquina superior derecha, hacia la esquina inferior izquierda. Ambas circunferencias deberían cruzarse en el medio de la pantalla.

int a;
int b;
void setup(){
    size(400,400);
    a = 1;
    b = 400;
}
void draw(){
    background(255);
    ellipse(a,a,50,50);
    ellipse(b,a,50,50);
    a++
    b--
}


3) Realizar un ejercicio que permita dibujar una fila de circunferencias que toquen sus bordes, de radio 50. El programa debe ser realizado con variables, de forma que solo exista una sola función ellipse

int a;
void setup(){
    size(400,400);
    background(255);
    a = 25;
    }
void draw(){
    fill(255,30,100);
    ellipse(a,25,50,50);
    a = a + 50;
    }



 4) Realizar un programa que permita dibujar un punto centrado en la pantalla, y que este vaya creciendo con forma de cuadrado.

int a;
void setup(){
    size(400,400);
    background(255);
    a = 1;
    noStroke();
    }
void draw(){
    rectMode(CENTER);
    fill(253,255,50);
    rect(200,200,a,a);
    a++
    }


5) Para qué sirve la función println()?

Sirve ayudar para buscar la "data" que el programa esta produciendo en ese momento.
6) Realizar un programa que arranque con 2 cuadrados en las esquinas superiores, uno en la derecha y otro en la izquierda. Luego 2 círculos en las esquinas inferiores, uno en la derecha y otro en la izquierda. Cada una de estas figuras debe ir incrementando su posición en 1, y cada una en un sentido, así, el cuadrado de la esquina superior izquierda debe ir avanzando hacia la derecha, el de la superior derecha, hacia abajo; el círculo de la inferior derecha hacia la izquierda y el círculo de la inferior izquierda hacia arriba.

int a;
int b;
void setup(){
    size(400,400);
    noStroke;
    a = 0
    b = 375
    }
vooid draw(){
    background(255);
    fill(200,50,70);
    rect(a,0,50,50);
    rect(350,a,50,50);
    ellipse(b,375,50,50);
    ellipse(25,b,50,50);
    a++
    b--
    }


7) Al ejercicio del punto 6), agregar la posibilidad de que el color de relleno de cada figura vaya cambiando. Los círculos en escalas de azules y los cuadrados en escalas de verdes. (De los mas claros a los mas oscuros)

int a;
int b;
int c;
void setup(){
    size(400,400);
    noStroke;
    a = 0
    b = 375
    }
vooid draw(){ 
    c =  map(a,25,375,255,0);
    background(255);
    fill(0,0,c);
    rect(a,0,50,50);
    rect(350,a,50,50);
    fill(0,c,0);
    ellipse(b,375,50,50);
    ellipse(25,b,50,50);
    a++
    b--
    c--
    }


 8) Al ejercicio 7 agregarle la opción de que cada figura vaya desapareciendo a medida que se encuentra avanzando, llegando a desaparecer completamente al llegar a la esquina opuesta.

int a;
int b;
int c;
void setup(){
    size(400,400);
    nostroke
    a = 0
    b = 375
    }
vooid draw(){ 
    c =  map(a,25,375,255,0);
    noStroke();
    background(255);
    fill(0,c,0,c);
    rect(a,0,50,50);
    rect(350,a,50,50);
    fill(0,0,c,c);
    ellipse(b,375,50,50);
    ellipse(25,b,50,50);
    a++
    b--
    c--
    }


9) Identifique el funcionamiento de la función map(). Defina los parámetros que posee.

Map() se utiliza para transformar una escala de valores en otra escala nueva.
Utiliza cinco parámetros: map(x,x1,x2,y1,y2);

10) Realice un programa que permita dadas 2 figuras circulares que avanzan cruzando las diagonales principales de la pantalla, cambien los colores de acuerdo a la distancia que haya entre ellos. Las figuras deben iniciar su recorrido en las esquinas superiores derecha e izquierda.

int a;
int b;
int c;
void setup(){
    size(400,400);
    a = 1;
    b = 400;
    c = dist(a,a,b,a)
    }
void draw(){
    c = dist(a,a,b,a)
    background(255);
    fill(0,0,c);
    ellipse(a,a,50,50);
    fill(0,c,0);
    ellipse(b,a,50,50);
    a++
    b--
    }


11) Realice un programa que permita dadas 2 figuras circulares que avanzan cruzando las diagonales principales de la pantalla, cambien su tamaño de acuerdo a la distancia que haya entre ellos. Las figuras deben iniciar su recorrido en las esquinas superiores derecha e izquierda. Al iniciar el recorrido el tamaño debe ser de 0 para ambas figuras y al cruzarse en el centro debe tener el tamaño máximo de que ocupen en la pantalla, debiendo volver a achicarse cuando lleguen a los extremos opuestos.

float posicion = 25;
void setup(){
size(400,400);
}
void draw(){
  background(255);
  fill(255,150,46);
  posicion++;
  float distancia = dist(posicion,posicion,width-posicion,posicion);
  float tamano=map(distancia,375,0,0,400);
 ellipse(posicion,posicion,tamano,tamano);
  ellipse(width-posicion,posicion,tamano,tamano);
  }


12) Identifique para qué sirve la función pow().

Sirve para multiplicar numeros por si mismos (o sus reciprocos) en largas cuentas.