2021年12月27日 星期一

Noteeee Week16

 🐠🐠Week16🐠🐠

[12/27(一)]

Doodle Jump製作I N G🔨🔧🔩

Doodle Jump製作步驟: (1)jumping主角 (2)跳起來 (3)卡住 (4)畫面捲動

卡住的地方:
//Doodle Jump製作步驟: (1)jumping主角 (2)跳起來 (3)卡住 (4)畫面捲動
PImage imgBoard01;
float x=150, y=500-15, vx=0, vy=0;
boolean jumping=false;
boolean left=false;//左
boolean right=false;//右
float []boardX=new float[10];
float []boardY=new float[10];
int landing=0;//停在哪一個板子上
void setup()
{
    size(300,500);
    imgBoard01 = loadImage("board01.png");
    for(int i=0; i<10; i++)
    {
      boardX[i]=random(0,300-68);
      boardY[i]=i*35;
    }//376-356==>20
 
}
float rolling=0;
void draw()
{
  background(255);
  for(int i=0; i<10; i++)
  {
    rect(boardX[i],boardY[i], 68, 20);
  }
  ellipse(x,y,15,15);
  if(left)  x -= 0.8;
  if(right) x += 0.8;
  //x += vx;
  
  y += vy; 
  if(jumping) vy += 0.98;//重力加速度(往下的速度)
  if(y>500-15) y=500-15;//地板
  if(vy>=0)
  {//(0)往下,才有可能卡住
    
  }
  for(int i=0; i<10; i++)
  {
    image(imgBoard01, boardX[i], 450-boardY[i]+rolling);
    if(boardY[i]+rolling<0) 
    {
      boardX[i]=random(0,300-68);
      boardY[i]=boardY[i]+350;
    }
  }
  rolling+=1.5;
}
void keyPressed()
{
  if(keyCode==UP)
  {//(2)跳起來
    vy = -20; jumping=true; //往上的速度,負的越多,跳的越慢
  }
  if(keyCode==LEFT)
  { 
    vx = -0.8; left=true; right=false; //負越多,跑越快
  }
  if(keyCode==RIGHT)
  {
    vx = 0.8;  right=true; left=false;
  }
}


改過一點點的:
//Doodle Jump製作步驟: (1)jumping主角 (2)跳起來 (3)卡住 (4)畫面捲動
float x=150, y=500-15, vx=0, vy=0;
boolean jumping=false;
boolean left=false;//左
boolean right=false;//右
float []boardX=new float[10];
float []boardY=new float[10];
int landing=0;//停在哪一個板子上
void setup()
{
    size(300,500);
    for(int i=0; i<10; i++)
    {
      boardX[i]=random(0,300-80);
      boardY[i]=450-i*50; //width:80
    }
}
float rolling=0;
void draw()
{
  background(255);
  for(int i=0; i<10; i++)
  {
    rect(boardX[i], boardY[i], 80, 15);//畫四邊形 
  }
  ellipse(x,y,15,15);
  if(left)  x -= 0.8;
  if(right) x += 0.8;
  //x += vx;
  if(x< boardX[landing] || boardX[landing]+80<x) jumping=true;//landing=i;//停在哪一個板子上, 超過了,掉下來
  
  y += vy; 
  if(jumping) vy += 0.98;//重力加速度(往下的速度)
  if(y>500-15) y=500-15;//地板
  if(vy>=0)
  {//(0)往下,才有可能卡住
    for(int i=0; i<10; i++)//試每一個板子
    {
      if(boardX[i] < x && x < boardX[i]+80 ) //(1)x: 板子的左右邊界符合(主角在板子裡)
      {
        if(y< boardY[i] && y+vy > boardY[i]) //(2)y: 上下符合,從板子上,往板子下穿越
        {
          
          landing=i;//停在哪一個板子上
          jumping=false;//不再飛行
          vy=0;//停止
          //vy = -20; jumping=true;
          y = boardY[i]; //卡住,卡在板子的地方,主角跟板子的y座標相同
        }
      }
      if(boardX[i] > x && x > boardX[i]+80)
      {
        y -= vy;
      }
      rolling+=1.5;
    }
  }
}
void keyPressed()
{
  if(keyCode==UP)
  {//(2)跳起來
    vy = -20; jumping=true; //往上的速度,負的越多,跳的越慢
  }
  if(keyCode==LEFT)
  { 
    vx = -0.8; left=true; right=false; //負越多,跑越快
  }
  if(keyCode==RIGHT)
  {
    vx = 0.8;  right=true; left=false;
  }
}

沒有留言:

張貼留言