Программная реализация в 1С недетерминированной игры с полной информацией::Журнал СА 01-02.2019
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Подписка
Архив номеров
Где купить
Наука и технологии
Авторам
Рекламодателям
Контакты
   

  Опросы
  Статьи

Дата-центры  

Дата-центры: есть ли опасность утечки данных?

Российские компании уже несколько лет испытывают дефицит вычислительных мощностей. Рост числа проектов,

 Читать далее...

Событие  

В банке рассола ждет сисадмина с полей фрактал-кукумбер

Читайте впечатления о слете ДСА 2024, рассказанные волонтером и участником слета

 Читать далее...

Организация бесперебойной работы  

Бесперебойная работа ИТ-инфраструктуры в режиме 24/7 Как обеспечить ее в нынешних условиях?

Год назад ИТ-компания «Крок» провела исследование «Ключевые тренды сервисного рынка 2023». Результаты

 Читать далее...

Книжная полка  

Читайте и познавайте мир технологий!

Издательство «БХВ» продолжает радовать выпуском интересных и полезных, к тому же прекрасно

 Читать далее...

СУБД PostgreSQL  

СУБД Postgres Pro

Сертификация по новым требованиям ФСТЭК и роль администратора без доступа к данным

 Читать далее...

Критическая инфраструктура  

КИИ для оператора связи. Готовы ли компании к повышению уровня кибербезопасности?

Похоже, что провайдеры и операторы связи начали забывать о требованиях законодательства

 Читать далее...

Архитектура ПО  

Архитектурные метрики. Качество архитектуры и способность системы к эволюционированию

Обычно соответствие программного продукта требованиям мы проверяем через скоуп вполне себе понятных

 Читать далее...

Как хорошо вы это знаете  

Что вам известно о разработках компании ARinteg?

Компания ARinteg (ООО «АРинтег») – системный интегратор на российском рынке ИБ –

 Читать далее...

Графические редакторы  

Рисование абстрактных гор в стиле Paper Cut

Векторный графический редактор Inkscape – яркий представитель той прослойки open source, с

 Читать далее...

День сисадмина  

Учите матчасть! Или как стать системным администратором

Лето – время не только отпусков, но и хорошая возможность определиться с профессией

 Читать далее...

День сисадмина  

Живой айтишник – это всегда движение. Остановка смерти подобна

Наши авторы рассказывают о своем опыте и дают советы начинающим системным администраторам.

 Читать далее...

Виртуализация  

Рынок решений для виртуализации

По данным «Обзора российского рынка инфраструктурного ПО и перспектив его развития», сделанного

 Читать далее...

Книжная полка  

Как стать креативным и востребованным

Издательский дом «Питер» предлагает новинки компьютерной литературы, а также книги по бизнесу

 Читать далее...

Книжная полка  

От создания сайтов до разработки и реализации API

В издательстве «БХВ» недавно вышли книги, которые будут интересны системным администраторам, создателям

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 6224
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 6931
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

12.03.2018г.
Просмотров: 4212
Комментарии: 0
Глубокое обучение с точки зрения практика

 Читать далее...

12.03.2018г.
Просмотров: 3004
Комментарии: 0
Изучаем pandas

 Читать далее...

12.03.2018г.
Просмотров: 3806
Комментарии: 0
Программирование на языке Rust (Цветное издание)

 Читать далее...

19.12.2017г.
Просмотров: 3818
Комментарии: 0
Глубокое обучение

 Читать далее...

19.12.2017г.
Просмотров: 6314
Комментарии: 0
Анализ социальных медиа на Python

 Читать далее...

19.12.2017г.
Просмотров: 3166
Комментарии: 0
Основы блокчейна

 Читать далее...

19.12.2017г.
Просмотров: 3459
Комментарии: 0
Java 9. Полный обзор нововведений

 Читать далее...

16.02.2017г.
Просмотров: 7275
Комментарии: 0
Опоздавших не бывает, или книга о стеке

 Читать далее...

17.05.2016г.
Просмотров: 10644
Комментарии: 0
Теория вычислений для программистов

 Читать далее...

30.03.2015г.
Просмотров: 12363
Комментарии: 0
От математики к обобщенному программированию

 Читать далее...

18.02.2014г.
Просмотров: 13998
Комментарии: 0
Рецензия на книгу «Читаем Тьюринга»

 Читать далее...

13.02.2014г.
Просмотров: 9122
Комментарии: 0
Читайте, размышляйте, действуйте

 Читать далее...

12.02.2014г.
Просмотров: 7077
Комментарии: 0
Рисуем наши мысли

 Читать далее...

10.02.2014г.
Просмотров: 5386
Комментарии: 3
Страна в цифрах

 Читать далее...

18.12.2013г.
Просмотров: 4613
Комментарии: 0
Большие данные меняют нашу жизнь

 Читать далее...

