
textSize(80); //文字大小
fill(0,0,0); //顏色 fill(R,G,B)
text("start",100,500); //要顯示的文字 text("text",文字X座標,文字Y座標)
2.1發射子彈(單發)

利用布林變數決定子彈是否出現
if(flying)
{
ellipse(bulletX,bulletY,30,30);
bulletX+=3;
}
float bulletX=100,bulletY=100;
boolean flying=false;
void keyPressed(){ //如果鍵盤按下,布林值為真
flying=true;
}
一定要清背景,不然會有殘影
2.2連發子彈(1)

利用布林陣列決定多顆子彈是否出現
for(int i=0;i<bulletN;i++)
{
if(flying[i])
{
ellipse(bulletX[i],bulletY[i],30,30);
bulletX[i]+=3;
}
}
float []bulletX=new float[100];
float []bulletY=new float[100];
boolean []flying=new boolean[100];
int bulletN=0;
void keyPressed(){
flying[bulletN]=true;
bulletX[bulletN]=100; bulletY[bulletN]=100;
bulletN++; //換下顆子彈
}
利用陣列發射有缺點,
當子彈編號超過宣告陣列大小時,
程式就會出錯
2.3連發子彈(2)

2.2用鍵盤發射子彈,但不能改變子彈座標
現在用滑鼠發射子彈,並用滑鼠的座標當作子彈座標
PImage b,bg;
void setup(){
size(800,600);
b=loadImage("b.png");
bg=loadImage("bg.jpg");
imageMode(CENTER); //圖片置中,中心點不會跑掉
}
void draw(){
image(bg,width/2,height/2,width,height);
//width/2,height/2,width,height是為了讓背景符合視窗大小
image(b,mouseX,mouseY,100,100);
for(int i=0;i<bulletN;i++)
{
if(flying[i])
{
image(b,bulletX[i],bulletY[i],100,100);
bulletX[i]+=3;
}
}
}
float []bulletX=new float[100];
float []bulletY=new float[100];
boolean []flying=new boolean[100];
int bulletN=0;
void mousePressed(){
flying[bulletN]=true;
bulletX[bulletN]=mouseX; bulletY[bulletN]=mouseY;
bulletN++;
}
2.4連發子彈(3)

利用上週學的速度,改變子彈移動速度
void draw(){
image(bg,width/2,height/2,width,height);
image(b,mouseX,mouseY,100,100);
for(int i=0;i<bulletN;i++)
{
if(flying[i])
{
image(b,bulletX[i],bulletY[i],100,100);
bulletX[i]+=bulletVX[i]; //位址加上速度
}
}
}
float []bulletX=new float[100];
float []bulletY=new float[100];
float []bulletVX=new float[100]; //速度陣列
boolean []flying=new boolean[100];
int bulletN=0;
void mousePressed(){
flying[bulletN]=true;
bulletX[bulletN]=mouseX;
bulletY[bulletN]=mouseY;
bulletVX[bulletN]+=3; //讓速度變快
bulletN++;
}
沒有留言:
張貼留言