Решения для обучающей игры Blockly «Пруд»
Не всегда получается победить этим способом, но иногда получается
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;
}
}
}
Источник: 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);
}
}
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;
}
}
i += 2;