2020年3月27日 星期五

Hello World_Week04

20200327 發射子彈&陣列


一開始先複習了之前教的按滑鼠讓球跟著移動



PImage bg;//使用照片bg
int []x={0,0,0,0,0};//有5個位置放球的x坐標
int []y={0,0,0,0,0};//有5個位置放球的y坐標
void setup()
{
  size(800,450);//設定背景大小(尺寸跟背景照片的大小要一樣)
  bg=loadImage("bg.png");//把bg.png(照片)拿來當背景
}
void draw()
{
  background(bg);//背景設為bg
  circle(x[0],y[0],40);//在x[0],y[0]的位置畫一個大小40的球
}
void mousePressed()
{
  x[0]=mouseX;//x坐標=滑鼠的x坐標
  y[0]=mouseY;//y坐標=滑鼠的y坐標
}

--------------------------------------------------------------------------------------------------------------------------

再來教了變出5顆球的方法(但是只能點5次,超過的話程式就會當掉)



PImage bg;//使用照片bg
int []x={0,0,0,0,0};//有5個位置放球的x坐標
int []y={0,0,0,0,0};//有5個位置放球的y坐標
int n=0;//一開始沒有球
void setup()
{
  size(800,450);//設定背景大小(尺寸跟背景照片的大小要一樣)
  bg=loadImage("bg.png");//把bg.png(照片)拿來當背景
}
void draw()
{
  background(bg);//背景設為bg
  for(int i=0;i<5;i++)
  {
    circle(x[i],y[i],40);//在x[i],y[i]的位置畫一個大小40的球
  }
}
void mousePressed()
{
  x[n]=mouseX;//x坐標=滑鼠的x坐標
  y[n]=mouseY;//y坐標=滑鼠的y坐標
  n++;//多一顆球
}

--------------------------------------------------------------------------------------------------------------------------

為了避免程式當掉,要有一個保護機制(點超過5次就會停止)




PImage bg;//使用照片bg
int []x={0,0,0,0,0};//有5個位置放球的x坐標
int []y={0,0,0,0,0};//有5個位置放球的y坐標
int n=0;//一開始沒有球
void setup()
{
  size(800,450);//設定背景大小(尺寸跟背景照片的大小要一樣)
  bg=loadImage("bg.png");//把bg.png(照片)拿來當背景
}
void draw()
{
  background(bg);//背景設為bg
  for(int i=0;i<5;i++)
  {
    circle(x[i],y[i],40);//在x[i],y[i]的位置畫一個大小40的球
  }
}
void mousePressed()
{
  if(n>=5) return;//超過5顆球的時候停止(避免程式當掉)
  x[n]=mouseX;//x坐標=滑鼠的x坐標
  y[n]=mouseY;//y坐標=滑鼠的y坐標
  n++;//多一顆球
}

--------------------------------------------------------------------------------------------------------------------------

再來是讓球重複使用的方法



PImage bg;//使用照片bg
int []x={0,0,0,0,0};//有5個位置放球的x坐標
int []y={0,0,0,0,0};//有5個位置放球的y坐標
int n=0;//一開始沒有球
void setup()
{
  size(800,450);//設定背景大小(尺寸跟背景照片的大小要一樣)
  bg=loadImage("bg.png");//把bg.png(照片)拿來當背景
}
void draw()
{
  background(bg);//背景設為bg
  for(int i=0;i<5;i++)
  {
    circle(x[i],y[i],40);//在x[i],y[i]的位置畫一個大小40的球
  }
}
void mousePressed()
{
  x[n]=mouseX;//x坐標=滑鼠的x坐標
  y[n]=mouseY;//y坐標=滑鼠的y坐標
  n=(n+1)%5;//把球重複使用(第6次會拿第1顆來用)
}
--------------------------------------------------------------------------------------------------------------------------

再來要讓球往上飄



PImage bg;//使用照片bg
int []x={0,0,0,0,0};//有5個位置放球的x坐標
int []y={0,0,0,0,0};//有5個位置放球的y坐標
int n=0;//一開始沒有球
void setup()
{
  size(800,450);//設定背景大小(尺寸跟背景照片的大小要一樣)
  bg=loadImage("bg.png");//把bg.png(照片)拿來當背景
}
void draw()
{
  background(bg);//背景設為bg
  for(int i=0;i<5;i++)
  {
    circle(x[i],y[i],40);//在x[i],y[i]的位置畫一個大小40的球
    y[i]--;//y坐標-1 讓球往上跑(螢幕頂端y=0)
  }
}
void mousePressed()
{
  x[n]=mouseX;//x坐標=滑鼠的x坐標
  y[n]=mouseY;//y坐標=滑鼠的y坐標
  n=(n+1)%5;//把球重複使用(第6次會拿第1顆來用)
}

--------------------------------------------------------------------------------------------------------------------------

再來讓球變大(按住滑鼠可以讓球愈來愈大)



