Игра "Змейка" на управляемых формах (клиент)

22.10.24

Задачи пользователя - Игры

Пишем игру с динамическим обновлением игрового поля и управлением с клавиатуры на управляемых формах, отправляем на github.

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
Игра "Змейка" на управляемых формах (клиент):
.epf 8,29Kb
9 Скачать бесплатно

Сел смотреть видео про расчет зарплаты, но, в третий раз уснув, решил немного отвлечься.
Спойлер: в итоге расчету зарплаты ничего не досталось.

Во время просмотра видео в голову почему-то пришел вопрос: можно ли в 1С как-то получать нажатия клавиш, хоть в каком-то виде? Оказалось, что на команды можно в качестве горячих клавиш вешать просто клавиши, без CTRL, ALT, SHIFT.

В общем, расскажу весь процесс разработки по порядку, сразу уточнив - опыта написания "Змейки" на других языках не имею, как в неё играть - особо не помню, написал в целом случайно.

  1. Создаем внешнюю обработку
  2. Добавляем управляемую форму
  3. Добавляем команды для поворота влево, вправо, вверх, вниз и назначаем на них горячие клавиши. Я использую WASD
  4. В качестве вьюпорта на клиенте получается использовать только ТабличныйДокумент, поэтому сразу добавляем его на форму. Для такой простой игры возможности по рисованию линий в табличном документе не пригодятся, будем просто раскрашивать ячейки
  5. Изначально я хранил координаты в реквизитах формы и закрашивал одну ячейку после каждого нажатия на клавишу, но в итоге в обработчиках нажатий осталось только изменение направления движения, которое я хранию по-одинэсному, просто текстовой строкой - "Влево"
  6. Сегменты змейки хранятся в массиве, массив каждый раз копируется в новый, чтобы реализовать перемещение (На мой взгляд, правильная альтернатива - связный список)
  7. Обновление игрового мира (в нашем случае - перемещение змейки) производится отдельной функцией, которую можно вызывать при нажатии на клавиши (больше для отладки) или по таймеру. Обработка ожидания в 1С, к сожалению, имеет разрешение всего 0.1 секунды, но я оставил её. Третий вариант - игровой цикл, Game loop.
  8. Добавляем добавление монеток (у меня массив монеток, могу себе позволить добавлять несколько штук сразу)
  9. Реализуем проверку столкновений с границей, хвостом и монетами
  10. По факту этой проверки если нужно завершаем игру
  11. Всё! В итоге получился модуль размером в 340 строк, но это я себе ни в чём не отказывал.

Для тех, кому гитхаб не отключили, выкладываю обработку на github.com. Для этого использую консольный клиент git, OneScript и precommit1c. Так что попутно по шагам расскажу как это делается, благо у меня новый компьютер и гита на нем не было:

  1. Устанавливаем git (https://git-scm.com/downloads)
  2. Создаем каталог репозитория, в нем будем хранить обработки
  3. Заходим в командной строке в каталог репозитория, далее работаем в нём
  4. Инициализируем репозиторий git init
  5. Устанавливаем OneScript https://oscript.io/downloads
  6. Устанавливаем precommit1c opm install precommit1c
  7. Инициализируем прекоммит в каталоге репозитория precommit1c —install
  8. Представляемся гиту, что-типа такого:
    PS C:\1c\git> git config --global user.email "AlexeyNecro@PochtaAlexeyaNecro.com"
    PS C:\1c\git> git config --global user.name "Alexey Necro"
  9. Кладем обработку в каталог репозитория, индексируем файлы:
    PS C:\1c\git> git add .
  10. Коммитим:
    PS C:\1c\git> git commit
    в этот момент precommit1c открывает конфигуратор и распаковывает файлы, то есть, нужна лицензия на файловую базу и желательно открытие обработок без подтверждения. Разрешить открытие обработок без предупреждения можно добавив строку
    DisableUnsafeActionProtection=.*
    в файл conf.cfg, который лежит в каталоге, куда установлена 1С
  11. После этого локальный репозиторий готов, он уже хранит изменения. Для просмотра в виде исходников удобно использовать Microsoft Visual Studio Code с плагинами для 1с (1C (BSL) Extension Pack) и GitLens.
  12. Добавляем удаленный репозиторий - можно это сделать на сайте гитхаб, например.
  13. Затем связываем удаленный репозиторий с локальным
    git remote add necro https://github.com/AlexNecro/1C
    можно посмотреть список удаленных репозиториев:
    git remote -v
  14. Привязываем удаленную ветку к нашей текущей (в этот момент требуется авторизация на сервере):
  15. git push --set-upstream necro master
  16. Далее во время работы повторяются следующие шаги:
  17. Положить (или изменить) обработку в каталоге репозитория
  18. Проиндексировать файлы git add .
  19. Коммит git commit
  20. Отправка в удаленный репозиторий git push

Протестировано на платформах 8.3.19.1138, 8.3.18.1483.

Вступайте в нашу телеграмм-группу Инфостарт

управляемые формы уф тонкий клиент git onescript precommit1c игра табличныйдокумент

См. также

Игры 1С 8.3 Бесплатно (free)

Да, это Wolfenstein на 1С, без сторонних сервисов... Только 1С, только хардкор.

24.04.2026    4699    130    darkghostterran    31    

45

Игры 1С 8.3 Россия Бесплатно (free)

Приветствую! У меня образовалось довольно много свободного времени, и я решил посвятить его творчеству: разработке казуальной игры по шагам, демонстрируя промежуточные результаты сообществу и развивая игру по полученной обратной связи.

07.04.2026    1272    40    chuprina_as    9    

13

Игры 1С 8.3 Россия Бесплатно (free)

Мастерам, проводящим настолки по Dangeons&Dragons, в помощь.

16.03.2026    1951    46    romba    0    

10

Игры 1С 8.3 1С:Библиотека стандартных подсистем Бесплатно (free)

Аналог тетриса на жёлтой платформе.

12.03.2026    1440    77    SerVer1C    6    

19

Игры 1С 8.3 Россия Бесплатно (free)

Классическая игра Три в ряд. При образовании комбинации из 3 и более фишек они исчезают, новые фишки падают сверху, а игрок получает очки. За длинные комбинации (4-5 фишек) начисляются бонусные очки.

05.03.2026    1417    126    user2163916    4    

11

Игры 1С:Предприятие 8 Россия Бесплатно (free)

Сокобан (Sokoban) — это классическая игра-головоломка, где игроку необходимо расставить ящики по целям, перемещая их по лабиринту.

20.02.2026    917    65    user2163916    3    

12

Игры 1С 8.3 Бесплатно (free)

Это расширение, практически к любой конфигурации 1С, идеально подойдёт не для того, чтобы парализовать работу организации, а для того, чтобы сформировать коллектив, объединённый общими целями, ценностями и интересами. И всё это достигается простым регулярно проводимым мероприятием по сплочению команды – шашечным турниром! В этом, не побоюсь этого слова, приложении, можно провести шашечную битву как с коллегой, так и самому с собой, если у вас раздвоение личности. А также к вашим услугам почти искусственный интеллект, то есть бот, который честно и по правилам играет с вами в поддавки, когда по правилам вы должны играть в обычные шашки.

28.12.2025    1849    126    Knyaz3d    6    

11

Игры 1С:Предприятие 8 Россия Бесплатно (free)

Преврати свой 1С с обычными формами в мощную игровую консоль! И пусть баланс подождет!

13.10.2025    8803    166    slava_1c    14    

44
Для отправки сообщения требуется регистрация/авторизация