Week 11
1.泡泡排序法 (從小到大的排序方法!!!)
上學期有教過,但一定忘得差不多了,現在就再來重新回味一下吧!
程式碼:
int [ ]a={9,8,7,6,5,4,3,2,1,0}; void setup(){
size(500,800);
textSize(36);
textAlign(LEFT,TOP);
showArray(y);
}
int y=0;
void showArray(int y){
for(int i=0;i<10;i++){
fill(255); rect(i*50, y, 50,50);
fill(0); text(a[i], i*50, y);
}
}
void draw(){
}
void mousePressed(){
for(int i=0; i<10-1;i++){
if(a[i] > a[i+1]){
int temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
fill(255,0,0,128); rect(i*50, y, 100,50);
}
}
y+=50;
showArray(y);
}
2.1小精靈
進到今天的主角,先來畫個小精靈,再做出它吃豆子的樣子!
如果有不懂的,請看上禮拜的喔
程式碼:
void setup()
{
size(400,400);
}
int X=100,Y=100,angle=45,diff=1; ///angle是角度,diff是讓嘴吧動的變數
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;
}
2.2動動小精靈(不完整版)
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;
if(keyCode==LEFT)dx=-1;
if(keyCode==UP)dy=-1;
if(keyCode==DOWN)dy=+1;
}
2.3動動小精靈(正常版)
程式碼:
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;
}
}
程式講解:
2.3因為在換方向的過程中,小精靈臉的角度沒有變,所以加上了dir來轉變角度。
5.小精靈遊戲
有點難喔,認真看!!
程式碼:
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}, ///豆子的座標 左邊為y,右邊為x, };
int X=100,Y=100,dx=1,dy=0,angle=45,diff=2,dir=0;
void setup() { size(800,800); }
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(40+x*80,40+y*80,10,10); ///半徑+一個框框的長度(800/10)*原本的位置 if(dist(X,Y,40+x*80,40+y*80)<40) bean[y][x]=0; ///豆子距離和小精靈小於半徑就消失 } } ///這是畫豆子的
fill(#6FFFD5); arc(X,Y,80,80,radians(dir+angle),radians(dir+360-angle),PIE); angle+=diff; if(angle>60)diff=-1; if(angle<=0)diff=+1; X+=dx; Y+=dy; }
void keyPressed()
{ background(0); if(keyPressed && keyCode==UP){dy=-1;dx=0;dir=270;} if(keyPressed && keyCode==RIGHT){dx=+1;dy=0;dir=0;} if(keyPressed && keyCode==DOWN){dy=+1;dx=0;dir=90;} if(keyPressed && keyCode==LEFT){dx=-1;dy=0;dir=180;} }






沒有留言:
張貼留言