2024年10月21日 星期一

week07 11160153

 (1)

//week07_1_arras01_background_fill_stroke_ellipse_rect
void setup() {
  size(500, 400);
}
float x=250, y=200;
void draw() {
  background(215, 184, 200);
  fill(167, 167, 175);
  stroke(110, 110, 113);
  strokeWeight(4);
  rect(240, 160, 20, 20);//砲管,砲塔

  fill(204, 102, 156);
  stroke(125, 84, 105);
  strokeWeight(3);
  ellipse(x, y, 55, 55);//圓形的身體
  line(x, y, mouseX, mouseY);
}


(2)
//week07_2_arras02_atan_cos_sin
void setup() {
  size(500, 400);
}
float x=250, y=200;
void draw() {
  background(215, 184, 200);  
  float dx=mouseX-x,dy=mouseY-y;
  float a=atan2(dy,dx);
  strokeWeight(20);
  line(x,y,x+cos(a)*40,y+sin(a)*40);
  
  
  fill(167, 167, 175);
  stroke(110, 110, 113);
  strokeWeight(4);
  rect(240, 160, 20, 20);//砲管,砲塔

  fill(204, 102, 156);
  stroke(125, 84, 105);
  strokeWeight(3);
  ellipse(x, y, 55, 55);//圓形的身體
  ///line(x, y, mouseX, mouseY);
  
  
}


(3)
//week07_3_arras03_atan_angle_rotate_translate
void setup() {
  size(500, 400);
}
float x=250, y=200;
void draw() {
  background(215, 184, 200);  
  float dx=mouseX-x,dy=mouseY-y;
  float a=atan2(dy,dx);
  line(x,y,mouseX,mouseY);
  myTank(x,y,a);
}
void myTank(float x,float y,float a){
  translate(x,y);
  rotate(a);//旋轉
  fill(167, 167, 175);
  stroke(110, 110, 113);
  strokeWeight(4);
  rect(20, -10, 20, 20);//砲管,砲塔

  fill(204, 102, 156);
  stroke(125, 84, 105);
  strokeWeight(3);
  ellipse(0, 0, 55, 55);//圓形的身體
}  
(4)
//week07_4_arras04_background_for_line_live
void setup() {
  size(500, 400);
}
void keyPressed() {
  if (keyCode==RIGHT)x+=1;
  if (keyCode==LEFT)x-=1;
  if (keyCode==UP)y-=1;
  if (keyCode==DOWN)y+=1;
}
float x=250, y=200;
void draw() {
  ///background(215, 184, 200);
  ///stroke(211,180,196);
  background(219);
  stroke(210);
  strokeWeight(1);
  for (int i=0; i<10; i++) {
    line(0, i*100, 500, i*30);
    line(i*30, 0, i*30, 500);
  }
  float dx=mouseX-x, dy=mouseY-y;
  float a=atan2(dy, dx);
  line(x, y, mouseX, mouseY);
  myTank(x, y, a);
}
void myTank(float x, float y, float a) {
  translate(x, y);
  rotate(a);//旋轉
  fill(167, 167, 175);
  stroke(110, 110, 113);
  strokeWeight(4);
  rect(20, -10, 20, 20);//砲管,砲塔

  fill(204, 102, 156);
  stroke(125, 84, 105);
  strokeWeight(3);
  ellipse(0, 0, 55, 55);//圓形的身體
}

(5)
//week07_5_arras05_correct move
void setup() {
  size(500, 400);
}
void keyPressed() {
  if (keyCode==RIGHT)x+=1;
  if (keyCode==LEFT)x-=1;
  if (keyCode==UP)y-=1;
  if (keyCode==DOWN)y+=1;
}
float x=250, y=200;
void draw() {
  ///background(215, 184, 200);
  ///stroke(211,180,196);
  background(219);
  translate(-x, -y);
  translate(width/2, height/2);//把0,0移畫面中心
  float mx=mouseX+x-width/2, my=mouseY+y-height/2;
  ellipse(mx, my, 8, 8);
  stroke(210);
  strokeWeight(1);
  for (int i=0; i<10; i++) {
    line(0, i*100, 500, i*30);
    line(i*30, 0, i*30, 500);
  }
  float dx=mx-x, dy=my-y;
  float a=atan2(dy, dx);
  line(x, y, mx, my);
  myTank(x, y, a);
}
void myTank(float x, float y, float a) {
  translate(x, y);
  rotate(a);//旋轉
  fill(167, 167, 175);
  stroke(110, 110, 113);
  strokeWeight(4);
  rect(20, -10, 20, 20);//砲管,砲塔

  fill(204, 102, 156);
  stroke(125, 84, 105);
  strokeWeight(3);
  ellipse(0, 0, 55, 55);//圓形的身體
}

