2017年11月6日 星期一

Week 08 邱

#第08週
-------------------------------------------------------------------------------------------------------------------------

◎計算分數&邊界反彈&皮卡丘不超過欄杆

程式碼:
PImage imgBall,imgP1,imgP2;
void setup(){
   size(800,600); 
   textSize(50);
   imgBall=loadImage("Ball.png");
   imgP1=loadImage("P1.png");
   imgP2=loadImage("P2.png");
   imageMode(CENTER);
}
float ballX=120,ballY=150,ballVX=0,ballVY=0;
float p1X=100,p1Y=430,p1VX=0,p1VY=0;
float p2X=700,p2Y=430,p2VX=0,p2VY=0;
Boolean bGG=false;
int p1S=0,p2S=0; ///Score
void draw(){
   background(#BFEAFF); ///sky
   noStroke();fill(#D1C0A6);rect(0,500,800,100); ///floor
   fill(#A6ACAF);rect(400,320,10,240); ///cylider
   image(imgP1,p1X,p1Y,200,200);
   image(imgP2,p2X,p2Y,200,200);
   image(imgBall,ballX,ballY,80,80);

   fill(#484646);
   text(p1S,100,70);
   text(p2S,700,70);
   if(ballX<=360 && ballY>=500-40){
       bGG=true; ///if ball touch the floor : GameOver
       if(bGG)
       {
         p2S++;
         ballX=680;ballY=150;
         p1X=100;p1Y=450;
         p2X=700;p2Y=450;
         ballVX=0;ballVY=0;
         p1VX=0;p1VY=0;
         p2VX=0;p2VY=0;
         bGG=false;
       }
   }
   if(ballX>=450 && ballY>=500-40){
      bGG=true; ///if ball touch the floor : GameOver
      if(bGG)
       {
         p1S++;
         ballX=120;ballY=150;
         p1X=100;p1Y=450;
         p2X=700;p2Y=450;
         ballVX=0;ballVY=0;
         p1VX=0;p1VY=0;
         p2VX=0;p2VY=0;
         bGG=false;
       }
   }
   
   if(bGG)return;
   ballX += ballVX; ballY += ballVY;
   ballVY += 0.98;
   
   p1X+=p1VX;
   if(p1X<80) p1X=80; 
   if(p1X>300) p1X=300;
   p1Y += p1VY; p1VY+=0.98;
   
   p2X+=p2VX;
   if(p2X<500) p2X=500;
   if(p2X>720) p2X=720;
   p2Y += p2VY; p2VY+=0.98;

   if(ballX<50){ballX=50;ballVX=-ballVX;} 
   if(ballX>800-50){ballX=800-50;ballVX=-ballVX;}
   if(ballY<50){ballY=50;ballVY=-ballVY;}
   if(ballY>800-50){ballY=800-50;ballVY=-ballVY;}
  
   if(p1Y>=500-50) {p1VY=0; p1Y=500-50;}
   if(p2Y>=500-50) {p2VY=0; p2Y=500-50;}
   if(dist(p1X,p1Y,ballX,ballY)<=80)ballVY=-ballVY;
   if(dist(p2X,p2Y,ballX,ballY)<=80)ballVY=-ballVY;
   if(dist(p1X,p1Y,ballX,ballY)<=80) ballVX=(80-ballVY)/5.0;
   if(dist(p2X,p2Y,ballX,ballY)<=80) ballVX=-(80-ballVY)/5.0;
}
void keyPressed(){
  if(key=='a') p1VX=-3;
  if(key=='s') p1VY=0;
  if(key=='d') p1VX=3;
  if(key=='w') p1VY=-20;

  if(keyCode==LEFT) p2VX=-3;
  if(keyCode==DOWN) p2VY=0;
  if(keyCode==RIGHT) p2VX=3;
  if(keyCode==UP) p2VY=-20;
}
void keyReleased(){
  if(key=='a') p1VX=0;
  if(key=='s') p1VY=0;
  if(key=='d') p1VX=0;
  if(key=='w') p1VY=0;
  
  if(keyCode==LEFT) p2VX=0;
  if(keyCode==DOWN) p2VY=0;
  if(keyCode==RIGHT) p2VX=0;
  if(keyCode==UP) p2VY=0;
}


沒有留言:

張貼留言