Cindy - L

By Cindy Chi
/* CINDY CHI NOV. 19, 2008 DMA 28: INTERACTIVITY EXCERCISE L For processing monsters. http://rmx.cz/monsters/ Click somewhere to produce a piece of food and the monster will come and eat it! */ Monster m1; float monsterX = 200.0; float monsterY = 200.0; float distX; float distY; boolean drawn = false; float circleX = 0.0; float circleY = 0.0; float easing = 0.07; float startMillis; boolean smile = false; void setup() { size(400, 400); smooth(); background(0); m1 = new Monster(); } void draw() { background(0); m1.assign(monsterX, monsterY, 15, 33); m1.display(); if(drawn == true) { stroke(255); strokeWeight(5); ellipse(circleX, circleY, 20, 20); monsterX += (circleX - monsterX) * easing; monsterY += ((circleY - 15) - monsterY) * easing; if(circleX >= monsterX - 10 && circleX <= monsterX + 10 && circleY >= monsterY + 5 && circleY <= monsterY + 35) { drawn = false; startMillis = millis(); smile = true; } } } class Monster { float inc = 0.0; //for tal float currentTime = millis(); float x; float y; int tents; float eyes; void assign(float xpos, float ypos, int tentacles, float eyeSpace) { x = xpos; y = ypos; tents = tentacles; eyes = eyeSpace; } void display() { currentTime = millis(); stroke(255); inc += 0.01; //increases speed of tail bending float angle = sin(inc) / 10.0 + sin(inc * 1.2) / 20.0; pushMatrix(); translate(x, y); tail(0, 0, tents, angle * 1.01); rotate(radians(5)); tail(0, 0, tents + 5, angle * .5); rotate(radians(5)); tail(0, 0, tents + 3, angle * 1.01); rotate(radians(5)); tail(0, 0, tents - 2, angle * 1.04); rotate(radians(5)); tail(0, 0, tents, angle * .3); rotate(radians(5)); tail(0, 0, tents, angle * 1.05); rotate(radians(5)); tail(0, 0, tents + 2, angle * .5); rotate(radians(5)); tail(0, 0, tents - 3, angle * 1.03); rotate(radians(5)); tail(0, 0, tents + 1, angle * .7); rotate(radians(5)); tail(0, 0, tents + 4, angle * .3); rotate(radians(5)); tail(0, 0, tents, angle * .3); rotate(radians(5)); tail(0, 0, tents + 2, angle * 1.03); rotate(radians(5)); tail(0, 0, tents - 3, angle * .5); rotate(radians(5)); tail(0, 0, tents + 3, angle * 1.02); rotate(radians(5)); tail(0, 0, tents - 1, angle * 1.01); rotate(radians(5)); tail(0, 0, tents, angle * .4); rotate(radians(5)); tail(0, 0, tents + 5, angle * 1.05); rotate(radians(5)); tail(0, 0, tents + 3, angle * .6); rotate(radians(5)); tail(0, 0, tents - 2, angle * 1.03); rotate(radians(5)); tail(0, 0, tents, angle * .9); rotate(radians(5)); tail(0, 0, tents + 2, angle * .3); rotate(radians(5)); tail(0, 0, tents + 1, angle * 1.03); rotate(radians(5)); tail(0, 0, tents - 2, angle * 1.05); rotate(radians(5)); tail(0, 0, tents + 4, angle * .5); rotate(radians(5)); tail(0, 0, tents - 3, angle * 1.04); rotate(radians(5)); tail(0, 0, tents + 5, angle * .9); rotate(radians(5)); tail(0, 0, tents + 2, angle * .6); rotate(radians(5)); tail(0, 0, tents - 2, angle * 1.02); rotate(radians(5)); tail(0, 0, tents, angle * 1.03); rotate(radians(5)); tail(0, 0, tents + 4, angle * .3); rotate(radians(5)); tail(0, 0, tents, angle * .3); rotate(radians(5)); tail(0, 0, tents + 2, angle * .5); rotate(radians(5)); tail(0, 0, tents - 1, angle * 1.03); rotate(radians(5)); tail(0, 0, tents + 3, angle * 1.02); rotate(radians(5)); tail(0, 0, tents - 1, angle * 1.03); rotate(radians(5)); tail(0, 0, tents + 1, angle * .5); rotate(radians(5)); tail(0, 0, tents, angle * .9); rotate(radians(5)); tail(0, 0, tents - 3, angle * .2); rotate(radians(5)); tail(0, 0, tents + 2, angle * 1.02); rotate(radians(5)); tail(0, 0, tents + 3, angle * .4); rotate(radians(5)); tail(0, 0, tents + 5, angle * .3); rotate(radians(5)); tail(0, 0, tents, angle * 1.03); rotate(radians(5)); tail(0, 0, tents + 2, angle * 1.01); rotate(radians(5)); tail(0, 0, tents - 2, angle * 1.04); rotate(radians(5)); tail(0, 0, tents - 3, angle * .4); rotate(radians(5)); tail(0, 0, tents - 2, angle * .2); rotate(radians(5)); tail(0, 0, tents, angle * .6); rotate(radians(5)); tail(0, 0, tents + 5, angle * 1.02); rotate(radians(5)); tail(0, 0, tents - 1, angle * 1.03); rotate(radians(5)); tail(0, 0, tents + 2, angle * .9); rotate(radians(5)); tail(0, 0, tents, angle * .7); rotate(radians(5)); tail(0, 0, tents + 2, angle * 1.03); rotate(radians(5)); tail(0, 0, tents + 5, angle * 1.01); rotate(radians(5)); tail(0, 0, tents - 1, angle * 1.04); rotate(radians(5)); tail(0, 0, tents -3, angle * 1.03); rotate(radians(5)); tail(0, 0, tents, angle * .2); rotate(radians(5)); tail(0, 0, tents - 2, angle * .3); rotate(radians(5)); tail(0, 0, tents + 4, angle * 1.03); rotate(radians(5)); tail(0, 0, tents + 1, angle * 1.05); rotate(radians(5)); tail(0, 0, tents, angle * .3); rotate(radians(5)); tail(0, 0, tents + 2, angle * .4); rotate(radians(5)); tail(0, 0, tents + 4, angle * .7); rotate(radians(5)); tail(0, 0, tents - 2, angle * 1.02); rotate(radians(5)); tail(0, 0, tents, angle * .9); rotate(radians(5)); tail(0, 0, tents - 3, angle * 1.03); rotate(radians(5)); tail(0, 0, tents + 5, angle * 1.05); rotate(radians(5)); tail(0, 0, tents + 2, angle * .7); rotate(radians(5)); tail(0, 0, tents + 1, angle * .4); rotate(radians(5)); tail(0, 0, tents, angle * 1.03); rotate(radians(5)); tail(0, 0, tents - 1, angle * 1.02); rotate(radians(5)); tail(0, 0, tents + 1, angle * 1.03); rotate(radians(5)); tail(0, 0, tents + 4, angle * .8); rotate(radians(5)); tail(0, 0, tents - 3, angle * .3); popMatrix(); //blinking eyes fill(0); if(smile == true) //when eats food { if(currentTime - startMillis <= 1000) { stroke(0); strokeWeight(5); //left eye line(x - eyes, y, x - (eyes - 5), y - 5); line(x - (eyes - 5), y - 5, x - (eyes - 10), y); //right eye line(x + eyes, y, x + (eyes - 5), y - 5); line(x + (eyes - 5), y - 5, x + (eyes - 10), y); inc += 0.3; //increases speed of fluff } else { smile = false; inc += 0.01; } } else { if(currentTime%50 == 0) { stroke(0); strokeWeight(5); line(x - eyes, y, x - (eyes - 10), y); line(x + eyes, y, x + (eyes - 10), y); } else { ellipse(x - (eyes - 5), y, 10, 30); ellipse(x + (eyes - 5), y, 10, 30); } } //mouth for eating if(drawn == true) { rect(monsterX - 10, monsterY + 5, 20, 30); } } } void tail(int x, int y, int units, float angle) //x, y, length, angle of bend { pushMatrix(); translate(x, y); for (int i = units; i > 0; i--) { strokeWeight(i); //changes thickness line(0, 0, 0, .5); translate(0, -8); //controls closeness of lines rotate(angle); } popMatrix(); } void mousePressed() { drawn = true; circleX = mouseX; circleY = mouseY; }

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*