2017年10月30日 星期一

17/10/30 德宇的筆記Week07

目標一:製作雪球大戰


原遊戲參考:
http://anan.game.tw/ettc/6263.html

遊戲玩法:
本遊戲中間的紅球為主角,可以發射雪球攻擊敵人,敵人則會衝撞主角扣血。
在血歸零前則到100分,則獲勝。若歸零未達到分數則失敗

本遊戲操控方法如下:
上鍵: 向前
下鍵: 向後
右鍵: 順時針
左鍵 逆時針
空白鍵: 發射雪球

程式碼:
PImage imgBG;
PVector[]enemy=new PVector[5];
PVector[]enemyV=new PVector[5];
int stage=1;
void reborn(int i)
{
  enemy[i]=new PVector(random(500), random(500));
  float angle=random(2*PI);
  enemyV[i]=new PVector(3*cos(angle), 3*sin(angle));
}    
void setup()
{
  imgBG=loadImage("1.jpg");
  fill(0, 0, 0);
  size(500, 500);
  for (int i=0; i<5; i++)
  {
    reborn(i);
  }
}
int kidsize=30;
float kidX=250, kidY=250, dir=0;
float [] ballX=new float[5];
float [] ballY=new float[5];
float [] ballVX=new float[5];
float [] ballVY=new float[5];
boolean ballFly=false;
float [] kid= new float[5];
float [] ball= new float[5];
void draw()
{
  else if (stage==1) 
  {  
    background(imgBG);
    textSize(30);
    fill(0);
    for (int i=0; i<5; i++)
    {
      fill(255, 220, 40);
      enemy[i].x +=enemyV[i].x;
      enemyV[i].y+=enemyV[i].y;
      ellipse(enemy[i].x, enemy[i].y, 30, 30);
      if (enemy[i].x<0||enemy[i].x>500
        ||enemy[i].y<30||enemy[i].y>500) reborn(i);
      fill(255, 40, 40);
      ellipse(kidX, kidY, 50, 50);
      beginShape(POLYGON);
      vertex(kidX+kidsize*cos(radians(dir+80)), kidY+kidsize*sin(radians(dir+80)));
      vertex(kidX+kidsize*cos(radians(dir+100)), kidY+kidsize*sin(radians(dir+100)));
      vertex(kidX+kidsize*cos(radians(dir-100)), kidY+kidsize*sin(radians(dir-100)));
      vertex(kidX+kidsize*cos(radians(dir-80)), kidY+kidsize*sin(radians(dir-80)));
      endShape();
      if (ballFly)
      {
        fill(255);
        ellipse(ballX[now], ballY[now], 10, 10);
        ballX[now]+=ballVX[now];
        ballY[now]+=ballVY[now];
      } 
      if(dist (enemy[i].x,enemy[i].y,ballX[now],ballY[now])<40) 
       {
       score+=10;
       reborn(i);
       if(score>=100)stage=3;
       }
       if(dist(enemy[i].x,enemy[i].x,kidX,kidY)<1)
       {
       heart--;
       if(heart<=0)stage=2;
       reborn(i);
       }
    }
  } 
}
void keyPressed()
{
  if (keyCode==RIGHT) dir+=20;
  if (keyCode==LEFT) dir-=20;
  if (keyCode==UP)
  { 
    kidX += 10*cos(radians(dir));
    kidY += 10*sin(radians(dir));
  }
  if (keyCode==DOWN)
  {
    kidX -= 10*cos(radians(dir));
    kidY -= 10*sin(radians(dir));
  }
  if (key==' ')
  {
    ballX[now]=kidX; 
    ballY[now]=kidY; 
    ballVX[now]=10*cos(radians(dir)); 
    ballVY[now]=10*sin(radians(dir)); 
    ballFly=true;
  }

沒有留言:

張貼留言