week07
寫出像是遊戲
可以使用畫線來消除怪物
增加
伸縮自如
可以消失的畫筆
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); for(int i=0;i<pt.size()-1;i++){ PVector p=pt.get(i),p2 = pt.get(i+1); ellipse(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--){ 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); ellipse(200,200,15,15); ellipse(ghostX,ghostY,15,15); strokeWeight(4); float dpx=0, dpy=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); dpx += abs(p2.x - p.x); dpy += abs(p2.y - p.y); } if(dpx>100&&dpy<40)stroke(255,0,0); else stroke(0); //ellipse(ghostX,ghostY,15,15); 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); } }
增加一些些 造出藍色的線
創造出綠色的線
打勾變綠色
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); strokeWeight(4); float dpx=0, dpy=0; 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); //line(p.x,p.y,p2.x,p2.y); dpx += abs(p2.x - p.x); dpy += abs(p2.y - p.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); ellipse(p.x,p.y,15,15); if(green_part1 ==false&&rightdown>150)green_part1=true; else if(green_part1 ==true&&rightdown>150)green_part1=true; } println(rightdown); if(dpx>100&&dpy<40)stroke(255,0,0); else if(dpx<40&&dpy>100)stroke(0,0,255); else if(rightdown>150)stroke(0,255,0); else stroke(0); //ellipse(ghostX,ghostY,15,15); 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); } }加入黃色
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, green_rightup =0;///往右下,往右上 float rightup = 0, yellow_rightdown =0; boolean green_part1 = false,green_ok=false; boolean yellow_part1 = false,yellow_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(green_part1 && p2.x - p.x>0 && p2.y-p.y<0) green_rightup+=sqrt(dpx*dpx+dpy*dpy); if(p2.x - p.x>0 && p2.y-p.y<0) rightup+=sqrt(dpx*dpx+dpy*dpy); if(yellow_part1 && p2.x - p.x>0 && p2.y-p.y>0) yellow_rightdown+=sqrt(dpx*dpx+dpy*dpy); if(green_part1==false && rightdown>150) green_part1 = true; else if(green_part1==true && green_rightup>150) green_ok=true; if(yellow_part1==false && rightup>150) yellow_part1 = true; else if(yellow_part1==true && yellow_rightdown>150) yellow_ok=true; } if( dpx>100 && dpy<40) stroke(255,0,0);///超過了長度100type1紅色的橫線 else if( dpx<40 && dpy>100) stroke(0,0,255);///畫直線超過100變藍色 else if(green_ok) stroke(0,255,0);///右下變綠色 else if(yellow_ok)stroke(255,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); } }








沒有留言:
張貼留言