PR

【ブロックリーゲーム】ポンドの答えを紹介します

ブロックリー

ポンドで勝てないけどどうすれば…

と悩んでいる人向けに、ポンドの攻略情報を載せていきます。

いきなりポンドは難しいので、まずはポンドチューターで処理を理解するとよいですよ!

姫野秀徳

組み込みエンジニアとしてメーカー勤務10年。
第二種電工事士、基本情報技術者、Code.org認定教師。
microbitを用いた電子工作&プログラミング教室を開校。
組み込み開発の実際を発信するyoutube活動も行う。

姫野秀徳をフォローする

勝つとどうなる?

ポンドで勝つと…何も起こりません!

負けたときと同じで、自分だけが生き残っててリセットボタンを押すまで1人でボーっとしてます…笑

答え1

345°方向にx≒30まで移動

270°~360°の範囲を順次スキャンし、距離70以内に敵がいれば大砲を打つ

pond_1answer
var angle, health_stat;

// この関数の説明…
function Init() {
  angle = 270;
  swim(345);
  while (getX() > 30) {
  }
  stop();
}

Init();
while (true) {
  health_stat = health();
  if (scan(angle) > 70) {
    angle += 1;
    if (angle > 360) {
      angle = 270;
    }
  } else {
    cannon(angle, scan(angle));
  }
}

答え2

最初にx軸中心位置まで移動し、20%<y<80%で上下移動。もし攻撃を受けたら進行方向を逆転させる。

30,90,150,210,270,330の6方向を順次スキャンし、距離55未満でキャノン発射。

勝ち

負け

var currenthealth, centerflag, downflag;

// この関数の説明…
function attack() {
  if (scan(30) < 55) {
    cannon(30, scan(30));
  }
  if (scan(90) < 55) {
    cannon(90, scan(90));
  }
  if (scan(150) < 55) {
    cannon(150, scan(150));
  }
  if (scan(210) < 55) {
    cannon(210, scan(210));
  }
  if (scan(270) < 55) {
    cannon(270, scan(270));
  }
  if (scan(330) < 55) {
    cannon(330, scan(330));
  }
}

// この関数の説明…
function init() {
  currenthealth = health();
  centerflag = false;
  while (centerflag == false) {
    swim(0);
    if (getX() > 50) {
      stop();
      centerflag = true;
      downflag = true;
    }
  }
}

// この関数の説明…
function HealthStat() {
  if (currenthealth > health()) {
    if (downflag == true) {
      downflag = false;
    } else {
      downflag = true;
    }
  }
  currenthealth = health();
}

// この関数の説明…
function move() {
  if (downflag == true) {
    swim(270);
    if (getY() < 20) {
      stop();
      downflag = false;
    }
  } else {
    swim(90);
    if (getY() > 80) {
      stop();
      downflag = true;
    }
  }
}


init();
while (true) {
  move();
  attack();
  HealthStat();
}

コメント

タイトルとURLをコピーしました