Skip to content

Instantly share code, notes, and snippets.

@a1ip
Last active April 13, 2024 09:11
Show Gist options
  • Save a1ip/0cd4d539857be125ff9df75c932ea0f7 to your computer and use it in GitHub Desktop.
Save a1ip/0cd4d539857be125ff9df75c932ea0f7 to your computer and use it in GitHub Desktop.
Решения для обучающей игры Blockly «Пруд» 🦆 https://git.io/blockly-pond-duck Остальные игры: https://git.io/blockly

Blockly Games logo

Лого игры Blockly «Пруд»

1-й способ

Пояснения:

Не всегда получается победить этим способом, но иногда получается

Источник: https://www.youtube.com/watch?v=-7fHEkLsv18

Решение:

while (true) {
  swim(Math.random() * 360);
  let i = 0;
  while (i < 360) {
    if (scan(i, 2) < 70) {
      cannon(i, scan(i, 10));
      swim(i);
    } else {
      i += 2;
    }
  }
}

2-й способ

Пояснения:

Источник: https://github.com/DonaldKellett/Blockly-Games-Pond

Решение:

while (true)
  for (let i = 0; i < 360; i += 5) {
    var dist = scan(i);
    if (dist <= 70) {
      cannon(i, dist);
      swim((i + (dist <= 15 ? 180 : 0)) % 360, 100);
    }
  }

3-й способ

Пояснения:

100% побед над ИИ, так что это лучшее решение из найденых мной в интернете

Источник: https://github.com/Roger-Wu/blockly-games-pond-solution

Решение:

let cannon_angle = 0; // направление пушки
let cannon_angle_diff = 10; // скорость вращения пушки
let cannon_scan_width = cannon_angle_diff; // ширина луча сканирования
let enemy_dist; // расстояние до врага
let swim_angle = 0; // направление движения утки
let swim_angle_diff = 2; // скорость поворота утки
let swim_speed = 100; // скорость движения утки

while (true) {
  // плавать по кругу
  swim_angle += swim_angle_diff;
  swim(swim_angle, swim_speed);

  // найти расстояние до врага
  enemy_dist = scan(cannon_angle, cannon_scan_width);
  
  // если враг в пределах дальности выстрела, то стрелять
  if (enemy_dist <= 70) {
    cannon(cannon_angle, enemy_dist);
  }
  // если поблизости нет врагов, то продолжать сканировать
  else {
    cannon_angle += cannon_angle_diff;
  }
}

@Konstantin23464
Copy link

i += 2;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment