Spilletid

Fra Holstebro HTX Wiki
Skift til: navigering, søgning

Eksemplet her tager udgangspunkt i [1].

Koden her laver en visning af hvor lang tid der er gået siden programmet blev startet. Visningen er i sekunder med 3 decimaler, som netop millis() giver mulighed for.

void draw() {
  background(0);
  int frac = millis() % 1000;
  String tekst = millis() / 1000 + ":";
  if (frac < 100) {
    tekst += "0";
    if (frac < 10) {
      tekst += "0";
    }
  }
  tekst += millis() % 1000;
  text(tekst, 20, 20);
}

I et lidt mere kompliceret eksempel registreres hvor lang tid en aktivitet har taget.

Det gøres ved at man har en variabel running der angiver om der er registrering i gang. Hvis der er det, så beregnes runTime ud fra millis() og en startTime.

Variablen running bliver sat true og false ved tryk på de to knapper som bliver tegnet i draw(), og som registreres i mousePressed. her bliver startTime også sat når der klikkes på start.

boolean running = false;
int startTime;
int runTime = 0;

void setup() {
  size(200, 200);
  stroke(255);
  fill(0);
  textSize(25);
}

void draw() {
  if (running) {
    runTime = millis() - startTime;
  }
  background(0);
  fill(0);
  rect(10, 100, 100, 40);
  rect(10, 150, 100, 40);
  fill(255);
  text("Start", 20, 130);
  text("Stop",  20, 180);
  int frac = runTime % 1000;
  String tekst = runTime / 1000 + ":";
  if (frac < 100) {
    tekst += "0";
    if (frac < 10) {
      tekst += "0";
    }
  }
  tekst += runTime % 1000;
  text(tekst, 20, 50);
}

void mousePressed() {
  if (mouseButton != LEFT) {
    return;
  }
  if (mouseX < 20 || mouseX > 100) {
    return;
  }
  if (mouseY > 100 && mouseY < 140) {
    if (running) {
      return;
    }
    running = true;
    startTime = millis();
  }
  if (mouseY > 150 && mouseY < 190) {
    if (! running) {
      return;
    }
    running = false;
  }
}

Referencer

  1. millis() på Processing.org