程式碼01
1.用滑鼠控制角度
///week02-1_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,寬,高,開始,結束
}
}
}
程式碼02
1.滑鼠左右控制弧度
///week02-2_pacman_test
void setup(){
size(400,400);
}
void draw(){
background(255);
fill(#FFDC0F);
float a = radians(mouseX);
if(a>PI/4) a = a - PI/4;
arc(200,200,300,300,0+a,PI*2-a,PIE);
}
程式碼03
1.自動開合,並限制弧度
///week02-3_pacman_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);
}
程式碼04
1.和程式碼03一樣,但用雙重FOR迴圈+01和03程式碼完成
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) {
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+50, y+50, 100, 100, 0+a, PI*2-a, PIE);//改畫弧度
//X座標,Y,寬,高,開始,結束
}
}
}
程式碼05
1.練習用程式碼鍵盤控制上下左右
2.可以在setup函式加frameRate(N); 可以增加速度
void setup(){
size(400,400);
}
int x = 200,y = 200;
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);
}
程式碼06
1.練習加入b,float b = radians(mouseX); 角度和弧度
2. b加入開始和結束的位置
//week02_06_pacman_b_direction
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);
}
程式碼07
1.維持自動開合,鍵盤上下左右控制方向(要按住)
2.
//week02_07_pacman_d_direction_void_keyPressed
void setup(){
size(400,400);
}
float x = 200,y = 200,d=PI/2*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) {
x--;
d = PI/2*1;
}else if(keyCode==LEFT) {
y++;
d = PI/2*2;
}else if(keyCode==UP) {
y--;
d = PI/2*3;
}
}
程式碼08
1. 縮短程式碼
2. 維持自動開合,鍵盤上下左右控制方向,按一下就可以
3. 下個程式碼要解決的問題,固定嘴巴要讓它動起來,按住才動,不要飄
//week02_08_pacman_dx_dy_d_void_keyPressed
void setup(){
size(400,400);
}
int x = 200,y = 200,d=0;
void draw(){
background(#050505);
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;
}
程式碼09
1. 解決的問題,固定嘴巴要讓它動起來,按住才動,不會飄了
2. 搞懂藍色新增的程式碼
//week02_09_pacman_rafians_abs_frameCount_if_keyPressed
void setup(){
size(400,400);
}
int x = 200,y = 200,d=0;
void draw(){
background(#050505);
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;
}








沒有留言:
張貼留言