Udvikling i Tid

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

Eksemplet her tager udgangspunkt i millis()[1], og er en udvidelse af eksemplet på Spil Opdatering.

Løsning med ændring af tids-intervallet

Det der ændres på er det tidsinterval der går mellem flytningen af blokken, så det ændrer hastigheden. Det gøres ved at klikke på musen, hvor højreklik giver mindre hastighed og venstreklik give højere hastighed.

For illustrationens skyld vises intervallet.

int posY = 0;
int stepY = 20;
int interval = 333;
int lastTime = 0;

void setup() {
  size(200, 400);
  frameRate(60);
  textSize(20);
}

void draw() {
  background(255);
  fill(180);
  rect(90, posY, 20, 20);
  if ((millis() - lastTime) > interval) {
    lastTime += interval;
    posY += stepY;
    if (posY > height - 20) {
      posY = 0;
    }
  }
  fill(0);
  text("Interval = " + interval, 10, 30);
}

void mousePressed() {
  if (mouseButton == LEFT) {
    interval /= 2;
  } else if (mouseButton == RIGHT) {
    interval *= 2;
  }
}

Løsning med ændringen af step-værdien

Det der ændres på er hvor langt blokken flyttes, ved at ændre på step-værdien, så det ændrer hastigheden. Det gøres ved at klikke på musen, hvor højreklik giver mindre hastighed og venstreklik give højere hastighed.

For illustrationens skyld vises step-værdien.

int posY = 0;
int stepY = 20;
int interval = 333;
int lastTime = 0;

void setup() {
  size(200, 400);
  frameRate(60);
  textSize(20);
}

void draw() {
  background(255);
  fill(180);
  rect(90, posY, 20, 20);
  if ((millis() - lastTime) > interval) {
    lastTime += interval;
    posY += stepY;
    if (posY > height - 20) {
      posY = 0;
    }
  }
  fill(0);
  text("Step = " + stepY, 10, 30);
}

void mousePressed() {
  if (mouseButton == LEFT) {
    stepY *= 2;
  } else if (mouseButton == RIGHT) {
    stepY /= 2;
  }
}

Referencer

  1. millis() på Processing.org