JavaScriptでコルーチン

p5.jsでクレーの大冒険を作ろうとしたときに気になったのが、コルーチン。ゲームプログラミングでは必須となる、待ち時間処理を実装するための仕組み。Pythonで初めて取り組んだときに苦戦したので、先に下調べをしてみた。

参考サイト

やってみた

let g;

function setup() {
  createCanvas(400, 400);
  textSize(30);
  g = new game();
}

function draw() {
  background(220);
  let e = "🛑";
  if(g.waitFrames < 0){
    g.nextEmoji();
    g.waitFrames = 200;
  }
  g.waitFrames--;
  text(g.nowEmoji, width/2, height/2);
}

class game {
  constructor() {
    this.nowEmoji = "❌";
    this.genEmoji = this.generatorEmoji();
    this.waitFrames = 200;
  }
  nextEmoji() {
    let r = this.genEmoji.next();
    if (!r.done) this.nowEmoji = r.value;
  }
  *generatorEmoji() {
    yield "🔥";
    yield "🚀";
    yield "✨";
  }
}

コメントする