PImage bg;//使用照片bg
int []x={0,0,0,0,0};//有5個位置放球的x坐標
int []y={0,0,0,0,0};//有5個位置放球的y坐標
int []r={5,5,5,5,5};//有5個位置放球的半徑r
int n=0;//一開始沒有球
void setup()
{
  size(800,450);//設定背景大小(尺寸跟背景照片的大小要一樣)
  bg=loadImage("bg.png");//把bg.png(照片)拿來當背景
}
int now=0;//一開始now=0
void draw()
{
  background(bg);//背景設為bg
  for(int i=0;i<5;i++)
  {
    circle(x[i],y[i],r[i]);//在x[i],y[i]的位置畫一個大小r[i]的球
    y[i]--;//y坐標-1 讓球往上跑(螢幕頂端y=0)
  }
  if(mousePressed) r[now]++;//按住滑鼠時,球的半徑+1(加得愈多,變大的速度愈快)
}
void mousePressed()
{
  x[n]=mouseX;//x坐標=滑鼠的x坐標
  y[n]=mouseY;//y坐標=滑鼠的y坐標
  r[n]=5;//一開始球的半徑是5
  now=n;//現在用的球是n
  n=(n+1)%5;//把球重複使用(第6次會拿第1顆來用)
}

--------------------------------------------------------------------------------------------------------------------------

再來讓球變成綠色的




PImage bg;//使用照片bg
//宣告陣列的新方法
int []x=new int[1000];//有1000個位置放球的x坐標
int []y=new int[1000];//有1000個位置放球的y坐標
int []r=new int[1000];//有1000個位置放球的半徑r
color []c=new color[1000];//有1000個位置放球的顏色color
int n=0;//一開始沒有球
void setup()
{
  size(800,450);//設定背景大小(尺寸跟背景照片的大小要一樣)
  bg=loadImage("bg.png");//把bg.png(照片)拿來當背景
}
int now=0;//一開始now=0
void draw()
{
  background(bg);//背景設為bg
  for(int i=0;i<5;i++)
  {
    fill(c[i]);//用c[i](顏色)填滿
    circle(x[i],y[i],r[i]);//在x[i],y[i]的位置畫一個大小r[i]的球
    y[i]--;//y坐標-1 讓球往上跑(螢幕頂端y=0)
  }
  if(mousePressed) r[now]++;//按住滑鼠時,球的半徑+1(加得愈多,變大的速度愈快)
}
void mousePressed()
{
  x[n]=mouseX;//x坐標=滑鼠的x坐標
  y[n]=mouseY;//y坐標=滑鼠的y坐標
  r[n]=5;//一開始球的半徑是5
  c[n]=color(0,255,0);//把c[n]設為綠色
  now=n;//現在用的球是n
  n=(n+1)%5;//把球重複使用(第6次會拿第1顆來用)
}

--------------------------------------------------------------------------------------------------------------------------

再來讓球可以自己隨機改變顏色!



PImage bg;//使用照片bg
//宣告陣列的新方法
int []x=new int[1000];//有1000個位置放球的x坐標
int []y=new int[1000];//有1000個位置放球的y坐標
int []r=new int[1000];//有1000個位置放球的半徑r
color []c=new color[1000];//有1000個位置放球的顏色color
int n=0;//一開始沒有球
void setup()
{
  size(800,450);//設定背景大小(尺寸跟背景照片的大小要一樣)
  bg=loadImage("bg.png");//把bg.png(照片)拿來當背景
}
int now=0;//一開始now=0
void draw()
{
  background(bg);//背景設為bg
  for(int i=0;i<5;i++)
  {
    fill(c[i]);//用c[i](顏色)填滿
    circle(x[i],y[i],r[i]);//在x[i],y[i]的位置畫一個大小r[i]的球
    y[i]--;//y坐標-1 讓球往上跑(螢幕頂端y=0)
  }
  if(mousePressed) r[now]++;//按住滑鼠時,球的半徑+1(加得愈多,變大的速度愈快)
}
void mousePressed()
{
  x[n]=mouseX;//x坐標=滑鼠的x坐標
  y[n]=mouseY;//y坐標=滑鼠的y坐標
  r[n]=5;//一開始球的半徑是5
  c[n]=color(random(255),random(255),random(255));//把c[n]設為隨機的顏色
  now=n;//現在用的球是n
  n=(n+1)%5;//把球重複使用(第6次會拿第1顆來用)
}

--------------------------------------------------------------------------------------------------------------------------

今天也複習了陣列




int []a={1,0,1,0};//宣告陣列a
size(400,100);//設定背景大小(寬,高)
for(int i=0;i<4;i++)
{
  if(a[i]==1) fill(0,255,0);//用綠色填滿
  else fill(128);//用灰色填滿
  rect(i*100,0,100,100);//畫一個長方形(x坐標,y坐標,寬,高)
}

--------------------------------------------------------------------------------------------------------------------------

後來做了一個更大的2D陣列!


//左手是i,右手是j
//宣告陣列a(二維陣列)
int [][]a={
  {1,1,1,1,1},
  {0,0,0,1,0},
  {0,0,1,0,0},
  {0,1,0,0,0},
  {1,1,1,1,1} };
size(500,500);//設定背景大小
for(int i=0;i<5;i++)
{
  for(int j=0;j<5;j++)
  {
    if(a[i][j]==1) fill(0,255,0);//用綠色填滿
    else fill(128);//用灰色填滿
    rect(j*100,i*100,100,100);//畫一個長方形(j對應x坐標,i對應y坐標)
  }
}

--------------------------------------------------------------------------------------------------------------------------

心得


老師上星期是教用鍵盤控制球的方法,這星期教了用滑鼠控制球的方法,而且還複習了陣列,經過這次的複習讓我對陣列更有概念了!之前對陣列的樣子還是有點模糊,但這次直接用圖把陣列的樣子畫出來就更清楚了!

沒有留言:

張貼留言