Командир, в ваше распоряжение поступает танк и экипаж, готовый к бою.
Скачайте и распакуйте пакет для управления танком. Откройте файл tank.html в вашем любимом браузере (например, Chrome или Firefox).
Впишите свой позывной, выберите секретный пароль и принимайте управление!
Перед вами поле боя
У каждого объекта на полигоне есть координаты, которые определяются парой “xy”: [100, 50].
Танк может двигаться в определенном напралении "move-xy"
: [0, -1].
Башня танка развернута в направлении "gun-xy"
: [1, 1]
Откройте файл tank.js и отдайте танку команду двигаться на север и повернуть башню на юго-восток:
function commander() {
return function strategy(world) {
return {
"move-xy": [0, -1], // двигаться на север
"gun-xy": [1, 1] // развернуть башню на юго-восток
};
}
}
Чтобы прекратить движение, передайте в "move-xy"
значение [0, 0].
Попробуйте поэкспериментировать с другими значениями для "move-xy"
и "gun-xy"
из примеров на картинке выше.
Узнаем ширину и высоту полигона, заглянув в world.size
:
function commander() {
return function strategy(world) {
var width = world.size[0];
var height = world.size[1];
console.log("Размер полигона: " + width + "x" + height);
}
}
Чтобы увидеть вывод на консоль, откройте в браузере инструменты разработчика: F12
или в меню Инструменты > Инструменты Разработчика (для Chrome) и Разработка > Инструменты разработки (для Firefox) выберите вкладку Console
function commander() {
return function strategy(world) {
for (var i = 0; i < world.objects.length; i++) {
var o = world.objects[i];
console.log(o)
}
}
}
function commander() {
return function strategy(world) {
var me = findMe(world)
console.log("Наш танк: ", me)
};
function findMe(world) {
for (var i = 0; i < world.objects.length; i++) {
var o = world.objects[i];
if (o.type == "player" && o.user == "Сержант Билко") // <-- замените на свой позывной
return o;
}
}
}
function commander() {
return function strategy(world) {
var enemy = findEnemy(world);
console.log("Первый попавшийся враг: ", enemy);
};
function findEnemy(world) {
for (var i = 0; i < world.objects.length; i++) {
var o = world.objects[i];
if (o.type == "player" && o.user != "Сержант Билко") // <-- замените на свой позывной
return o;
}
}
}
А теперь посчитаем направление башни, прицелимся и выстрелим в ближайшего врага
function commander() {
var user = "Сержант Билко"; // <-- замените на свой позывной
return function strategy(world) {
var me = findMe(world);
var enemy = findEnemy(world);
if (me != undefined && enemy != undefined) {
var gunXy = [
enemy.xy[0] - me.xy[0],
enemy.xy[1] - me.xy[1]];
return {
"gun-xy": gunXy,
"fire": true};
}
};
function findMe(world) {
for (var i = 0; i < world.objects.length; i++) {
var o = world.objects[i];
if (o.type == "player" && o.user == user)
return o;
}
}
function findEnemy(world) {
for (var i = 0; i < world.objects.length; i++) {
var o = world.objects[i];
if (o.type == "player" && o.user != user)
return o;
}
}
}