week02-1_pacman_radians_mouseX
用滑鼠控制pacman的開口角度
void setup(){
size(400,400);
}
void draw() {
background(255);
fill(#FFDC0F);//填充黃色
float a = radians(mouseX);
for(int x=0; x<400; x+=100){
for(int y=0;y<400; y+=100){
arc(x+50, y+50,100,100, 0+a, PI*2-a, PIE);//改畫弧度
//X座標, Y, 寬, 高, 開始, 結束,蘋果派的方法畫
}
}
}
week02-2-pacman_radians_frameCount
自動開嘴,但會消失
void setup(){
size(400,400);
}
void draw(){
background(255);
fill(#FFDC0F);
float a = radians(frameCount);
if(a>PI/4) a = a - PI/4;
arc(200, 200, 300, 300, 0+a, PI*2-a, PIE);
}
week02-3-pacman_open_close_open_close
自動開嘴成功,0..45..90..180
void setup(){
size(400,400);
}
void draw(){
background(255);
fill(#FFDC0F);
float a = frameCount % 180;
if(a<45) a = radians(a);
else if(a<90) a = radians(90-a);
else if(a<135) a = radians(a-90);
else if(a<180) a = radians(180-a);
arc(200, 200, 300, 300, 0+a, PI*2-a, PIE);
}
week02-4_pacman_for_for_open_close_open_close
自動開嘴之多重影分身之術
void setup(){ size(400,400); } void draw(){ background(255); fill(#FFDC0F); float a = frameCount % 180; if(a<45) a = radians(a); else if(a<90) a = radians(90-a); else if(a<135) a = radians(a-90); else if(a<180) a = radians(180-a); arc(200, 200, 300, 300, 0+a, PI*2-a, PIE); }
week02-5_pacmen_if_keyPressed_keyCode
來控制pacmen移動,利用上下左右鍵(*用frameRate()加速移動)
size(400, 400); frameRate(120); } int x = 200, y= 200; //pacmen座標 void draw(){ background(255); fill(#FFDC0F); if(keyPressed && keyCode==RIGHT) x++; if(keyPressed && keyCode==LEFT) x--; if(keyPressed && keyCode==UP) y--; if(keyPressed && keyCode==DOWN) y++; ellipse(x, y, 100, 100); }
week02-6_pacmen_b_direction from week_02_3滑鼠控制pacmen的開嘴方向(未完成)void setup() { size(400, 400); } void draw() { background(255); fill(#FFDC0F); float a = frameCount % 180; float b = radians(mouseX); if (a<45) a = radians(a); else if (a<90) a = radians(90-a); else if (a<135) a = radians(a-90); else if (a<180) a = radians(180-a); arc(200, 200, 300, 300, b+0+a, b+PI*2-a, PIE); }
week02-7_pacmen_d_direction_void_keyPressed_keyCode用方向鍵控制pecmen,開嘴的方向也是正確的void setup() { size(400, 400); } float x = 200, y = 200, d=0; void draw() { background(255); fill(#FFDC0F); float a = frameCount % 180; if (a<45) a = radians(a); else if (a<90) a = radians(90-a); else if (a<135) a = radians(a-90); else if (a<180) a = radians(180-a); arc(x, y, 100, 100, d+0+a, d+PI*2-a, PIE); } void keyPressed(){ if(keyCode==RIGHT){ x++; d = PI/2*0; }else if(keyCode==DOWN){ y++; d = PI/2*1; }else if(keyCode==LEFT){ x--; d = PI/2*2; }else if(keyCode==UP){ y--; d = PI/2*3; } }week02-8_pacmen_dx_dy_d_void_keyPressed死魚移動,但不會張嘴,程式進化縮減中void setup() { size(400, 400); } int x = 200, y = 200, d = 0; void draw() { background(255); fill(#FFDC0F); float a = 0.5; int [] dx = {1, 0, -1, 0}; int [] dy = {0, 1, 0, -1}; x += dx[d]; y += dy[d]; arc(x, y, 100, 100, PI/2*d+a, PI/2*d + PI*2 -a, PIE); } void keyPressed() { if (keyCode==RIGHT) d = 0; if (keyCode==DOWN) d = 1; if (keyCode==LEFT) d = 2; if (keyCode==UP) d = 3; }week02-9_pacmen_radians_abs_frameCount_if_keyPressed完成pacmen,關鍵是radians角度單位,if()函式keyPressedvoid setup() { size(400, 400); } int x = 200, y = 200, d = 0; void draw() { background(255); fill(#FFDC0F); float a =radians(abs(frameCount%90-45)); int [] dx = {1, 0, -1, 0}; int [] dy = {0, 1, 0, -1}; if(keyPressed) x += dx[d]; if(keyPressed) y += dy[d]; arc(x, y, 100, 100, PI/2*d+a, PI/2*d + PI*2 -a, PIE); } void keyPressed() { if (keyCode==RIGHT) d = 0; if (keyCode==DOWN) d = 1; if (keyCode==LEFT) d = 2; if (keyCode==UP) d = 3; }
沒有留言:
張貼留言