期末作業進度
炸潛水艇
1.畫出背景
void setup()
{
size(800,800);//視窗大小
}
float x=400,y=175;//船隻起始位置
float bombX,bombY,bombVX,bombVY;
void draw()
{
background(#C9E4F0);//天空顏色
fill(#225BD3);rect(0,200,800,1000);//海洋顏色與調整位置
fill(255);ellipse(x,y,200,50);//船隻大小
}
2.畫出砲彈、發射砲彈
void setup()
{
size(800,800);//視窗大小
}
float x=400,y=175;//船隻起始位置
float bombX,bombY,bombVX,bombVY;
boolean shooting=false;
void draw()
{
background(#C9E4F0);//天空顏色
fill(#225BD3);rect(0,200,800,1000);//海洋顏色與調整位置
fill(255);ellipse(x,y,200,50);//船隻大小
if(shooting)
{
bombX+=bombVX;bombY+=bombVY;
ellipse(bombX,bombY,10,10);
}
}
void mousePressed()//滑鼠點擊就發射砲彈
{
bombX=x;bombY=y;
bombVX=0;bombVY=1;
shooting=true;
}
3.砲彈生成數
float []bombX=new float[100];//用陣列計算砲彈生成數和速度
float []bombY=new float[100];
float []bombVX=new float[100];
float []bombVY=new float[100];
void draw()
{
background(#C9E4F0);//天空顏色
fill(#225BD3);rect(0,200,800,1000);//海洋顏色與調整位置
fill(255);ellipse(x,y,200,50);//船隻大小
for(int i=0;i<N;i++)
{
bombY[i]+=bombVY[i];
fill(#555252);ellipse(bombX[i],bombY[i],20,50);
}
}
4.計算砲彈發射數和重置
for(int i=0;i<N;i++)
{
bombY[i]+=bombVY[i];
fill(#555252);ellipse(bombX[i],bombY[i],20,50);
if(bombY[i]>800)
{
for(int k=i;k<N-1;k++)//此迴圈作為回收砲彈用途,陣列從0計算,0...i...N-1,補中間的空洞,需左移補上
{
bombX[k]=bombX[k+1];
bombY[k]=bombY[k+1];
bombVX[k]=bombVX[k+1];
bombVY[k]=bombVY[k+1];
}
N--;
}
}
println(N);
沒有留言:
張貼留言