Настройки за намиране на път за бутане

Когато търси път за бутане (как да се избута един сандък от една клетка до друга) YSokoban опитва да намери път с най-малък брой бутания. Според мен това изискване е съвсем естествено, защото задачата е да бутате (тежък) сандък от едно място до друго, колко ще обикаляте около него, не е толкова важно ако може да си спестите някое бутане.

Обаче много хора са на противното мнение. За тях по важно е колко движения ще направят (без значение дали ще бутат сандък или не). Това вероятно е така заради времената когато играта се е играела само под ДОС и то само с клавиатура, понеже това не е особено приятна задача (може да пробвате да решавате някое ниво само с клавитура), то важното е било колко пъти ще се натискат клавишите (което е и движение без значение дали бутаме или не).

В диалога за задаване на параметри за начина на оптимизация на пътя за бутане (активиран от менюто) има възможност финно да настроите точно каква оптимизация искате.

По премълчаване (когато настройката "Да се използват горната формула (ако не: 100, 0, 0)" не е избрана) програмата оптимизира пътя за бутане по брой бутания. Това означава, че програмата ще се опитва да намери път с минимален брой бутания (напълно е възможно работника да пообикаля доста за да постигне целта). Ако има повече от един път с един и същ брой бутания, то тогава програмата ще избере този с по-малко движения.

Ако обаче изберете "Да се използват горната формула (ако не: 100, 0, 0)", то тогава може да укажете формулата по която програмата ще търси оптимален път. Тази формула има 3 компонента:

В този случай YSokoban ще търси път с най-малка стойност отговарящ на формулата:

движения*КоефициентЗаДжижения + бутания*КоефициентЗаБутания + направо*КоефициентЗаНаправо

Ако изберете 0 като коефициент за движенията и за направо, програмата автоматично премахва флага на "Да се използват горната формула (ако не: 100, 0, 0)".

Настройката "Да се броят бутанията като бутания + движения" означава, че всяко бутане се брои и като движение също. При търсене на път може да укажете, че са независими (иначе движенията винаги ще са повече от бутанията). Тази настройка е само за търсене на път и не влияе на настройката в диалога с общи настройки със същото име.

При всички случаи, ако имаме два пътя които имат една и съща стойност, то програмата ще избере този от тях, който има по-малко бутания, а ако и те са равно, който има по-малко движения, а ако и те са равни с по-малко смени (по-малък брой праволинейни участъци), а ако и те са равно - просто избира единия случайно.


Created with Ywiki