halloween
01 畫線 按下開始畫 放開後消失 用背景清除
void setup(){
size(400,400);
background(255);
}
void draw(){
if(mousePressed)line(mouseX,mouseY,pmouseX,pmouseY);
}
void mouseReleased(){
background(255);
}
02 移動
void setup(){
size(400,400);
background(255);
}
float ghostX=400,ghostY=20;
void draw(){
ellipse(200,200,15,15);
if(mousePressed)line(mouseX,mouseY,pmouseX,pmouseY);
ellipse(ghostX,ghostY,15,15);
float dx=200-ghostX, dy=200-ghostY,len=sqrt(dx*dx+dy*dy);
ghostX+=dx/len/3;
ghostY+=dy/len/3;
}
void mouseReleased(){
background(255);
}
03
ArrayList<PVector>pt = new ArrayList<PVector>();
void setup(){
size(400,400);
background(255);
}
float ghostX=400,ghostY=20;
void mouseDragged(){
pt.add(new PVector(mouseX,mouseY));
}
void draw(){
background(255);
ellipse(200,200,15,15);
//if(mousePressed)line(mouseX,mouseY,pmouseX,pmouseY);
for(int i=0;i<pt.size();i++){
PVector p = pt.get(i);
ellipse(p.x,p.y,3,3);
}
ellipse(ghostX,ghostY,15,15);
float dx=200-ghostX, dy=200-ghostY,len=sqrt(dx*dx+dy*dy);
ghostX+=dx/len/3;
ghostY+=dy/len/3;
}
void mouseReleased(){
background(255);
}
04 從畫圓變畫線
ArrayList<PVector>pt;
void setup(){
size(400,400);
background(255);
pt= new ArrayList<PVector>();
}
float ghostX=400,ghostY=20;
void mouseDragged(){ //按下mouse鍵 再拖他
pt.add(new PVector(mouseX,mouseY));
}
void draw(){
background(255);
ellipse(200,200,15,15);
//if(mousePressed)line(mouseX,mouseY,pmouseX,pmouseY);
for(int i=0; i<pt.size()-1; i++){
PVector p = pt.get(i),p2 = pt.get(i+1);
line(p.x,p.y,p2.x,p2.y);//ellipse(p.x,p.y,3,3);
}
ellipse(ghostX,ghostY,15,15);
float dx = 200-ghostX, dy = 200-ghostY,len = sqrt(dx*dx+dy*dy);
ghostX += dx / len / 3;
ghostY += dy / len / 3;
}
void mouseReleased(){
for(int i=pt.size()-1;i>=0;i--){ //倒過來的for迴圈
pt.remove(i);
}
}
05
ArrayList<PVector>pt=new ArrayList<PVector>();
void setup(){
size(400,400);
background(255);
}
float ghostX=400,ghostY=20;
void mouseDragged(){
pt.add(new PVector(mouseX,mouseY));
}
void draw(){
background(255);
ellipse(200,200,15,15);
ellipse(ghostX,ghostY,15,15);
strokeWeight(4);
float dpx=0,dpy=0; // 看p.x p2.x的差距 p.y p2.y的差距
//if(mousePressed)line(mouseX,mouseY,pmouseX,pmouseY);
for(int i=0;i<pt.size()-1;i++){
PVector p=pt.get(i),p2=pt.get(i+1);
dpx+=abs(p2.x-p.x);//累積x的移動量
dpy+=abs(p2.y-p.y);//累積y的移動量
}
if(dpx>100 && dpy<40) stroke(255,0,0);//typel紅色的橫線
else stroke(0);//黑色線
for(int i=0;i<pt.size()-1;i++){
PVector p=pt.get(i),p2=pt.get(i+1);
line(p.x,p.y,p2.x,p2.y);//ellipse(p.x,p.y,3,3)
}
float dx=200-ghostX,dy=200-ghostY,len=sqrt(dx*dx+dy*dy);
ghostX+=dx/len/3;
ghostY+=dy/len/3;
}
void mouseReleased(){
for(int i=pt.size()-1;i>=0;i--){
pt.remove(i);
}
}
ArrayList<PVector>pt=new ArrayList<PVector>();
void setup(){
size(400,400);
background(255);
}
float ghostX=400,ghostY=20;
void mouseDragged(){
pt.add(new PVector(mouseX,mouseY));
}
void draw(){
background(255);
strokeWeight(1);
stroke(0);ellipse(200,200,15,15);
stroke(0);ellipse(ghostX,ghostY,15,15);
ellipse(200,200,15,15);
ellipse(ghostX,ghostY,15,15);
strokeWeight(4);
float dpx=0,dpy=0;
//if(mousePressed)line(mouseX,mouseY,pmouseX,pmouseY);
for(int i=0;i<pt.size()-1;i++){
PVector p=pt.get(i),p2=pt.get(i+1);
dpx+=abs(p2.x-p.x);
dpy+=abs(p2.y-p.y);
}
if(dpx>100 && dpy<40) stroke(255,0,0); //type 1紅色的線
else if(dpx<40 && dpy>100) stroke(0,0,255); // type 2 藍色的線
else stroke(0);
for(int i=0;i<pt.size()-1;i++){
PVector p=pt.get(i),p2=pt.get(i+1);
line(p.x,p.y,p2.x,p2.y);
}
float dx=200-ghostX,dy=200-ghostY,len=sqrt(dx*dx+dy*dy);
ghostX+=dx/len/3;
ghostY+=dy/len/3;
}
void mouseReleased(){
for(int i=pt.size()-1;i>=0;i--){
pt.remove(i);
}
}
07
ArrayList<PVector> pt = new ArrayList<PVector>();///資料結構
void setup(){
size(400,400);
background(255);
}
float ghostX=40, ghostY=20;
void mouseDragged(){//按下滑鼠拖曳
pt.add(new PVector(mouseX,mouseY));
}
void draw(){
background(255);
strokeWeight(1);
stroke(0);ellipse(200,200,15,15);
stroke(0);ellipse(ghostX,ghostY,15,15);
strokeWeight(4);//變粗
float dpx=0, dpy=0;///要看p.x p2.x的差距, p.y p2.y的差距
float rightdown = 0, rightup =0;///往右下,往右上
boolean green_part1 = false,green_ok=false;
for (int i=0; i<pt.size()-1; i++){///累積移動量
PVector p=pt.get(i) , p2 = pt.get(i+1);
dpx += abs(p2.x - p.x);//累積x的移動量
dpy += abs(p2.y - p.y);//累積y的移動量
if(p2.x - p.x>0 && p2.y-p.y>0) rightdown+=sqrt(dpx*dpx+dpy*dpy);
if(p2.x - p.x>0 && p2.y-p.y<0) rightup+=sqrt(dpx*dpx+dpy*dpy);
if(green_part1==false && rightdown>150) green_part1 = true;
else if(green_part1==true && rightup>150) green_ok=true;
}
if( dpx>100 && dpy<40) stroke(255,0,0);
else if( dpx<40 && dpy>100) stroke(0,0,255);
else if(green_ok) stroke(0,255,0);
else stroke(0);//黑色
for (int i=0; i<pt.size()-1; i++){
PVector p=pt.get(i) , p2 = pt.get(i+1);
line( p.x, p.y, p2.x, p2.y);
}
float dx = 200-ghostX, dy = 200-ghostY, len=sqrt(dx*dx+dy*dy);
ghostX += dx/ len/ 3;
ghostY += dy/ len/ 3;
}
void mouseReleased(){
for(int i=pt.size()-1;i>=0;i--){///到過來的for迴圈
pt.remove(i);
}
}
08
ArrayList<PVector> pt = new ArrayList<PVector>();
void setup()
{
size(400, 400);
background(255);
}
float ghostX=400, ghostY=20;
void mouseDragged(){
pt.add(new PVector(mouseX, mouseY));
}
void draw()
{
background(255);
strokeWeight(1);
stroke(0); ellipse(200, 200, 15, 15);
stroke(0); ellipse(ghostX, ghostY, 15, 15);
// if (mousePressed) line(mouseX, mouseY, pmouseX, pmouseY);
strokeWeight(4);
float dpx=0, dpy=0; // 要看p.x p2.x的差距, p.y p2.y 的差距
float botton_right=0; // 往右下
for (int i=0; i<pt.size()-1; i++){
PVector p = pt.get(i), p2 = pt.get(i+1);
line(p.x, p.y, p2.x, p2.y); // ellipse(p.x, p.y, 3, 3);
dpx += abs(p2.x - p.x); // 累積x的移動量
dpy += abs(p2.y - p.y); // 累積y的移動量
if (p2.x - p.x > 0 && p2.y - p.y > 0) botton_right+=sqrt(dpx*dpx+dpy+dpy);
}
if (dpx>100 && dpy<40) stroke(255, 0, 0);
else if (dpx<40 && dpy>100) stroke(0, 0, 255);
else if (botton_right>150) stroke(0, 255, 0);
else stroke(0);
for (int i=0; i<pt.size()-1; i++){
PVector p = pt.get(i), p2 = pt.get(i+1);
line(p.x, p.y, p2.x, p2.y); // ellipse(p.x, p.y, 3, 3);
}
float dx = 200-ghostX, dy = 200-ghostY, len=sqrt(dx*dx+dy*dy);
ghostX+=dx/len/3;
ghostY+=dy/len/3;
}
void mouseReleased()
{
// background(255);
for (int i=pt.size()-1; i>=0; i--){
pt.remove(i);
}
}
09
ArrayList<PVector> pt = new ArrayList<PVector>();
void setup()
{
size(400, 400);
background(255);
}
float ghostX=400, ghostY=20;
void mouseDragged(){
pt.add(new PVector(mouseX, mouseY));
}
void draw()
{
background(255);
strokeWeight(1);
stroke(0); ellipse(200, 200, 15, 15);
stroke(0); ellipse(ghostX, ghostY, 15, 15);
// if (mousePressed) line(mouseX, mouseY, pmouseX, pmouseY);
strokeWeight(4);
float dpx=0, dpy=0; // 要看p.x p2.x的差距, p.y p2.y 的差距
float botton_right=0, top_right=0; // 往右下, 右上
boolean green_part1 = false, green_ok = false;
for (int i=0; i<pt.size()-1; i++){
PVector p = pt.get(i), p2 = pt.get(i+1);
line(p.x, p.y, p2.x, p2.y); // ellipse(p.x, p.y, 3, 3);
dpx += abs(p2.x - p.x); // 累積x的移動量
dpy += abs(p2.y - p.y); // 累積y的移動量
if (p2.x - p.x > 0 && p2.y - p.y > 0) botton_right+=sqrt(dpx*dpx+dpy+dpy);
if (p2.x - p.x > 0 && p2.y - p.y < 0) top_right+=sqrt(dpx*dpx+dpy+dpy);;
ellipse(p.x, p.y, 10, 10);
if (green_part1==false && top_right>150) green_part1 = true;
else if (green_part1==true && top_right>150) green_ok =true;
}
if (dpx>100 && dpy<40) stroke(255, 41, 98); // horizonal line (red)
else if (dpx<40 && dpy>100) stroke(41, 171, 255); // vertical line (blue)
else if (green_ok) stroke(44, 255, 41); // botton_right (green)
else stroke(0); // (black)
for (int i=0; i<pt.size()-1; i++){
PVector p = pt.get(i), p2 = pt.get(i+1);
line(p.x, p.y, p2.x, p2.y); // ellipse(p.x, p.y, 3, 3);
}
float dx = 200-ghostX, dy = 200-ghostY, len=sqrt(dx*dx+dy*dy);
ghostX+=dx/len/3;
ghostY+=dy/len/3;
}
void mouseReleased()
{
// background(255);
for (int i=pt.size()-1; i>=0; i--){
pt.remove(i);
}
}
10







沒有留言:
張貼留言