Sneekie

Як думає бот

Сторінка Бот не відтворює запис. Вона запускає справжню гру, читає її живі змінні і натискає ті самі DOS-style scancodes стрілок, які натискав би гравець. Бот — невеликий planner: на кожному ході він відновлює стан змії, шукає безпечну їжу, відкидає маршрути-пастки, стежить за петлями біля хвоста і переходить у режим виживання, коли безпечного шляху до їжі немає.

Важлива межа. Сама гра на сторінці Грати лишається вірною BASIC-джерелу. Бот — сучасне доповнення: він читає port variables і натискає клавіші. Окрім переходу на вибраний LEVEL і обнулення залишкового BONUS перед clear, він не змінює правила гри.

1. Де працює бот

Бот запускається в тому самому JavaScript realm, що й гра. Це важливо, бо T, BTEL, ETEL, LEVEL, HART, KLAVER і pushKey() є live bindings у port code, а не звичайним зовнішнім API.

Перехід рівня

Він виставляє цільовий рівень і дає грі самій увійти в нього через існуючий loop.

Reset bonus

Коли лишається дуже мало предметів, BONUS = 0 прибирає довге очікування підрахунку bonus перед clear.

Справжній input

Бот надсилає розширені key strings: up ' H', down ' P', left ' K', right ' M'.

Live status

Score, items, stuck/win/fail status передаються батьківській сторінці для індикаторів.

2. Дані, які він бачить

Бот мислить так само, як гра: через screen memory. Він читає символи з VRAM через peek(offset), а тіло змії відновлює з масиву T від ETEL до BTEL.

ЗначенняЩо цеЕфект для плану
32Порожня клітинкаМожна входити.
3 СерцеЇжа +10, змія росте.
5 ТрефаЇжа +25, змія росте.
1 СмайликЗазвичай заборонений; дозволяється лише для втечі.
10 КаміньМожна штовхнути, якщо клітинка позаду порожня.
24/26/27 ↑→←СтрілаСмертельна; маршрут відкидається.
219Голова зміїПоточну голову бот бере з T[BTEL].

3. Один цикл рішення

1. Знімок стану

Зібрати head, body, direction, score і поточні клітинки VRAM.

2. Небезпека

Позначити клітинки, куди стріли можуть ударити зараз або одразу після bounce/wrap.

3. Пошук їжі

Спробувати короткий пошук до найближчої безпечної їжі, а потім глибший route search.

4. Симуляція

Кожен кандидат рухає уявну змію, стирає хвіст, ростить тіло і штовхає камені.

5. Перевірка пастки

Після їжі маршрут має залишати простір, виходи і бажано шлях до хвоста.

6. Натиснути клавішу

Переможний перший крок перетворюється на DOS scancode і відправляється в гру.

4. Перевірки безпеки

Досягти серця недостатньо. Поганий snake bot бере найкоротший шлях і надто пізно розуміє, що їжа лежала в глухому куті. Sneekie bot оцінює:

Якщо їжа небезпечна, бот може піти до хвоста, вибрати найпросторіший legal move або в крайньому випадку дозволити смайлик як escape route.

5. Межі і компроміси

Коротко: бот грає як обережний snake player. Він хоче їжу поруч, але тільки якщо після неї лишається повітря. Коли стає тісно, хвіст, відкритий простір і майбутні виходи важливіші за найближчі очки.