Змейка на батник
@echo off
color 02
title Snake Game
setlocal enabledelayedexpansion
rem Initialization
set /a x=10
set /a y=10
set /a dir=0
set snake=
set food=
for /l %%i in (1,1,25) do set /a snake=!snake!%random%
set /p food=Enter food position:
:loop
cls
echo %x% %y%
echo.
set /p input=Input direction [%dir%]:
if /i "%input%"=="up" set /a y-=1
if /i "%input%"=="down" set /a y+=1
if /i “%input%”==“left” set /a x-=1
if /i “%input%”==“right” set /a x+=1
rem Move snake
set /a oldx=%x%
set /a oldy=%y%
for /f “tokens=1,2 delims==” %%i in (‘set snake’) do (
set /a newx=%%i
set /a newy=%%j
)
set “snake=!oldx!!oldy!!newx!!newy!”
rem Check if snake hit itself or food
set /a hit=!dir!
for /f “delims=” %%i in (“!snake!”) do (
if !oldx!==!newx! set /a hit=0
if !oldy!==!newy! set /a hit=%%i%%%j==!food!
)
if %hit%==0 echo Game over
if not %hit% equ 0 echo Food eaten
timeout /t 1 >nul
goto loop
endlocal
exit
Алиса> Этот код создает простую игру-змейку, управляемую клавишами со стрелками.
Я> Прокомментируй весь код с начала.
Алиса>
Этот код создает простую игру змейка, управляемую стрелками на клавиатуре. Он начинается с команды @echo off, которая отключает вывод команд на экран. Затем код устанавливает цвет текста и заголовок окна (color 02 и title Snake Game соответственно).
Затем код включает отложенное расширение переменных (setlocal enabledelayedexpansion), что позволяет использовать переменные в командах set и операторах подстановки.
Далее код устанавливает начальные значения координат змеи (set /a x=10 и set /a y=10) и направление движения (set /a dir=0). Затем создается массив координат змеи, используя генератор случайных чисел (set snake= и for /l команда).
Далее следует запрос у пользователя позиции, где разместить еду (set /p food=).
Основной цикл игры начинается с : метки и продолжается до команды endlocal. В цикле происходит очистка экрана (cls), отображение текущих координат змеи и приглашение для ввода нового направления.
Если пользователь вводит одно из направлений, код изменяет координаты змеи.
После этого код перемещает змею, изменяя ее координаты.
Это делается с помощью команды set, которая считывает значение переменной snake и разделяет его на две координаты, которые затем присваиваются новым переменным newx и newy.
Затем проверяется, столкнулась ли змея сама с собой или с едой. Если произошло столкновение, выводится соответствующее сообщение и игра заканчивается.
В конце цикла выполняется задержка на одну секунду (timeout /t 1 > nul) и происходит возврат к метке :loop.
#корзина
Комментарии 11
Почему Алиса тупанула в таком детском вопросе (и не только)?
Почему именно такой сценарий предлагается?
Меня интересуют комменты на каждую строчку, а Алиса загадочно отвечает уклончивыми ответами.
Она даже не знает как приготовить квашенную капусту.
А иногда Алиса на вопрос "в какой стране находится Воронеж" - отвечает "не хочу разговаривать о политике, чтобы никого не оскорбить".
Но самое важное, чтобы меня все поняли - меня интересуют образцы кода:
.bat;
.ini;
.js;
.python;
.css;
.vba;
.vbs;
А также - ассемблер и наборы команд с указанием архитектуры.