Week 04 動態島、圍棋、象棋
1.Iphone 14 動態島在座標位置上重複繪製橢圓(球)
```
```
void setup(){
size(500, 500);
}
int x=250, y=250;
void draw(){
ellipse(x, y, 10, 10);//橢圓(座標, 大小)
x+=1; y+=1;
}
```用float宣告變數作為加速度以控制方向
加上if函式,遇到邊界時往反向運動
```
加上if函式,遇到邊界時往反向運動
```
void setup(){
size(500, 500);
}
float x=250, y=250;
float vx=1.0, vy=-0.5;
void draw(){
ellipse(x, y, 10, 10);//橢圓
x+=vx; y+=vy; ///不同向量
if(x>500) vx=-vx;///遇到邊界反彈
if(x<0) vx=-vx;
if(y>500) vy=-vy;
if(y<0) vy=-vy;
}
```
把最下方改為板子,改寫為碰到板子時反彈
並去除多餘的殘影
並去除多餘的殘影
```
void setup(){
size(500, 500);
}
float x=250, y=250;
float vx=1.0, vy=-0.5;
void draw(){
background(#FFFF99);//背景,去除殘影
int boardX = mouseX;///板子X座標=滑鼠X座標位置
rect(boardX, 480, 80, 15);//控制的板子
ellipse(x, y, 10, 10);//橢圓
x+=vx; y+=vy; ///不同向量
if(x>500) vx=-vx;///遇到邊界反彈
if(x<0) vx=-vx;
if(y<0) vy=-vy;
if(y>480 && x>boardX && x<boardX+80) vy=-vy;
//板子的y高度, 板子x座標, 板子的寬度
}
```
```
改寫板子的程式碼,使其可以變大或變小
並讓滑鼠控制的位置置中
並讓滑鼠控制的位置置中
```
void setup(){
size(500, 500);
}
float x=250, y=250;
float vx=2.0, vy=-1.5;
float boardX, boardY=470, boardW=80, boardH=15;
void draw(){
boardX=mouseX-boardW/2;
background(#FFFF99);//背景,去除殘影
rect(boardX, boardY, boardW, boardH);//控制的板子
ellipse(x, y, 10, 10);//橢圓
x+=vx; y+=vy; ///不同向量
if(x>500) vx=-vx;///遇到邊界反彈
if(x<0) vx=-vx;
if(y<0) vy=-vy;
if(y>boardY && y<boardY+boardH && x>boardX && x<boardX+boardW){
vy=-vy;
vx+= (mouseX-pmouseX)/2;
}
if(mousePressed && mouseButton==LEFT) boardW *= 1.01;
if(mousePressed && mouseButton==RIGHT) boardW *=0.99;//按滑鼠左鍵板子會變寬,右鍵會變小
}
```2.圍棋
先利用for迴圈畫出許多棋子(for回圈內參數預設為任意數字)
```
void setup(){
size(500,500);
}
void draw(){
for(int x=100; x<400; x+=20){
for(int y=100; y<=400; y+=20){
ellipse(x, y, 20, 20);
}
}
}
```
```
利用陣列繪製出9*9圍棋
並劃出9*9方格
```
void setup(){
size(500,500);
}
int [][]go={
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,1,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,1,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0}
};
void draw(){
for(int i=0; i<9; i++){
for(int j=0; j<9; j++){
if(go[i][j]==1)fill(0);
else fill(255);///0代表白子,1代表黑子
ellipse(50+i*50, 50+j*50, 50, 50);
}
}
}
```
```
畫出棋盤,在每個點上畫上棋子
```
```
void setup(){
size(500,500);
}
int [][]go={
{0,0,0,0,0,2,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,1,0,0,2,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,1,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0}
};
void draw(){
background(246, 194, 108); ///背景為褐色
for(int i=1; i<=9; i++){
line(50, 50*i, 450, 50*i);
line(50*i, 50, 50*i, 450); ////畫線
}
for(int i=0; i<9; i++){
for(int j=0; j<9; j++){
if(go[i][j]==1){
fill(0);
ellipse(50+j*50, 50+i*50, 40, 40);
}
else if(go[i][j]==2){
fill(255);
ellipse(50+i*50, 50+j*50, 40, 40); ///改為1是黑子 2是白子 0則不畫出棋子
}
}
}
}
``````
void setup(){
size(500,500);
}
int [][]go={
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0}
};
int N=0; ///計算目前子數
void mousePressed(){
int j=(mouseX-25)/50;//j對應X座標
int i=(mouseY-25)/50;//i對應Y座標
go[i][j]=(N%2==0)?1:2;//if(N%2==0)是則為1,否則為2
N++;//計算棋子
}
void draw(){
background(246, 194, 108);
for(int i=1; i<=9; i++){
line(50, 50*i, 450, 50*i);
line(50*i, 50, 50*i, 450);
}
for(int i=0; i<9; i++){
for(int j=0; j<9; j++){
if(go[i][j]==1){
fill(0);
ellipse(50+j*50, 50+i*50, 40, 40);
}
else if(go[i][j]==2){
fill(255);
ellipse(50+i*50, 50+j*50, 40, 40);
}
}
}
}
```
```
沒有留言:
張貼留言