Week04
多災多難的一個禮拜,報告趕不完,又要推甄,又要專研,最可悲的是電腦不聽話螢幕花了我6500嗚嗚,又要上課,好累
1.1今天第一項作業畫出一直跑的斜線,往右上方一直延續下去~~
程式碼:
void setup(){
size(500,500);
}
int x=250,y=250;
void draw(){
ellipse(x,y,10,10);
x=x+1;
y=y-1;
}
void setup(){
size(500,500);
}
int x=250,y=250;
void draw(){
ellipse(x,y,10,10);
x=x+1;
y=y-1;
}
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;
if(y>500) vy=-vy;
}
1.3再來做出彈珠台的雛型吧
程式碼:
void setup(){
size(500,500);
}
float x=250,y=250; ///
float vx=1.0,vy=-0.5;
void draw(){
background(#FFFFF2);
int boardX =mouseX;
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;
}
2.1 完整版的彈珠台~~
程式碼:
void setup(){
size(500,500);
}
float x=250,y=250; /// 變數位置精細
float vx=2.0,vy=-2.5;
float boardX,boardY=470,boardW=100,boardH=20;
void draw(){
boardX =mouseX-boardX/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; ///mouse的移動速度
}
if(mousePressed && mouseButton ==LEFT) boardW*=1.01; //每天多努力一點
if(mousePressed && mouseButton == RIGHT)boardW*=0.99; ///每天多混1%
}
2.2 因為做完了彈珠台,來畫個象棋吧!!首先畫很多個圈圈
程式碼:
void setup(){
size(500,500);
}
void draw(){
for(int x=50;x<=450;x+=50){
for(int y=50;y<=450;y+=50){
ellipse(x,y,50,50);
}
}
}
2.3 填充黑子程式碼:
void setup(){
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,1},
{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);
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,0,0,1},
{0,1,0,0,0,0,0,0,1},
{0,0,0,0,0,0,1,0,1},
{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,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++){ ///左手i,對應y座標
for(int j=0;j<9;j++){ ///右手j,對應x座標
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);
}
}
}
}
程式碼:
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+j*50,50+i*50,40,40);
}
}
}
}



沒有留言:
張貼留言