2018年10月4日 星期四

week04 互動技術筆記@

1.加入文字

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++;
}

沒有留言:

張貼留言