วันอาทิตย์ที่ 6 กันยายน พ.ศ. 2558

Lab3-Battery(Interactive)

int volumeposY = 110;
int volumeHeight = 380;
int batt_usage;
int posY_change;
int volumeColor = #008B00;
int update = 0;

void setup() {
  size(400, 600);
}

void draw() {
  int batteryposX = 100, batteryposY = 100;
  frameRate(50);
  background(0);

  battery(batteryposX, batteryposY, 200, 400, 60, 20);
  positive(batteryposX+100, batteryposY+50);
  negative(batteryposX+100, batteryposY+380);

  volumeHeight = volumeHeight - batt_usage;
  volumeposY = volumeposY + posY_change;

  if ((volumeHeight == 0 && volumeposY == 490) || (volumeHeight == 380 && volumeposY == 110)) {
    batt_usage = 0;
    posY_change = 0;
  }
  int percentage = battPercent(volumeHeight, batteryposX+100, batteryposY+200);
  if (percentage <= 40) {
    volumeColor = #FFCC00;
  }
  if (percentage <= 20) {
    volumeColor = #FF0000;
  }
  if (percentage >= 40) {
    volumeColor = #008B00;
  }
  if (percentage == 0) {
    warning(width/2, 560);
  }
}
void warning(int x, int y) {
  textAlign(CENTER);
  textSize(40);
  text("Click to Charge!!", x, y);
}
void mouseClicked() {
  if (volumeHeight <= 380 && volumeposY >= 110 && update == 0) {
    batt_usage = 2;
    posY_change = 2;
    update = 1;
  } else if (volumeHeight >= 0 && volumeposY <= 490 && update == 1) {
    batt_usage = -2;
    posY_change = -2;
    update = 0;
  }
}

void battery(int batteryposX, int batteryposY, int batteryWidth, int batteryHeight, int poleWidth, int poleHeight) {
  int volumeposX = 110;
  int volumeWidth = 180;
  /////BATTERY BODY/////
  noFill();
  stroke(#FFFFFF);
  strokeWeight(5);
  rect(batteryposX, batteryposY, batteryWidth, batteryHeight);
  fill(255);
  rect((batteryposX+(batteryWidth/2))-(poleWidth/2), batteryposY-poleHeight, poleWidth, poleHeight);
  /////VOLUME/////
  strokeWeight(2);
  fill(volumeColor);
  rect(volumeposX, volumeposY, volumeWidth, volumeHeight);
}

void positive(int positiveposX, int positiveposY) {
  fill(#FF0000);
  textAlign(CENTER);
  textSize(30);
  text("+", positiveposX, positiveposY);
}

void negative(int negativeposX, int negativeposY) {
  fill(#FF0000);
  textAlign(CENTER);
  textSize(30);
  text("-", negativeposX, negativeposY);
}

int battPercent(int volumeHeight, int x, int y) {
  int batt_percent = 100;
  batt_percent = (volumeHeight*100)/380;
  textAlign(CENTER);
  textSize(40);
  fill(#FFFFFF);
  text((int)(batt_percent)+"%", x, y);
  return batt_percent;
}


ไม่มีความคิดเห็น:

แสดงความคิดเห็น