2016年11月10日 星期四

Week 09 Sean's note 60408027E

1. Leap Motion

import de.voidplus.leapmotion.*;
LeapMotion leap;
float handX=0, handY=0;
PVector [] coins=new PVector[10];
void setup() {
  size(500, 500);
  leap = new LeapMotion(this);
  for (int i=0; i<10; i++) coins[i]=new PVector( random(500), -random(100));
}
int score=0, life=10, speed=2;
int state=0;//state 0:playing, 1:gameOver, 2:showScoreBoard
String [] allScore;
void draw() {
  for (Hand hand : leap.getHands()) {
    handX=hand.getPosition().x;
    handY=hand.getPosition().y;
  }
  if (state==2) {
    background(255, 255, 0);
    for (int i=0; i<allScore.length; i++) {
      fill(255, 0, 0);
      textSize(30);
      text( allScore[i], 100, 200+i*50);
    }
    return ;
  } else if (state==1) {
    background(128);
    speed=0;
    allScore=loadStrings("allScores.txt");
    if (mousePressed) state=2;
  } else background(255);
  for (int i=0; i<10; i++) {
    fill(255, 255, 0);
    ellipse(coins[i].x, coins[i].y, 30, 30);
    coins[i].y+=speed;//!!!!!!
    if (coins[i].y>530) {
      coins[i].y=-random(100);
      life--;
      if (life<=0) {
        state=1;
        allScore = loadStrings("allScores.txt");
        String [] newScore = new String[ allScore.length +1];
        int now=0;
        for (int j=0; j<allScore.length; j++) {
          if (j==now && score > Integer.valueOf(allScore[j] )) {
            newScore[now] = new String(""+score );
            now++;
          }
          newScore[now] = allScore[j];
          now++;
        }
        saveStrings("allScores.txt", newScore);
      }
    }
    if (dist(handX, handY, coins[i].x, coins[i].y)<30) {
      score+=100;
      coins[i].y=-random(100);
    }
    if (dist(mouseX, mouseY, coins[i].x, coins[i].y)<30) {
      score+=100;
      coins[i].y=-random(100);
    }
  }
  fill(255);
  ellipse(handX, handY, 30, 30);
  fill(255, 0, 0);
  textSize(30);
  text("Score:"+score +"Life:"+life, 200, 200);
}



2. 檔案讀取、寫檔

//String [] names ={"AAA","BBB","CCC"};
//saveStrings( "myClassName.txt", names);

String lines[] = loadStrings("https://processing.org");
println("there are "+ lines.length + " lines");
for (int i=0 ; i < lines.length ; i++){
  println(lines[i]);
}



3. 排名
4. ArrayList 與資料結構

void setup() {
  size(600, 600);
  background(255);
}
void draw() {
  strokeWeight(20);
  stroke(0,0,200);
  if (mousePressed) line(mouseX, mouseY, pmouseX, pmouseY);
}
int number = 0;
void keyPressed() {
  save("now.png");
  save("now" + number + ".png");
  number++;
}

Result:
now0.png、now1.png、now2.png


void setup() {
  size(600, 600);
  background(255);
}
void draw() {
  strokeWeight(20);
  stroke(0,0,200);
  if (mousePressed) line(mouseX, mouseY, pmouseX, pmouseY);
}
void keyPressed() {
  saveFrame();
}

Result:
screen-1333.tif

5. 接金幣

PVector [] coins = new PVector[10];
void setup(){
  size(500,500);
  for (int i=0; i<10; i++){
    coins[i] = new PVector(random(500), -random(100)); 
  }
}
int score=0;
void draw(){
  background(255);
  for (int i=0;i<10;i++){
    fill(255,255,0); ellipse(coins[i].x, coins[i].y, 30, 30);
    coins[i].y+=2;
    if(coins[i].y>530) coins[i].y=-random(100);
    if(dist(mouseX, mouseY, coins[i].x, coins[i].y)<30){
      score+=100; coins[i].y = -random(100);
    }
  }
  fill(255,0,0); textSize(30); text("score:"+score, 200,200);
}




沒有留言:

張貼留言