1. week02_1_pacman_radians_mouseX
1-1. 去Github內複製上禮拜 week01_9 的程式碼
1-2. 程式碼
```
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座標, 寬, 高, 結束, 頻果派的方向
}
}
}
```
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座標, 寬, 高, 結束, 頻果派的方向
}
}
}
```
滑鼠在左邊時
滑鼠在中間時
滑鼠在右邊時
2-1. 複製week02_1的程式碼
2-2. 新增 frameCount 讓嘴巴的部分動起來
```
week02_3_pacman_open_close_open_close
```
void draw() {
float a = frameCount % 180; //超過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_open_close
合併 week02_1 及 week02_3 的程式碼
```
void draw() {
background(255);
fill(#861B42);
for (int x = 0; x < 400; x += 100) {
for (int y = 0; y < 400; y += 100) {
float a = frameCount % 180; //超過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);
}
}
}
week02_5_pacman_if_keyPressed_keyCode
```
void draw(){
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);
}
```
按「⬆」時,球向上移動
按「⬇」時,球向下移動
按「⮕」時,球向右移動
按「⬅」時,球向左移動
物體的角度變化速度
```void setup(){
frameRate(200); //增加速度,每秒跑200影格
}
```
week02_6_pacman_b_direction_from_week02_3
複製 week02_3 的程式碼
新增程式碼
```
void draw(){
float b = radians(mouseX);
}
```
修改程式碼
```
void draw(){
arc(x + 50, y + 50, 100, 100, b + 0 + a, b + PI * 2 - a, PIE);
}
```
week02_7_pacman_d_direction_void_keyPressed_keyCode
合併 week02_5 及 week02_6 的程式碼
```
float x = 200, y = 200, d = PI; //d是方向
void draw() {
float a = frameCount % 180; //超過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_pacman_dx_dy_d_void_keyPressed
複製並簡化 week02_7 的程式碼
```
int x = 200, y = 200, d = 0; //d是方向
void draw() {
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_pacman_radians_abs_frameCount_if_keyPressed
複製並修改 week02_8 的程式碼
```
void draw(){
float a = radians(abs(frameCount % 90 -45));
if(keyPressed) x += dx[d];
if(keyPressed) y += dy[d];
```
按「⮕」時,球向右



















沒有留言:
張貼留言