卡通小黄鸭
实现:鼠标左击和右击实现图形发生颜色变化,键盘数字1,2,3,4可以控制矩形方向。黄色圆跟随鼠标移动,橙色圆跟随鼠标的点。
int x=60;
int y=180;
int x1 = 50;
int y1 = 150;
int x2 = 50;
int y2= 140;
int radius=5;
float easing = 0.01;
void setup(){
size(520,480);
}
void draw(){
strokeWeight(2);
background(#5ba3da);
ellipseMode(RADIUS);
//跟随
fill(#fc7a46);
ellipse(mouseX,mouseY,radius,radius);
if(keyPressed){
if(key =='1'){
x1--;
}else if(key=='2'){
x1++;
}
else if(key=='3'){
y1++;
}else{
y1--;
}
}
rect(x1,y1,50,50);
//手
stroke(#fddd0e);
strokeCap(ROUND);
strokeWeight(18);
line(x+160,y-20,x+105,y+30);
line(x+215,y-25,x+275,y+35);
//头
noStroke();
fill(#f2b05b);
int targetX2 = mouseX;
x2 += (targetX2 - x2) * easing;
int targetY2 = mouseY;
y2 += (targetY2 - y2) * easing;
ellipse(x2+100,y2-70,radius+5,radius+5);
fill(#fefe2e);
ellipse(x+190,y-110,radius+5,radius+5);
ellipse(x+190,y-40,radius+50,radius+50);
//腿
fill(#ffc378);
rect(x+200,y+40,x-33,y-90);
rect(x+160,y+40,x-33,y-90);
rect(x+198,y+40,x-34,y-90);
rect(x+158,y+40,x-34,y-90);
fill(#fe5a01);
rect(x+200,y+40,x-35,y-90);
rect(x+160,y+40,x-35,y-90);
//脚
fill(#ffc378);
ellipse(x+212,y+130,17,17);
ellipse(x+172,y+130,17,17);
fill(#ff5001);
ellipse(x+212,y+130,16,16);
ellipse(x+172,y+130,16,16);
//身体
fill(#fff819);
quad(x+140,y-10,x+240,y-10,x+250,y+35,x+130,y+35);
fill(#fcae06);
arc(x+190,y+30,x,y-130,radians(0),radians(180));
if(mousePressed){
if(mouseButton==RIGHT){
fill(#73bcf3);
quad(x+140,y-10,x+240,y-10,x+250,y+35,x+130,y+35);
fill(#0192ff);
arc(x+190,y+30,x,y-130,radians(0),radians(180));
}else{
fill(#f46a68);
quad(x+140,y-10,x+240,y-10,x+250,y+35,x+130,y+35);
fill(#ff2c29);
arc(x+190,y+30,x,y-130,radians(0),radians(180));
}
}
//眉毛
fill(0);
strokeWeight(5);
arc(x+178,y-70,x-52,y-177,radians(150),radians(360));
arc(x+210,y-70,x-52,y-177,radians(150),radians(360));
//眼睛(判断是否睁眼闭眼)
fill(0);
ellipse(x+178,y-50,5,7);
ellipse(x+208,y-50,5,7);
if(mousePressed){
if(mouseButton==LEFT){
fill(0);
arc(x+178,y-50,x-52,y-168,radians(180),radians(360));
arc(x+208,y-50,x-52,y-168,radians(180),radians(360));
fill(#fefe2e);
arc(x+178,y-50,x-55,y-173,radians(180),radians(360));
arc(x+208,y-50,x-55,y-173,radians(180),radians(360));
ellipse(x+178,y-50,7,8);
ellipse(x+208,y-50,7,8);
}
}
//腮红
fill(#fc5717);
ellipse(x+160,y-40,10,5);
ellipse(x+228,y-40,10,5);
//嘴巴
fill(#fc6411);
ellipse(x+194,y-33,25,10);
//身子
stroke(#f97c08);
strokeCap(ROUND);
strokeWeight(10);
line(x+135,y-10,x+240,y+50);
//钱包
noStroke();
fill(#f97c08);
ellipse(x+225,y+40,20,20);
stroke(#ffc32e);
strokeCap(ROUND);
strokeWeight(5);
line(x+235,y+20,x+215,y+20);
noStroke();
fill(#f26604);
quad(x+210,y+10,x+240,y+10,x+235,y+20,x+215,y+20);
}
运行结果如图1:
图1
大家可以复制保存运行看看效果,当然也可以修改,加入自己的想法,具体的左击和右击或者等相关效果图我就不放上去了。(注意:我把一些注释换成了中文,但在processing中中文时不会显示出来的,复制过去发现框框的不要惊慌,没事的,不会报错,不过如果中文不是注释而是其他就会报错了。)