彈珠檯
(1)彈珠製作
先製作出彈珠
void setup(){
size(500,500);
}
int x=250,y=250;///位置
void draw(){
ellipse(x,y,10,10);///橢圓
x=x+1;
y=y-1;///往斜跑
}
size(500,500);
}
int x=250,y=250;///位置
void draw(){
ellipse(x,y,10,10);///橢圓
x=x+1;
y=y-1;///往斜跑
}
(2)碰到邊框反彈
設定將彈珠若碰到邊框就會反彈
程式碼:
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=x+vx;
y=y-vy;
if(x>500)vx=-vx;///碰到右邊框反彈
if(y<0) vy=-vy;///碰到上邊框反彈
if(x<0)vx=-vx;///碰到左邊框反彈
}
(3)增加板子
增加板子,且讓彈珠碰到板子後反彈
程式碼:
void setup(){
size(500,500);
}
float x=250,y=250;
float vx=2.0,vy=-1.5;///x數字越大,y的數字越小,速度越快
void draw(){
background(#FFFFF2);///增加背景色,消除殘影
int boardX= mouseX;///設定板子為boardX且boardX會跟著滑鼠
rect(boardX,470,100,20);///板子
ellipse(x,y,10,10);
x=x+vx;
y=y-vy;
if(x>500)vx=-vx;
if(y<0) vy=-vy;
if(x<0)vx=-vx;
if(y>470 && x>boardX && X<boardX+100)vy=-vy;///彈珠碰到板子後會反彈
}
(4)完成品
若長按滑鼠,板子會變寬
程式碼:
void setup(){
size(500,500);
}
float x=250,y=250;
float vx=2.0,vy=-1.5;
float boardX,boardY=470,boardW=100,boardH=20;
void draw(){
boardX=mouseX-boardW/2;
background(#FFFFF2);
rect(boardX,boardY,boardW,boardH);///控制的板子
ellipse(x,y,10,10);
x=x+vx;
y=y-vy;
if(x>500)vx=-vx;
if(y<0) vy=-vy;
if(x<0)vx=-vx;
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;///若按下滑鼠,右邊增加
}
圍棋/象棋
(1)先做出旗子
程式碼:
void setup(){
background(#DDC4F2);
size(500,500);
}
void draw(){
for(int x=50;x<450;x+=50){///X位置
for(int y=50;y<=450;y+=50){///Y的位置
ellipse(x,y,50,50);///橢圓
}
}
}
(2)顏色
程式碼:
void setup(){
background(#DDC4F2);
size(500,500);
}
int [][]go={
{0,0,0,0,0,0,0,0,1},///第幾個是黑色
{0,0,0,0,0,0,0,0,1},
{0,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,1,0,1},
{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,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);///如果陣列的i,j是1的話,就填充黑色
else fill(255);
ellipse(50+j*50,50+i*50,50,50);
}
}
}
增加棋盤&白旗
程式碼:
void setup(){
size(500,500);
}
int [][]go={
{0,0,0,0,0,0,0,0,1},
{0,0,0,0,0,0,2,0,1},
{0,1,0,0,0,0,0,0,2},
{0,0,0,0,0,0,1,0,1},
{0,0,0,0,0,0,0,0,1},
{0,0,0,0,2,0,0,0,0},
{0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,2,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++){///y座標
for(int j=0;j<9;j++){///x座標
if(go[i][j]==1){///1=黑棋
fill(0);
ellipse(50+j*50,50+i*50,40,40);
}
else if(go[i][j]==2){///2=白棋
fill(255);
ellipse(50+j*50,50+i*50,40,40);
}
}
}
}
(4)完成品
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},
};///要歸0
int N=0;///目前有幾個棋子
void mousePressed(){
int j=(mouseX-25)/50;///y座標
int i=(mouseX-25)/50;///x座標
go[i][j]=(N%2==0)?1:2;///ifN%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+j*50,50+i*50,40,40);
}
}
}
}








沒有留言:
張貼留言