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

22.10.24

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Игра "Змейка" на управляемых формах (клиент):
.epf 8,29Kb
4
4 Скачать (1 SM) Купить за 1 850 руб.

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

Во время просмотра видео в голову почему-то пришел вопрос: можно ли в 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С v8.3 Бесплатно (free)

Игра Змейка на объектах форм, а ля ООП, или что можно сотворить за час )))

20.02.2025    1305    54    starik-2005    8    

15

Игры Платформа 1С v8.3 Бесплатно (free)

Когда охота "настоящего" ООП, но не знаешь, как его взять в 1С. Массив форм в форме нам поможет )))

18.02.2025    1158    38    starik-2005    14    

19

Игры Платформа 1С v8.3 Бесплатно (free)

Знакомы с серией игр Football Manager? Вся суть подобных симуляторов состоит в том, чтобы путем грамотного управления и контроля за спортивным, инфраструктурным и финансовым учетом привести свой футбольный клуб к успехам. Это ли не задача для платформы 1С - помочь в контроле учета предприятия (читай футбольного клуба)?

10.01.2025    3830    93    KamranV21    4    

32

Игры Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Бесплатно (free)

Вариация классической игры Линес в честь года змеи 2025 на шестиугольном поле, с препятствиями, для сборки змейки из 7 шаров.

29.12.2024    665    36    miniogn    0    

6

Игры Платформа 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Я Федор, ведущий разработчик 1С. На хакатоне компании команда под моим руководством перенесла игру «Герои меча и магии III» на платформу 1С. Расскажу, как устроена конфигурация «1С: Герои меча и магии» с технической точки зрения.

10.10.2024    50771    PROSTO-1C    55    

168

Игры Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

Классическая игра Морской бой, с необычным дизайном. Из особенностей: Поле игрока формируется автоматически, но есть возможность корректировать расстановку фигур. Пример игры в приложенном видео.

29.07.2024    1495    88    user1693438    3    

9

Игры Платформа 1С v8.3 1C:Бухгалтерия Россия Бесплатно (free)

Простейшие крестики-нолики с маленьким полем.

24.07.2024    1508    108    user2015123    0    

7

Игры Платформа 1С v8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 Бесплатно (free)

Классическая игра пасьянс Паук, на платформе 1С.

15.04.2024    2104    101    user1693438    3    

18
Оставьте свое сообщение