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

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 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Бесплатно (free)

Игра "Сапёр" на 1С. Три уровня.

04.04.2025    1073    83    user2015123    9    

18

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

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

20.02.2025    1567    69    starik-2005    9    

15

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

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

18.02.2025    1310    50    starik-2005    14    

19

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

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

10.01.2025    4093    103    KamranV21    4    

34

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

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

29.12.2024    786    38    miniogn    0    

6

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

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

10.10.2024    51558    PROSTO-1C    55    

173

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

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

29.07.2024    1660    98    user1693438    4    

11

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

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

24.07.2024    1684    124    user2015123    0    

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