week 11
step 01-1 先做出6*4的座位格子
用fill(顏色#) 填充田顏色
void setup()
{
size(600,500);
}
void draw()
{
background(255);
for(int i=0;i<4;i++)//左手 i
{
for(int j=0;j<6;j++)//右手j
{
fill(#F5B4B4); rect(j*100,i*100,100,100);
fill(0); text("Hello",j*100+25,i*100+50);
}
}
}
step 01-2 把上一個程式裡面的Hello換成用亂數給數字

void setup()
{
size(600,500);
for(int i=0;i<4;i++)
{
for(int j=0;j<6;j++)
{
value[i][j] = int(random(40));
}
}
}
int [][] value = new int[4][6];
void draw()
{
background(255);
for(int i=0;i<4;i++)//左手 i
{
for(int j=0;j<6;j++)//右手j
{
fill(#F5B4B4); rect(j*100,i*100,100,100);
fill(0); text(value[i][j],j*100+25,i*100+50);
}
}
}
step 01-3 把數字起始職改為10開始 做兩次數字交換 用temp = ? ?= ?? ??=temp 去做
void setup()
{
size(600,500);
for(int i=0;i<4;i++)
{
for(int j=0;j<6;j++)
{
value[i][j] = i*6+j+10;//數字從10開始 數字不重複
}
}
for(int k=0;k<2;k++ )//重覆要做幾次
{
int i=int(random(4)), j=int(random(6));
int i2=int(random(4)),j2=int(random(6));
int temp = value[i][j];
value[i][j] = value[i2][j2];
value[i2][j2] = temp;
}
}
int [][] value = new int[4][6];
void draw()
{
background(255);
for(int i=0;i<4;i++)//左手 i
{
for(int j=0;j<6;j++)//右手j
{
fill(#F5B4B4); rect(j*100,i*100,100,100);
fill(0); text(value[i][j],j*100+25,i*100+50);
}
}
}
step 01-4 作轉場的先前動作
int state = 0;//0表白色狀態 1表紅色狀態 2表藍色狀態
void setup()
{
size(400,400);
}
void draw()
{
if(state==0)
{
background(255);//白色
}
else if(state==1)
{
background(255,0,0);//第1關 紅色
}
else if(state==2)
{
background(0,0,255);//第2關 藍色
}
}
step 02-1 增加一個可以換場景的按鍵 按下去 進到下一個關卡
int state = 0;//0表白色狀態 1表紅色狀態 2表藍色狀態
void setup()
{
size(400,400);
textSize(50);
}
void draw()
{
if(state==0)
{
background(255);//白色
fill(0); text("Click to Start",80,200);
}
else if(state==1)
{
background(255,0,0);//第1關 紅色
}
else if(state==2)
{
background(0,0,255);//第2關 藍色
}
}
void mousePressed()
{
if(state==0) state=1;//滑鼠按下去 進到下一關
}
step 02-2 做兩個正方形 當灰色正方形完全和白色正方形重疊時 直接進到下一關畫面
int state = 0;//0表白色狀態 1表紅色狀態 2表藍色狀態
void setup()
{
size(400,400);
textSize(50);
}
int x = 50,y = 50;
void draw()
{
if(state==0)
{
background(255);//白色
fill(0); text("Click to Start",80,200);
}
else if(state==1)
{
background(255,0,0);//第1關 紅色
fill(255); rect(300,50,50,50);
fill(128); rect(x,y,50,50);
}
else if(state==2)
{
background(0,0,255);//第2關 藍色
}
}
void mousePressed()
{
if(state==0) state=1;
}
void keyPressed()
{
if(state==1 && keyCode==RIGHT)
{
x += 10;//往右走10步
if(x==300) state=2;//如果兩個正方形完全疊合 進到下一關
}
}
step 02-3 增加一個倒數計時 當時間等於0時 會跳回第一關的畫面
int state = 0;//0表白色狀態 1表紅色狀態 2表藍色狀態
void setup()
{
size(400,400);
textSize(50);
}
int x = 50,y = 50, t = 100;
void draw()
{
if(state==0)
{
background(255);//白色
fill(0); text("Click to Start",80,200);
x = 50;
}
else if(state==1)
{
background(255,0,0);//第1關 紅色
fill(255); rect(300,50,50,50);
fill(128); rect(x,y,50,50);
t = 100;
}
else if(state==2)
{
background(0,0,255);//第2關 藍色
fill(255,255,0); text("Wait" +t,80,200);
t--;//倒數計時
if(t==0) state = 0;//時間等於0 回到第一關畫面
}
}
void mousePressed()
{
if(state==0) state=1;
}
void keyPressed()
{
if(state==1 && keyCode==RIGHT)
{
x += 10;//往右走10步
if(x==300) state=2;//如果兩個正方形完全疊合 進到下一關
}
}
step 02-4 投籃劃出拋物線 但會盤到看不見的地方
PImage imgRack;
void setup()
{
size(300,300);
imgRack = loadImage("rack.jpg");
}
void draw()
{
background(255);
image(imgRack,0,0);
if(mousePressed)
{
fill(255); ellipse(posX,posY,20,20);
line(posX,posY,mouseX,mouseY);
fill(#FFA652); ellipse(mouseX,mouseY,20,20);
}
}
float posX =-100,posY = -100;//一開始 求不會出現
void mousePressed()
{
posX = mouseX;
posY = mouseY;
}
step 03-1 完成投籃機
PImage imgRack;
void setup()
{
size(300,300);
imgRack = loadImage("rack.jpg");
}
void draw()
{
background(255);
image(imgRack,0,0);
if(flying)
{
x += vx;
y += vy;
vy += 0.98;
}
else
{
x = mouseX;
y = mouseY;
if(mousePressed)
{
fill(255); ellipse(posX,posY,20,20);
line(posX,posY,x,y);
}
}
fill(#FFA652);ellipse(x,y,20,20);
}
boolean flying = false;
float x,y,vx,vy;
float posX =-100,posY = -100;//一開始 求不會出現
void mousePressed()
{
x = posX = mouseX;
y = posY = mouseY;
flying = false;
}
void mouseReleased()
{
vx = posX - mouseX;
vy = posY - mouseY;
flying = true;
}
step 03-2 如果遊戲結束的話 要怎麼暫停
PImage imgRack;
void setup()
{
size(300,300);
imgRack = loadImage("rack.jpg");
}
boolean gameOver=false;
void keyPressed()
{
gameOver = true;
}
void draw()
{
background(255);
image(imgRack,0,0);
if(flying)
{
if( ! gameOver )
{
x += vx;
y += vy;
vy += 0.98;
}
}
else
{
x = mouseX;
y = mouseY;
if(mousePressed)
{
fill(255); ellipse(posX,posY,20,20);
line(posX,posY,x,y);
}
}
fill(#FFA652);ellipse(x,y,20,20);
}
boolean flying = false;
float x,y,vx,vy;
float posX =-100,posY = -100;//一開始 求不會出現
void mousePressed()
{
x = posX = mouseX;
y = posY = mouseY;
flying = false;
}
void mouseReleased()
{
vx = posX - mouseX;
vy = posY - mouseY;
flying = true;
}
step 03-3 謝謝老師說明踩地雷大概的想法怎麼寫
沒有留言:
張貼留言