(6)
//week07_6_arras06_vx_vy_void_keyPressed_void_keyReleased_void_keyReleased_void_draw
void setup() {
  size(500, 400);
}
void keyPressed() {//按下去時,會有速度,放開後,速度要變成0
  if (keyCode==RIGHT)vx=1;//x+=1;
  if (keyCode==LEFT)vx=-1;//x-=1;
  if (keyCode==UP)vy=-1;//y-=1;
  if (keyCode==DOWN)vy=1;//y+=1;
}
void keyReleased() {
  if (keyCode==LEFT||keyCode==RIGHT)vx=0;
  if (keyCode==UP||keyCode==DOWN)vy=0;
}
float x=250, y=200, vx=0, vy=0;
void draw() {
  x+=vx;
  y+=vy;
  ///background(215, 184, 200);
  ///stroke(211,180,196);
  background(219);
  translate(-x, -y);
  translate(width/2, height/2);//把0,0移畫面中心
  float mx=mouseX+x-width/2, my=mouseY+y-height/2;
  ellipse(mx, my, 8, 8);
  stroke(210);
  strokeWeight(1);
  for (int i=0; i<10; i++) {
    line(0, i*100, 500, i*30);
    line(i*30, 0, i*30, 500);
  }
  float dx=mx-x, dy=my-y;
  float a=atan2(dy, dx);
  line(x, y, mx, my);
  myTank(x, y, a);
}
void myTank(float x, float y, float a) {
  translate(x, y);
  rotate(a);//旋轉
  fill(167, 167, 175);
  stroke(110, 110, 113);
  strokeWeight(4);
  rect(20, -10, 20, 20);//砲管,砲塔

  fill(204, 102, 156);
  stroke(125, 84, 105);
  strokeWeight(3);
  ellipse(0, 0, 55, 55);//圓形的身體
}

(7)
//week07_7_angle_bulletx_bullety_bulletvx,bulletvy
void setup() {
  size(500, 400);
}
void keyPressed() {//按下去時,會有速度,放開後,速度要變成0
  if (keyCode==RIGHT)vx=1;//x+=1;
  if (keyCode==LEFT)vx=-1;//x-=1;
  if (keyCode==UP)vy=-1;//y-=1;
  if (keyCode==DOWN)vy=1;//y+=1;
}
void keyReleased() {
  if (keyCode==LEFT||keyCode==RIGHT)vx=0;
  if (keyCode==UP||keyCode==DOWN)vy=0;
}
float x=250, y=200, vx=0, vy=0;
void draw() {
  x+=vx;
  y+=vy;
  ///background(215, 184, 200);
  ///stroke(211,180,196);
  background(219);
  translate(-x, -y);
  translate(width/2, height/2);//把0,0移畫面中心
  float mx=mouseX+x-width/2, my=mouseY+y-height/2;
  ellipse(mx, my, 8, 8);
  stroke(210);
  strokeWeight(1);
  for (int i=0; i<10; i++) {
    line(0, i*100, 500, i*30);
    line(i*30, 0, i*30, 500);
  }
  float dx=mx-x, dy=my-y;
  float a=atan2(dy, dx);
  angle=a;
  line(x, y, mx, my);
  pushMatrix();
  myTank(x, y, a);
  popMatrix();
  if(bulletVX!=0&&bulletVY!=0){
    bulletX+=bulletVX;
    bulletY+=bulletVY;
  ellipse(bulletX,bulletY,20,20);
 }
}
float angle,bulletX=0,bulletY=0,bulletVX=-1,bulletVY=0;
void mousePressed(){
  bulletX=x;
  bulletY=y;
  bulletVX=cos(angle);
  bulletVY=sin(angle);
}  
void myTank(float x, float y, float a) {
  translate(x, y);
  rotate(a);//旋轉
  fill(167, 167, 175);
  stroke(110, 110, 113);
  strokeWeight(4);
  rect(20, -10, 20, 20);//砲管,砲塔

  fill(204, 102, 156);
  stroke(125, 84, 105);
  strokeWeight(3);
  ellipse(0, 0, 55, 55);//圓形的身體
}

