2019年10月3日 星期四

呼嚕嚕的p語言日記-week04

1.鍵盤
int [] table=new int [26*2];

void setup()
{
  size(700,400);

}
void draw()
{
  background(255);
  for(int i=0;i<26;i++)
  {
    if(table[i]==1) rect(i*30,100,30,30);
    if(table[i+26]==1) rect(i*30,150,30,30);


  }
}
void keyPressed()
{
  for(int i=0;i<26;i++)
  {
    if(key=='A'+i) table[i]=1;
    if(key=='a'+i) table[i+26]=1;
    print(table[i]);
    print(table[i+26]);

  }

}













2.試著建立一個球,讓其可以左右碰撞

int ballX=300,ballY=300;
int vx=-2;
void setup()
{
  size(700,400);

}
void draw()
{
  background(255);
  ellipse(ballX,ballY,30,30);
  ballX+=vx;
  if(ballX<0) vx+=2;
  if(ballX>700) vx-=2;

}













3. 讓球可以上下彈跳,但有小bug,球不會停下來
float ballX=100,ballY=300;
float vx=-2,vy=-10;
void setup()
{
  size(600,400);

}
void draw()
{
  background(255);
  ellipse(ballX,ballY,30,30);
  ballX+=vx;
  ballY+=vy;
  vy+=0.98;
  if(ballX<0+15) vx=-vx*0.9;
  if(ballX>600-15) vx=-vx*0.9;
  if(ballY<0+15) vy=-vy*0.9;
  if(ballY>400-15) vy=-vy*0.9;

}












4.加上摩擦力即可停下來
float ballX=100,ballY=300;
float vx=-2,vy=-10;
void setup()
{
  size(600,400);

}
void draw()
{
  //background(255);
  ellipse(ballX,ballY,30,30);
  ballX+=vx;
  ballY+=vy;
  if(ballX<0+15) vx=-vx*0.9;
  if(ballX>600-15) vx=-vx*0.9;
  if(ballY<0+15) vy=-vy*0.9;
  if(ballY>400-15){
  vy=-vy*0.9;
  vx=vx*0.9;
  ballY=400-15;
  
  }
  vy+=0.98;

}












5.做個馬力歐可以讓他左右移動及上下跳
PImage  imgMario;
float marioX=100,marioY=100;
float marioVX=0,marioVY=0;
void setup()
{
  size(500,500);
  imgMario=loadImage("mario.png");
}
void draw()
{
  background(255);
  rect(0,200,500,50);
  image(imgMario,marioX,marioY,100,100);
  marioX+=marioVX;
  marioY+=marioVY;
  if(marioY<=100) marioVY+=0.9;
  else marioY=100;
}
void keyPressed()
{
  if(keyCode==RIGHT)marioX+=3;
  if(keyCode==LEFT)marioX-=3;
  if(keyCode==UP)
  {
    marioVY=-15;
  }


}












6.讓馬力歐可以滑行並且停下來
PImage  imgMario;
float marioX=100,marioY=100;
float marioVX=0,marioVY=0;
void setup()
{
  size(500,500);
  imgMario=loadImage("mario.png");
}
void draw()
{
  background(255);
  rect(0,200,500,50);
  image(imgMario,marioX,marioY,100,100);
  marioX+=marioVX;
  marioY+=marioVY;
  if(softBrake==1) marioVX*=0.9;
  if(marioY<=100) marioVY+=0.9;
  else marioY=100;
}
int softBrake=0; //緩剎車
void keyReleased()
{
  if(keyCode==RIGHT) softBrake=1;
  if(keyCode==LEFT) softBrake=1;
 

}
void keyPressed()
{
  if(keyCode==RIGHT){
  marioVX=3;
  softBrake=0;
  }
  else if(keyCode==LEFT){
   marioVX=-3;
   softBrake=0;
  }
  else if(keyCode==UP)
  {
    marioVY=-15;
  }
 

}


沒有留言:

張貼留言

alanhc 互動技術-week17 [final]

回顧這學期的作品:  期中作業:LANDING:PLANET 賣點&特點: 炫麗的特效 物理(星球重力及降落)及粒子系統(噴射) 世界地圖可根據視角縮放 困難點: 重寫3次最終改寫成物件導向的CLASS寫法...