alanhc 互動技術-week4

alanhc 互動技術-week4

October 3, 2019

打字遊戲

先用一個code的陣列,使用查表

String []code = {
 "qwertyuiop",
 "asdfghjkl",
 "zxcvbnm",
};

使用上週的技巧,陣列儲存

滑鼠按下,格子打勾
void keyPressed()
{
  for (int i=0; i<3; i++) {
    int j = code[i].indexOf(key);
    if (j>=0) {
      table[i][j] = 1;
      println(j);
    }
  } 
}

滑鼠放開,格子歸零
void keyReleased()
{
  for (int i=0; i<3; i++) {
    int j = code[i].indexOf(key);
    if (j>=0) {
      table[i][j] = 0;
      println(j);
    }
  } 
}

打字上去

text(哪一個字元 , X座標, Y座標);

text(code[i].charAt(j) , 100+j*size+(size/1.5), i*size+150+(size/4));
textSize(16); 




速度與加速度














速度 vx

ballX = +vx;
if (ballX<0) vx=+2;
if (ballX>700) vx=-2;



球不會在邊線消失 +15

if (ballX<0+15) vx = +2;

重力加速度

加一點重力加速度 vy+=0.98

void draw()
{
  ellipse(ballX, ballY, 30,30);
  ballX+=vx; ballY+=vy;
  vy+=0.98;

怕跳太高 *0.7

if (ballY<0+15) vy = -vy*0.7;


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;
  println(vy);
}

Q. 解決球不會一直重複彈跳

A. 解決:float ballX=100, ballY=100; 球的型別要是float


跳跳馬力歐



有力的變化,位置: draw()

  marioX += marioVX;
  marioY += marioVY;

重力,位置: draw()
marioVY += 0.9;

往上跳後會掉下來

位置: keyPressed()
if (keyCode==UP&&flying==0) {
  marioVY-=30;
  flying=1;
}
位置: draw()
if (marioY<100) marioVY += 0.9;
else  { ///hold on floor
  marioY=100;
  flying=0;
}

左右跑的摩擦力


位置: keyPressed()
if (keyCode==LEFT) {
  marioVX-=3;
  softBrake=0;
}
if (keyCode==RIGHT) {
  marioVX+=3;
  softBrake=0;
}
位置: keyReleased()
if (keyCode==RIGHT) softBrake=1;
if (keyCode==LEFT) softBrake=1;
位置: draw()
if (softBrake==1) marioVX *=0.9;
*=0.9 慢慢減少



馬力歐跳方塊

位置: draw()
if (marioY<100) {
    if (flying==1)marioVY += 0.9;
    if (marioVY>0 && marioY>50 && (marioX>100&&marioX<400)) {  flying=0; marioY=50;} 
else { 
    if (marioY<=50 && (marioX>100&&marioX<400)) marioY=50;
    else marioY=100;
    flying=0;
}
重點:

  1. 如果開始往下掉(marioVY>0),才判斷位置才會比較順
  2. 座標系統是向下