(8)
//week07_8_arras08_array_many_bullets
void setup() {
  size(500, 400);
}
void keyPressed() {//按下去時,會有速度,放開後,速度要變成0
  if (keyCode==RIGHT)vx=1;//x+=1;
  if (keyCode==LEFT)vx=-1;//x-=1;
  if (keyCode==UP)vy=-1;//y-=1;
  if (keyCode==DOWN)vy=1;//y+=1;
}
void keyReleased() {
  if (keyCode==LEFT||keyCode==RIGHT)vx=0;
  if (keyCode==UP||keyCode==DOWN)vy=0;
}
float x=250, y=200, vx=0, vy=0;
void draw() {
  x+=vx;
  y+=vy;
  ///background(215, 184, 200);
  ///stroke(211,180,196);
  background(219);
  translate(-x, -y);
  translate(width/2, height/2);//把0,0移畫面中心
  float mx=mouseX+x-width/2, my=mouseY+y-height/2;
  ellipse(mx, my, 8, 8);
  stroke(210);
  strokeWeight(1);
  for (int i=0; i<30; i++) {
    line(0, i*30, 500, i*30);
    line(i*30, 0, i*30, 500);
  }
  float dx=mx-x, dy=my-y;
  float a=atan2(dy, dx);
  angle=a;
  line(x, y, mx, my);
  pushMatrix();
  myTank(x, y, a);
  popMatrix();
  for (int i=0; i<bulletN; i++) {
    bulletX[i]+=bulletVX[i];
    bulletY[i]+=bulletVY[i];
    ellipse(bulletX[i], bulletY[i], 20, 20);
  }
}
float angle;
int bulletN=0;
float[]bulletX=new float[100];
float[]bulletY=new float[100];
float[]bulletVX=new float[100];
float[]bulletVY=new float[100];
void mousePressed() {
  int i=bulletN;
  bulletX[i]=x;
  bulletY[i]=y;
  bulletVX[i]=cos(angle);
  bulletVY[i]=sin(angle);
  bulletN++;
}
void myTank(float x, float y, float a) {
  translate(x, y);
  rotate(a);//旋轉
  fill(167, 167, 175);
  stroke(110, 110, 113);
  strokeWeight(4);
  rect(20, -10, 20, 20);//砲管,砲塔

  fill(204, 102, 156);
  stroke(125, 84, 105);
  strokeWeight(3);
  ellipse(0, 0, 55, 55);//圓形的身體
}

(9)
//week07_9_arras09_recycle_bullet_move_right_to_left
void setup() {
  size(500, 400);
}
void keyPressed() {//按下去時,會有速度,放開後,速度要變成0
  if (keyCode==RIGHT)vx=1;//x+=1;
  if (keyCode==LEFT)vx=-1;//x-=1;
  if (keyCode==UP)vy=-1;//y-=1;
  if (keyCode==DOWN)vy=1;//y+=1;
}
void keyReleased() {
  if (keyCode==LEFT||keyCode==RIGHT)vx=0;
  if (keyCode==UP||keyCode==DOWN)vy=0;
}
float x=250, y=200, vx=0, vy=0;
void draw() {
  x+=vx;
  y+=vy;
  ///background(215, 184, 200);
  ///stroke(211,180,196);
  background(219);
  translate(-x, -y);
  translate(width/2, height/2);//把0,0移畫面中心
  float mx=mouseX+x-width/2, my=mouseY+y-height/2;
  ellipse(mx, my, 8, 8);
  stroke(210);
  strokeWeight(1);
  for (int i=0; i<30; i++) {
    line(0, i*30, 500, i*30);
    line(i*30, 0, i*30, 500);
  }
  float dx=mx-x, dy=my-y;
  float a=atan2(dy, dx);
  angle=a;
  line(x, y, mx, my);
  pushMatrix();
  myTank(x, y, a);
  popMatrix();
  for (int i=0; i<bulletN; i++) {
    bulletX[i]+=bulletVX[i];
    bulletY[i]+=bulletVY[i];
    ellipse(bulletX[i], bulletY[i], 20, 20);
  }
}
float angle;
int bulletN=0;
float[]bulletX=new float[100];
float[]bulletY=new float[100];
float[]bulletVX=new float[100];
float[]bulletVY=new float[100];
void mousePressed() {
  int i=bulletN;
  bulletX[i]=x;
  bulletY[i]=y;
  bulletVX[i]=cos(angle);
  bulletVY[i]=sin(angle);
  bulletN++;
  if (bulletN==100) {
    for (int k=0; k<50; k++) {
      bulletX[k]=bulletX[k+50];
      bulletY[k]=bulletY[k+50];
      bulletVX[k]=bulletVX[k+50];
      bulletVY[k]=bulletVY[k+50];
    }
    bulletN=50;
  }
  println(bulletN);
}
void myTank(float x, float y, float a) {
  translate(x, y);
  rotate(a);//旋轉
  fill(167, 167, 175);
  stroke(110, 110, 113);
  strokeWeight(4);
  rect(20, -10, 20, 20);//砲管,砲塔

  fill(204, 102, 156);
  stroke(125, 84, 105);
  strokeWeight(3);
  ellipse(0, 0, 55, 55);//圓形的身體
}

