因為程式碼太長,所以就不寫上來了
接續上次小精靈的進度,首先先把小精靈的本體畫出來吧
程式碼:
void setup(){
size(400,400);
}
int X=100,Y=100,angle=45,diff=1;
void draw(){
background(0);
arc(X,Y,80,80,radians(angle),radians(360-angle),PIE);
angle+=diff;
if(angle>60)diff=-1;
if(angle<0)diff=+1;
}
做好小精靈的本體之後,再來就是要讓它動起來。小精靈的移動方式很簡單,就是上下左右。所以我們只需要讓他能夠依據方向鍵的方向移動就好了。所以我們要設定鍵盤的程式碼
程式碼:
void setup(){
size(400,400);
}
int X=100,Y=100,dx=1,dy=0,angle=45,diff=2;
void draw(){
background(0);
arc(X,Y,80,80,radians(angle),radians(360-angle),PIE);
angle+=diff;
if(angle>60)diff=-2;
if(angle<0)diff=+2;
X+=dx;Y+=dy;
}
void keyPressed(){
if(keyCode==RIGHT){ dx=+1;dy=0;}
if(keyCode==LEFT){ dx=-1;dy=0;}
if(keyCode==UP){ dx=0;dy=-1;}
if(keyCode==DOWN){ dx=0;dy=+1;}
}
現在小精靈可以動了,但是他不會換方向,整隻平移的,這樣不是小精靈。所以要讓他能夠換方向。讓她換方向的方式就是在角度上動手腳
程式碼:
void setup(){
size(400,400);
}
int X=100,Y=100,dx=1,dy=0,angle=45,diff=2,dir=0;
void draw(){
background(0);
arc(X,Y,80,80,radians(dir+angle),radians(dir+360-angle),PIE);
angle+=diff;
if(angle>60)diff=-2;
if(angle<0)diff=+2;
X+=dx;Y+=dy;
}
void keyPressed(){
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;}
}
小精靈的核心就是吃豆子,利用陣列的方式克以上豆子整齊的排在那裏。用陣列畫出一個個的白色小圓。順便幫小精靈弄成黃色。最後讓小精靈經過的時候把豆子刪掉就好了。
程式碼:
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 X=100,Y=100,dx=1,dy=0,angle=45,diff=2,dir=0;
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;
}
}
fill(#FFCF0D);arc(X,Y,40,40,radians(dir+angle),radians(dir+360-angle),PIE);
angle+=diff;
if(angle>60)diff=-2;
if(angle<0)diff=+2;
X+=dx;Y+=dy;
}
void keyPressed(){
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;}
}





沒有留言:
張貼留言