18.12.2013г.
Просмотров: 3426
Комментарии: 0
Компьютерные технологии – корень зла для точки роста

 Читать далее...

04.12.2013г.
Просмотров: 3153
Комментарии: 0
Паутина в облаках

 Читать далее...

03.12.2013г.
Просмотров: 3399
Комментарии: 0
Рецензия на книгу «MongoDB в действии»

 Читать далее...

02.12.2013г.
Просмотров: 3024
Комментарии: 0
Не думай о минутах свысока

 Читать далее...

Друзья сайта  

 Программная реализация в 1С недетерминированной игры с полной информацией

Архив номеров / 2019 / Выпуск №01-02 (194-195) / Программная реализация в 1С недетерминированной игры с полной информацией

Рубрика: Разработка /  Изучаем «1С»   | Дополнительные материалы

Кирилл Ткаченко КИРИЛЛ ТКАЧЕНКО, инженер 1-й категории, ФГАОУ ВО «Севастопольский государственный университет», tkachenkokirillstanislavovich@gmail.com

Программная реализация в 1С
недетерминированной игры с полной информацией

Программная реализация в 1С недетерминированной игры с полной информациейОна позволяет производить имитацию хода игры до победы одного из игроков. Программа может быть полезна всем изучающим программирование на языке 1С. Приводятся полный исходный текст программы и результаты ее работы

Современные компьютерные игры весьма сложны, но в основе некоторых все еще лежат простые идеи. Примером такой идеи может служить недетерминированная игра с полной информацией для нескольких игроков, которая широко известна и имеет коммерческие реализации [1, 2].

Упрощенный вариант подобной игры реализован на различных языках высокого и низкого уровня как хрестоматийный пример [3].

Поэтому целесообразно нам с вами рассмотреть программную реализацию на языке 1С, которая выполняет игру без участия игроков – то есть ее имитационную модель.

Целью настоящей работы является разработка на языке 1С имитационной модели недетерминированной игры с полной информацией, позволяющей протоколировать и воспроизводить процесс игры.

Исходный код программы имитационной модели игры находится в модуле управляемого приложения, протоколирование производится сообщением пользователю. В переменной ЗмеяЛестница находится соответствие для приземления по змее или лестнице, а в ГПСЧ – объект генератора псевдослучайных чисел для построения воспроизводимой последовательности псевдослучайных чисел:

Перем ЗмеяЛестница;
Перем ГПСЧ;

Процедура Инициализация() выполняет инициализацию доступных для подпрограмм переменных ЗмеяЛестница и ГПСЧ. Определяется переменная НомерИгры, в которой располагается текущий номер игры как семя ГПСЧ для воспроизводимой имитации:

Процедура Инициализация()
    Перем НомерИгры;

В текущем случае номер игры равен 1:

    НомерИгры = 1;

Переменной ЗмеяЛестница присваивается созданное новое соответствие, которое заполняется координатами для приземления по змее или лестнице, координаты аналогичны [3]:

    ЗмеяЛестница = Новый Соответствие();
    ЗмеяЛестница.Вставить(4, 14);
    ЗмеяЛестница.Вставить(9, 31);
    ЗмеяЛестница.Вставить(17, 7);
    ЗмеяЛестница.Вставить(20, 38);
    ЗмеяЛестница.Вставить(28, 84);
    ЗмеяЛестница.Вставить(40, 59);
    ЗмеяЛестница.Вставить(51, 67);
    ЗмеяЛестница.Вставить(54, 34);
    ЗмеяЛестница.Вставить(62, 19);
    ЗмеяЛестница.Вставить(63, 81);
    ЗмеяЛестница.Вставить(64, 60);
    ЗмеяЛестница.Вставить(71, 91);
    ЗмеяЛестница.Вставить(87, 24);
    ЗмеяЛестница.Вставить(93, 73);
    ЗмеяЛестница.Вставить(95, 75);
    ЗмеяЛестница.Вставить(99, 78);

Наконец, ГПСЧ присваивается новый созданный воспроизводимый генератор псевдослучайных чисел с семенем, равным номеру игры:

    ГПСЧ = Новый ГенераторСлучайныхЧисел(НомерИгры);
КонецПроцедуры

Функция Ход(НомерИгрока, НомерПоля) для игрока с номером НомерИгрока, находящимся на поле НомерПоля. Переменная Очки предназначена для хранения количества очков, полученных с ГПСЧНомерПоляТек – полученный новый текущий номер поля, НомерПоляСлед – возможный полученный новый следующий номер поля:

Функция Ход(НомерИгрока, НомерПоля)
    Перем Очки;
    Перем НомерПоляТек;
    Перем НомерПоляСлед;

Полученный новый текущий номер поля изначально равен номеру поля игрока, очки получаются с ГПСЧ (от 1 до 6 очков):

