2017年10月23日 星期一

week06-卓佾柔的上課筆記

一、爆爆王

1.畫出背景
void setup(){
  size(850,500);
}
void draw(){
  background(#92AD28);
  noStroke();
  for(int x=0;x<17;x++){
    for(int y=0;y<10;y++){
      if((x-y)%2 ==0) fill(#7E9819);
      else fill(#92AD28);
      rect(x*50,y*50,50,50);
    }
  }
}





2.讓玩家可以動(鍵盤)
void setup(){
  size(850,500);
}
int userJ=9,userI=5;
float userX,userY;

void draw(){
  background(#92AD28);
  noStroke();
  for(int x=0;x<17;x++){
    for(int y=0;y<10;y++){
      if((x-y)%2 ==0) fill(#7E9819);
      else fill(#92AD28);
      rect(x*50,y*50,50,50);
    }
  }
  fill(255,0,0); ellipse(userJ*50+25,userI*50+25,50,50);
}
void keyPressed(){        //鍵盤控制  if(keyCode==LEFT) userJ--;
  if(keyCode==RIGHT) userJ++;
  if(keyCode==UP) userI--;
  if(keyCode==DOWN) userI++;

}


3.放水球

void setup(){
  size(850,500);
}
int userJ=9,userI=5;
float userX,userY;
int waterN=0;
int []waterJ=new int[100];
int []waterI=new int[100];

void draw(){
  background(#92AD28);
  noStroke();
  for(int x=0;x<17;x++){
    for(int y=0;y<10;y++){
      if((x-y)%2 ==0) fill(#7E9819);
      else fill(#92AD28);
      rect(x*50,y*50,50,50);
    }
  }
  fill(255,0,0); ellipse(userJ*50+25,userI*50+25,50,50);
  for(int i=0;i<waterN;i++){
     fill(#93E1F7); ellipse(waterJ[i]*50+25,waterI[i]*50+25,30,30);

  }
}
void keyPressed(){
  if(keyCode==LEFT) userJ--;
  if(keyCode==RIGHT) userJ++;
  if(keyCode==UP) userI--;
  if(keyCode==DOWN) userI++;
  if(key==' '){ waterI[waterN]=userI; waterJ[waterN]=userJ; waterN++;}
}

二、鱷魚咬咬

1.畫出鱷魚嘴巴

int bad=0;
void setup(){
  size(500,500);
  bad= int(random(18));
  println(bad);
}
void draw(){
  background(255);
  fill(0,155,0); ellipse(250,250,300,300);
  for(int i=0;i<9;i++){
    fill(255); rect(110+i*30,200,30,30);
    if(110+i*30<mouseX && mouseX<110+i*30+30 &&
        200<mouseY && mouseY <200+30){
          fill(0); rect(110+i*30,200,30,30);
        }
        if(bad==i){fill(255,0,0); rect(110+i*30,200,30,30);}
  }
  for(int i=0;i<9;i++){
    fill(255); rect(110+i*30,300,30,30);
    if(110+i*30 <mouseX && mouseX <10+i*30+30 &&
        300 < mouseY && mouseY <300+30){
          fill(0); rect(110+i*30,300,30,30);
        }
        if(bad==i+9){fill(255,0,0); rect(110+i*30,300,30,30);}
  }
}
2.被咬到後掛掉


int bad=0;
int [] all=new int[18]; //{0,-1,0,0,0,0,0,0,1,0,0,...}
void setup(){
  size(500,500);
  bad= int(random(18)); all[bad]=1;
  println(bad);
}
boolean bGameOver=false;
void draw(){
  if(bGameOver){
    background(255,0,0);
    return;

  }
  background(255);
  fill(0,155,0); ellipse(250,250,300,300);
  for(int i=0;i<9;i++){
    if(all[i]==-1) continue;
    fill(255); rect(110+i*30,200,30,30);
    if(110+i*30<mouseX && mouseX<110+i*30+30 &&
        200<mouseY && mouseY <200+30){
          fill(0); rect(110+i*30,200,30,30);
          if(mousePressed && all[i]!=1) all[i]=-1;
          if(mousePressed && all[i]==1) bGameOver=true;

        }
        //if(bad==i){fill(255,0,0); rect(110+i*30,200,30,30);}
  }
  for(int i=0;i<9;i++){
    if(all[i+9]==-1) continue;
    fill(255); rect(110+i*30,300,30,30);
    if(110+i*30 <mouseX && mouseX <10+i*30+30 &&
        300 < mouseY && mouseY <300+30){
          fill(0); rect(110+i*30,300,30,30);
          if(mousePressed && all[i+9]!=1) all[i+9]=-1;
          if(mousePressed && all[i+9]==1) bGameOver=true;

        }
        //if(bad==i+9){fill(255,0,0); rect(110+i*30,300,30,30);}
  }
}

    三、貪食蛇

1.製作出貪食蛇,並且讓他的頭能跟著滑鼠方向轉動
void setup(){
  size(600,400);
}
float userX=300,userY=200;
void draw(){
  background(#44B220);
  stroke(#356C23); noFill();
  for(int i=0;i<16;i++){
    for(int j=0;j<24;j++){
      rect(j*25,i*25,25,25);
    }
  }
  stroke(0); fill(#FC9E38);
  float angle=atan2(mouseY-userY,mouseX-userX);
  triangle( userX+40*cos(angle), userY+40*sin(angle),
            userX+15*cos(angle+PI/2),userY+15*sin(angle+PI/2),
            userX+15*cos(angle-PI/2),userY+15*sin(angle-PI/2));
  ellipse(userX,userY,30,30);
}
2.讓貪食蛇能動(鍵盤)

void setup(){
  size(600,400);
}
float userX=300,userY=200;
float mapX=0,mapY=0;
void draw(){
  background(#44B220);
  stroke(#356C23); noFill();
  for(int i=0;i<16;i++){
    for(int j=0;j<24;j++){
      rect(mapX+j*25,mapY+i*25,25,25);
    }
  }
  stroke(0); fill(#FC9E38);
  float angle=atan2(mouseY-userY,mouseX-userX);
  triangle( userX+40*cos(angle), userY+40*sin(angle),
            userX+15*cos(angle+PI/2),userY+15*sin(angle+PI/2),
            userX+15*cos(angle-PI/2),userY+15*sin(angle-PI/2));
  ellipse(userX,userY,30,30);
  mapX-=dirX; //userX+=dirX;
  mapY-=dirY; //userY+=dirY;
}
int dirX=0, dirY=0;
void keyPressed(){
  if(key=='a' || key=='A') dirX=-1;
  if(key=='s' || key=='S') dirY=1;
  if(key=='d' || key=='D') dirX=1;
  if(key=='w' || key=='W') dirY=-1;
}
void keyReleased(){
  if(key=='a' || key=='A') dirX=0;
  if(key=='s' || key=='S') dirY=0;
  if(key=='d' || key=='D') dirX=0;
  if(key=='w' || key=='W') dirY=0;
}


四、小精靈


1.畫出小精靈(嘴巴大小可用滑鼠拉動調整)

void setup(){
  size(600,400);
}
float open=1;
void draw(){
  background(0);
  fill(255,255,0);
  arc(300,200,100,100,0+open,PI*2-open);
}
void mouseDragged(){
  open=(mouseX/600.0);
}

2.小精靈嘴巴會自動開合
void setup(){
  size(600,400);
}
float open=1;
int now=0;
void draw(){
  background(0);
  fill(255,255,0);
  arc(300,200,100,100,0+open,PI*2-open);
  now++;
  open=abs((now%60)/60.0-0.5);

}

沒有留言:

張貼留言