(10)//week07_10_arras10_bullet_for_timeout
void setup() {
  size(500, 400);
}
void keyPressed() {//按下去時,會有速度,放開後,速度要變成0
  if (keyCode==RIGHT)vx=1;//x+=1;
  if (keyCode==LEFT)vx=-1;//x-=1;
  if (keyCode==UP)vy=-1;//y-=1;
  if (keyCode==DOWN)vy=1;//y+=1;
}
void keyReleased() {
  if (keyCode==LEFT||keyCode==RIGHT)vx=0;
  if (keyCode==UP||keyCode==DOWN)vy=0;
}
float x=250, y=200, vx=0, vy=0;
void draw() {
  x+=vx;
  y+=vy;
  ///background(215, 184, 200);
  ///stroke(211,180,196);
  background(219);
  translate(-x, -y);
  translate(width/2, height/2);//把0,0移畫面中心
  float mx=mouseX+x-width/2, my=mouseY+y-height/2;
  ellipse(mx, my, 8, 8);
  stroke(210);
  strokeWeight(1);
  for (int i=0; i<30; i++) {
    line(0, i*30, 500, i*30);
    line(i*30, 0, i*30, 500);
  }
  float dx=mx-x, dy=my-y;
  float a=atan2(dy, dx);
  angle=a;
  line(x, y, mx, my);
  pushMatrix();
  myTank(x, y, a);
  popMatrix();
  for (int i=0; i<bulletN; i++) {
    bulletX[i]+=bulletVX[i];
    bulletY[i]+=bulletVY[i];
    ellipse(bulletX[i], bulletY[i], 20, 20);
    bulletT[i]--;
    if (bulletT[i]==0) {
      for (int k=i+1; i<bulletN; k++) {
        bulletX[k-1]=bulletX[k];
        bulletY[k-1]=bulletY[k];
        bulletVX[k-1]=bulletVX[k];
        bulletVY[k-1]=bulletVY[k];
        bulletT[k-1]=bulletT[k];
      }
      bulletN--;
    }
  }
  println(bulletN);
}
float angle;
int bulletN=0;
float[]bulletX=new float[100];
float[]bulletY=new float[100];
float[]bulletVX=new float[100];
float[]bulletVY=new float[100];
int []bulletT=new int [100];
void mousePressed() {
  int i=bulletN;
  bulletX[i]=x;
  bulletY[i]=y;
  bulletVX[i]=cos(angle);
  bulletVY[i]=sin(angle);
  bulletT[i]=600;//每個子彈只有10秒壽命
  bulletN++;
  if (bulletN==100) {
    for (int k=0; k<50; k++) {
      bulletX[k]=bulletX[k+50];
      bulletY[k]=bulletY[k+50];
      bulletVX[k]=bulletVX[k+50];
      bulletVY[k]=bulletVY[k+50];
    }
    bulletN=50;
  }
  println(bulletN);
}
void myTank(float x, float y, float a) {
  translate(x, y);
  rotate(a);//旋轉
  fill(167, 167, 175);
  stroke(110, 110, 113);
  strokeWeight(4);
  rect(20, -10, 20, 20);//砲管,砲塔

  fill(204, 102, 156);
  stroke(125, 84, 105);
  strokeWeight(3);
  ellipse(0, 0, 55, 55);//圓形的身體
}


沒有留言:

張貼留言