НомерПоляТек = НомерПоля;
    Очки = ГПСЧ.СлучайноеЧисло(1, 6);

Сообщается пользователю информация о текущем игроке и его местонахождении на игровом поле:

    Сообщить("Игрок № " + НомерИгрока + ", на поле № " + НомерПоляТек + ", очки " + Очки);

Если сумма номера поля и очков превышает 100, то игрок остается на исходном поле, иначе передвигается на поле на число очков, необходимая информация сообщается пользователю:

    Если НомерПоляТек + Очки > 100 Тогда
	Сообщить("Игрок № " + НомерИгрока + " не может перемещаться. Ход следующего игрока.");
	Возврат НомерПоляТек;
    Иначе
	НомерПоляТек = НомерПоляТек + Очки;
	Сообщить("Игрок № " + НомерИгрока + " перемещается на поле № " + НомерПоляТек);
    КонецЕсли;

Если по полученному текущему номеру поля нет змеи или лестницы, то следующий номер поля равен текущему, иначе происходит приземление на новое поле по соответствию:

    Если ЗмеяЛестница.Получить(НомерПоляТек) = Неопределено Тогда
	НомерПоляСлед = НомерПоляТек;
    Иначе
	НомерПоляСлед = ЗмеяЛестница.Получить(НомерПоляТек);
    КонецЕсли;

Если текущий номер поля игрока меньше следующего, то игрок приземлился на лестницу и поднялся на следующее поле, иначе если текущий номер поля игрока больше следующего, то игрок приземлился на змею и соскользнул наследующее поле:

    Если НомерПоляТек < НомерПоляСлед Тогда
	Сообщить("Игрок № " + НомерИгрока + " приземлился на лестницу и поднялся на поле № " + НомерПоляСлед);
    ИначеЕсли НомерПоляТек > НомерПоляСлед Тогда
	Сообщить("Игрок № " + НомерИгрока + " приземлился на змею и соскользнул на поле № " + НомерПоляСлед);
    КонецЕсли;

В конце функция возвращает номер следующего поля:

    Возврат НомерПоляСлед;
КонецФункции

Процедура Главная() обеспечивает взаимодействие остальных описанных ранее подпрограмм. В переменной НомерПоляИгрока располагается одномерный массив, ячейка которого содержит номер текущего игрового поля соответствующего ячейке по порядку номера игрока, НомерИгрока – номер текущего рассматриваемого игрока, НовыйНомерПоля – новый номер поля:

Процедура Главная()
    Перем НомерПоляИгрока;
    Перем НомерИгрока, НовыйНомерПоля;

Происходит инициализация переменных ЗмеяЛестница и ГПСЧ:

    Инициализация();

Создается новый массив НомерПоляИгрока:

    НомерПоляИгрока = Новый Массив();

Текущие номера игровых полей для всех игроков равны 1:

    НомерПоляИгрока.Добавить(1);
    НомерПоляИгрока.Добавить(1);
    НомерПоляИгрока.Добавить(1);

В бесконечном цикле по всем доступным игрокам совершается новый ход:

    Пока Истина Цикл
	Для НомерИгрока = 0 По НомерПоляИгрока.Количество() - 1 Цикл
	    НовыйНомерПоля = Ход(НомерИгрока + 1, НомерПоляИгрока[НомерИгрока]);

Игрок попадая на поле с номером 100 побеждает:

	    Если НовыйНомерПоля = 100 Тогда
		Сообщить("Игрок № " + (НомерИгрока + 1) + " победил!");
		Возврат;
	    КонецЕсли;

Иначе его новый номер поля отмечается в массиве текущих номеров полей игроков:

	    НомерПоляИгрока[НомерИгрока] = НовыйНомерПоля;
	    Сообщить("");
	КонецЦикла;
    КонецЦикла;
КонецПроцедуры

Происходит вызов главной процедуры:

Главная();

Исходный текст программы находится на сайте журнала http://samag.ru, результаты работы программы представлены на рис. 1.

Рисунок 1. Результат работы программы

Рисунок 1. Результат работы программы

Полученная программная реализация позволит изучить основные конструкции языка 1С, а также строить каркасы имитационных моделей недетерминированных игр с полной информацией.

  1. Лила (игра) // Википедия. URL: https://ru.wikipedia.org/wiki/Лила_(игра) (дата обращения: 27.12.2018).
  2. Snakes and Ladders // Wikipedia. URL: https://en.wikipedia.org/wiki/Snakes_and_Ladders (дата обращения: 27.12.2018).
  3. Snake And Ladder // Rosetta Code. URL: http://rosettacode.org/wiki/Snake_And_Ladder (дата обращения: 27.12.2018).

Ключевые слова: недетерминированная игра, игра с полной информацией, имитационная модель, 1С.


Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-45
E-mail: sa@samag.ru