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

Публикация № 1454670 07.06.21

Сообщество - Игры

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

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

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

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

Скачать файлы

Наименование Файл Версия Размер
Игра "Змейка" на управляемых формах (клиент):

.epf 8,29Kb
0
.epf 8,29Kb Скачать

Специальные предложения

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

См. также

Майнкрафт и 1С

Игры v8 1cv8.cf Абонемент ($m)

Создай свой мир через 1С.

4 стартмани

16.07.2021    758    0    SerVer1C    0    

"Уголки" на 1С

Игры v8 Узбекистан Абонемент ($m)

Игра "Уголки" на 1С - ностальгия детства !!!

1 стартмани

09.06.2021    1713    4    royaljon    4    

Самые красивые шахматы для 1С на управляемых формах

Игры v8 8.3.14 Россия Абонемент ($m)

Здравствуйте, представляем Вашему вниманию классическую игру – Шахматы! Написана игра средствами 1С, на управляемых формах. Программный код представляет собой с аккуратностью составленную систему, содержащую лаконичные логические приемы и описательные имена переменных, объектов и функций. Программа полностью отлажена и многократно протестирована. Оригинальный авторский дизайн фигур, иконок и кнопок приятен глазу. Игра содержит большое количество функций, настроек и режимов игры, включая сетевую игру, тренировку с ботом или игру на двоих. Не упустите возможность найти ряд технических решений, применимых для реализации различных задач, а также поиграть в вечную игру с отличным оформлением! Желающие научиться программировать на управляемых формах могут многое почерпнуть в этой конфигурации.

5 стартмани

18.02.2021    4540    12    compmir    28    

Прототип игры Морской бой

Практика программирования Игры v8 v8::УФ 1cv8.cf Абонемент ($m)

Решенное тестовое задание при приеме на работу в крупный франч. Всё сделано строго по ТЗ. Обработка включена в конфигурацию, и может запускаться как внутри, так и как внешняя. Для правильной работы потребуется опубликовать веб-сервис. Использованы механизмы веб-сервисов, XDTO, запросов, управляемых форм.

1 стартмани

28.12.2020    1954    1    Sungang    0    

Игра 2048

Игры v8 1cv8.cf Абонемент ($m)

Игра "2048" - это головоломка, созданная по принципу соединения плиток, целью которой является число 2048.

10 стартмани

27.11.2020    2081    0    shtirlicotto    1    

Шар предсказаний: помощник в принятии важных решений

Игры v8 1cv8.cf Абонемент ($m)

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

10 стартмани

27.11.2020    1983    0    shtirlicotto    3    

Сапер на управляемых формах

Игры v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Обнаружил, что на компе нет стандартных игр, включая сапера. Написал свою версию.

1 стартмани

23.09.2020    2542    1    VitSim    5    

1С Безумный Кликер

Игры v8::УФ 1cv8.cf Абонемент ($m)

На сегодняшний день все думают о работе и деньгах, но забывают про отдых и развлечения. Я предлагаю отвлечься.

1 стартмани

11.09.2020    2592    3    EZSuleyman    4    

Морской бой в 1С (обычные и управляемые формы)

Игры v8 v8::УФ 1cv8.cf Абонемент ($m)

Классическая популярная игра "Морской бой" для 1С (обычные и управляемые формы)

1 стартмани

15.06.2020    2789    6    Denr83    0    

Дерзкий бот (бот-тролль)

Игры v8 1cv8.cf Абонемент ($m)

Если вам хочется поговорить, то вы всегда сможете поговорить с данным ботом.

1 стартмани

23.04.2020    3657    0    ranis888    2    

Игра шашки

Игры v8 Абонемент ($m)

Игра "Шашки" на управляемых формах. Все замечания и пожелания приветствуются!

1 стартмани

21.10.2019    5020    3    Robertik    3    

Выбор шкатулки. Проверка задачи по теории вероятностей

Игры v8 1cv8.cf Абонемент ($m)

Одна из любопытных задач по теории вероятностей. Любая конфигурация (в том числе пустая) на обычных формах. Платформа 8.3.

1 стартмани

25.07.2018    7017    0    boba13    3    

Вероятность выпадения нуля или единицы

Игры v8 1cv8.cf Абонемент ($m)

Обработка для расчетв вероятности выпадения нуля или единицы

1 стартмани

24.03.2017    11437    0    NECHISTb    5    

Автолегенды

Игры v8 Домашние учет и финансы Абонемент ($m)

Для коллекционеров серии журналов Автолегенды СССР. Небольшая база 1С по автомоделям из выпусков журнала. Имеются более 50 записей. Создана в 1С 8.3, но в режиме совместимости с 1С 8.2.13

1 стартмани

13.02.2017    11335    3    mack198109    1    

Конфигурация по мотивам игры "Гастроном"

Игры Практика программирования v8 Абонемент ($m)

Поиск слов из букв слова "ГАСТРОНОМ" и не только

1 стартмани

09.02.2016    12779    0    Fox-trot    0    

Процедурный генератор подземелий, лабиринтов, пещер и островов (для игр)

Игры v8 1cv8.cf Абонемент ($m)

Внешняя обработка для процедурной генерации подземелий, лабиринтов, пещер и островов (управляемые и обычные формы)

1 стартмани

25.12.2015    18137    9    Caliban    7    

Симулятор 1С-ника

Практика программирования Игры v8 1cv8.cf Абонемент ($m)

Цель игры - дорасти до самых высот, начиная с простого фрилансера.

1 стартмани

27.02.2015    12610    74    Serovkir    36    

Виртуальная битва

Игры v8 1cv8.cf Абонемент ($m)

Если у Вас есть желание попрактиковаться в создании AI и проверить его в действии, представляем "движок" для проведения виртуальных битв!

1 стартмани

03.06.2014    15029    31    Lars Ulrich    21    

Решатель для игры Wordament

Практика программирования Игры v8 Абонемент ($m)

Иногда хочется напрограммировать что-нибудь этакое интересное и не относящееся у бухгалтерско-управленческому учету себестоимостей, НДС-ов и других страшных вещей. Программа для читинга онлайн игры подходит под этот случай как нельзя лучше.

1 стартмани

10.12.2013    18496    5    Ks_83    6    

Ход конём

Игры Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

В конкурсе "Вопрос-Решение" была задана задача": "Найти минимальные ходы и их количество между двумя конями на шаххматной доске". Вот моё решение.

1 стартмани

04.04.2013    15624    8    Шёпот теней    10    

Крестики-нолики

WEB Игры v8 1cv8.cf Абонемент ($m)

Всем нам известная игра крестики-нолики

1 стартмани

11.05.2010    5581    155    Scaner    2