Abstracción: pelota que rebota
April 15, 2008 – 10:45 pmEn este ejercicio vemos como adaptar el ejercicio de la pelota que rebota a una verison OO.
Cuando trabajando con objetos, en Processing es conveniente dedicar a cada clase un tab nuevo. Para hacer esto, basta con cliquear en el botón de tabs situado a la derecha de los tabs:
Después seleccionamos la opción New Tab y le daremos el nombre de la clase que vamos a crear (en nuestro caso este sera Pelota).
El contenido de esta clase sera el siguiente:
View CodeJAVA | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | class Pelota{ float posY; float velY; float gravY; int radio; // Este metodo consiste en la creacion de nuestro objeto Pelota(){ this.posY = 0; this.velY = 0; this.gravY = 0.8; this.radio = 5; } // Este metodo consiste en el comportamiento de nuestro objeto void actualizate(){ this.velY += this.gravY; this.posY += this.velY; // Esta vez queremos que rebote cuando // el borde de la pelota se pase del suelo if ((this.posY >= height - this.radio)){ // Para evitar que la pelota se enganche en el suelo // cuando esta se pasa del suelo // la ponemos dentro de la escena de nuevo this.posY = height - this.radio; // Cada vez que la pelota rebota // vuelve solo con un 90% de su velocidad this.velY = -this.velY*0.9; } else if(this.posY <= 0 + this.radio){ this.posY = 0 + this.radio; this.velY = -this.velY*0.9; } } // Este metodo consiste en la visualizacion de nuestro objeto void dibujate(){ ellipse(width/2, this.posY, this.radio*2, this.radio*2); } } |
Vemos que hemos hecho uso de la variable this. Esta variable se refiere a la instancia misma. Asà cuando decimos this.posY nos referimos a la variable miembro posY de la instancia de la cual llamamos actualizate() y dibujate(), y no de todas las otras instancias que podamos haber creado.
Seguidamente editaremos el setup() y draw() de nuestro sketch de la siguiente forma:
View CodeJAVA | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Pelota miPelota; void setup(){ size(100,100); stroke(0); fill(0); smooth(); miPelota = new Pelota(); } void draw(){ miPelota.actualizate(); background(255); miPelota.dibujate(); } |