7-3
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);
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);
}
7-4
ArrayList<
PVector> pt =
new ArrayList<
PVector>();
void setup(){
size(400,400);
background(255);
}
float ghostX=40, 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(){
//background(255);
for(int i=pt.size()-1; i>=0; i--){//倒過來的for迴圈
pt.remove(i);
}
}
畫完線放開滑鼠線會消失

7-5
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);
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的差距
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);///超過了長度100type1紅色的橫線
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( 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);
}
}
7-6
ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
size(400,400);
background(255);
}
float ghostX=40, ghostY=20;
void mouseDragged(){//按下mouse鍵,再拖它
pt.add(new PVector(mouseX,mouseY));
}
void draw(){
background(255);
ellipse(200,200,15,15);
strokeWeight(0);
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的差距
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); //type1 紅色的橫線
else if(dpx<40 && dpy>100) stroke(0,0,255); //不是,就黑色線
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--){//到過來的for迴圈
pt.remove(i);
}
}
7-7
ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
size(400,400);
background(255);
}
float ghostX=40, ghostY=20;
void mouseDragged(){//按下mouse鍵,再拖它
pt.add(new PVector(mouseX,mouseY));
}
void draw(){
background(255);
ellipse(200,200,15,15);
strokeWeight(0);
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的差距
int rightdown = 0;//往右下
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++;
}
if(dpx>100 && dpy<40) stroke(255,0,0); //type1 紅色的橫線
else if(dpx<40 && dpy>100) stroke(0,0,255); //不是,就黑色線
else if(rightdown>20) stroke(0,255,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--){//到過來的for迴圈
pt.remove(i);
}
}
7-8
ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
size(400,400);
background(255);
}
float ghostX=40, ghostY=20;
void mouseDragged(){//按下mouse鍵,再拖它
pt.add(new PVector(mouseX,mouseY));
}
void draw(){
background(255);
ellipse(200,200,15,15);
strokeWeight(0);
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的差距
int rightdown = 0;//往右下
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(dpx>100 && dpy<40) stroke(255,0,0); //type1 紅色的橫線
else if(dpx<40 && dpy>100) stroke(0,0,255); //不是,就黑色線
else if(rightdown>150) stroke(0,255,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--){//到過來的for迴圈
pt.remove(i);
}
}
7-9
ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
size(400,400);
background(255);
}
float ghostX=40, ghostY=20;
void mouseDragged(){//按下mouse鍵,再拖它
pt.add(new PVector(mouseX,mouseY));
}
void draw(){
background(255);
ellipse(200,200,15,15);
strokeWeight(0);
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的差距
int rightdown = 0;//往右下
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(dpx>100 && dpy<40) stroke(255,0,0); //type1 紅色的橫線
else if(dpx<40 && dpy>100) stroke(0,0,255); //不是,就黑色線
else if(rightdown>150) stroke(0,255,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--){//到過來的for迴圈
pt.remove(i);
}
}
7-A
ArrayList<PVector> pt = new ArrayList<PVector>();
void setup(){
size(400,400);
background(255);
}
float ghostX=40, ghostY=20;
void mouseDragged(){//按下mouse鍵,再拖它
pt.add(new PVector(mouseX,mouseY));
}
void draw(){
background(255);
ellipse(200,200,15,15);
strokeWeight(0);
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 ;//往右下,往右上3
float rightup = 0 ,yellow_rightup = 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_rightup += sqrt(dpx*dpx + dpy*dpy);
//ellipse(p.x,p.y,10,10);
if(green_part1==false && rightdown>150) green_part1 = true;
else if(green_part1==true && green_rightup>150) green_ok = true;
if(yellow_part1==false && rightdown>150) yellow_part1 = true;
else if(yellow_part1==true && yellow_rightup>150) yellow_ok = true;
}
println(rightdown);
if(dpx>100 && dpy<40) stroke(255,0,0); //type1 紅色的橫線
else if(dpx<40 && dpy>100) stroke(0,0,255); //type2 藍色的直線
else if(green_ok) stroke(0,255,0);//type3 綠色
else if(yellow_ok) stroke(255,255,0);//type4 黃色
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--){//到過來的for迴圈
pt.remove(i);
}
}
沒有留言:
張貼留言