W11-01示範泡泡排序法
youtube影片:
W11-02Pacman吃豆子 (陣列、距離)
畫一隻嘴巴會動的黃色小精靈(參考Week09)
加入鍵盤左右上下鍵操控小精靈移動方向
向上、下移動時,嘴巴的方向還是沒跟著變
增加一個dir嘴巴 右>下>左>上 方向的角度
(0,90,180,270)
增加dir角度方向後,小精靈的嘴巴就能夠隨著
上下左右改變方向了~
豆子的分布示意圖 :
做一個二維陣列,畫出豆子大小、座標分布位置
最後判斷豆子與小精靈的距離,
小精靈接近豆子座標半徑20度內,豆子就被吃掉(消失為0)
int [][]bean={///二維陣列
{1,1,1,1,1, 1,1,1,1,1},
{1,1,1,1,1, 1,1,1,1,1},
{1,1,1,1,1, 1,1,1,1,1},
{1,1,1,1,1, 1,1,1,1,1},
{1,1,1,1,1, 1,1,1,1,1},
{1,1,1,1,1, 1,1,1,1,1},
{1,1,1,1,1, 1,1,1,1,1},
{1,1,1,1,1, 1,1,1,1,1},
{1,1,1,1,1, 1,1,1,1,1},
{1,1,1,1,1, 1,1,1,1,1}
};
void setup()
{
size(400,400);
}
int angle=45,X=100,Y=100,dx=1,dy=0;
int diff=2,dir=0;///差距的值 (1/-1)
void draw(){
background(0);///背景黑
///畫豆子
fill(255);///白色豆子
for(int y=0;y<10;y++){
for(int x=0;x<10;x++){
if(bean[y][x]==0) continue;
ellipse(20+x*40, 20+y*40, 10, 10);
if( dist(X,Y, 20+x*40, 20+y*40)<20 ) bean[y][x]=0;
}///如果小精靈跟豆子座標接近的話(半徑<20),豆子清為0
}
fill(#FAFF00);///小精靈顏色
arc(X,Y,40,40, radians(dir+angle), radians(dir+360-angle), PIE);
///radian圓弧弧度
angle+=diff;
if(angle>60) diff=-2;
if(angle<=0) diff=+2;
X+=dx;Y+=dy;
}
void keyPressed(){//增加方向的角度dir:0,90,180,270
if(keyCode==RIGHT) {dx=+1; dy=0; dir=0;};
if(keyCode==LEFT) {dx=-1; dy=0; dir=180;};
if(keyCode==UP) {dx=0; dy=-1; dir=270;};
if(keyCode==DOWN) {dx=0; dy=+1; dir=90;};
}










沒有留言:
張貼留言