Як думає бот
Сторінка Бот не відтворює запис. Вона запускає справжню гру, читає її живі змінні і натискає ті самі DOS-style scancodes стрілок, які натискав би гравець. Бот — невеликий planner: на кожному ході він відновлює стан змії, шукає безпечну їжу, відкидає маршрути-пастки, стежить за петлями біля хвоста і переходить у режим виживання, коли безпечного шляху до їжі немає.
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. Один цикл рішення
Зібрати head, body, direction, score і поточні клітинки VRAM.
Позначити клітинки, куди стріли можуть ударити зараз або одразу після bounce/wrap.
Спробувати короткий пошук до найближчої безпечної їжі, а потім глибший route search.
Кожен кандидат рухає уявну змію, стирає хвіст, ростить тіло і штовхає камені.
Після їжі маршрут має залишати простір, виходи і бажано шлях до хвоста.
Переможний перший крок перетворюється на DOS scancode і відправляється в гру.
4. Перевірки безпеки
Досягти серця недостатньо. Поганий snake bot бере найкоротший шлях і надто пізно розуміє, що їжа лежала в глухому куті. Sneekie bot оцінює:
- tailReach — чи можна після маршруту дістатися хвоста;
- space — скільки клітинок лишається доступними;
- exits — скільки легальних ходів є одразу після їжі;
- survivalDepth — чи можна прожити кілька майбутніх ходів;
- loop pressure — чи не повторюється голова без зміни score.
Якщо їжа небезпечна, бот може піти до хвоста, вибрати найпросторіший legal move або в крайньому випадку дозволити смайлик як escape route.
5. Межі і компроміси
- Бот симулює тіло і камені, але не повний багато-tick майбутній світ усіх ворогів.
- Поточну і наступну небезпеку стріл він трактує консервативно, а потім рахує заново після реального ходу гри.
- State hash компактний і призначений для pruning, не для збереження кожної деталі поля.
- Смайлик вибирається лише тоді, коли чисті маршрути до їжі провалюються.
- Survival beam любить маршрути з багатьма виходами і може відкинути вузький, але технічно безпечний шлях.
Коротко: бот грає як обережний snake player. Він хоче їжу поруч, але тільки якщо після неї лишається повітря. Коли стає тісно, хвіст, відкритий простір і майбутні виходи важливіші за найближчі очки.