Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
METHOD-rdo.doc
Скачиваний:
55
Добавлен:
31.03.2015
Размер:
606.72 Кб
Скачать

6.2. Моделирование игры

Для иллюстрации использования объекта точек принятия решений рассмотрим реализацию на РДО модели игры "Крестики-нолики".

Суть игры заключается в том, чтобы первым пометить своим знаком три клетки игрового поля 3х3, стоящие на одной линии: горизонтальной, вертикальной или диагональной. Ходить надо по очереди, выбирая для очередного хода еще не заполненные клетки. И, конечно, надо следить за противником, не давая ему возможности выиграть.

Для моделирования игры создано три типа ресурсов (табл. 6.5).

Таблица 6.5

Тип ресурса

Описание

Игры

Постоянный ресурс, отражающий общее состояние игры и всех возможных линий игрового поля

Клетки

Постоянный ресурс, отражающий состояние одной из клеток игрового поля

Ожидания

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

Компьютер оценивает возможные варианты своего хода по одиннадцатибалльной системе. Чем меньше баллов, тем перспективнее клетка (табл. 6.6).

Таблица 6.6

Цена клетки

Характеристика клетки

11

10

9

28

1

0

Клетка занята

Клетка не приведет к выигрышу, поскольку все линии, на которых она находится, имеют оба типа знаков (крестики и нолики)

Одна из линий, на которой клетка находится, пуста

= 10  ( На_скольких_линиях,_свободных_от_противника,_находится_ _клетка + 1_балл_за_каждый_свой_значек_на_них)

Клетка находится на линии, где уже есть два значка противника  защита

Клетка находится на линии, где уже есть два своих значка  победный ход

Таким образом, клетки пустого игрового поля имеют следующие номера и цены:

Объект точек принятия решений содержит точки, которые объединяют правила, которые должны сработать при одинаковых предусловиях. В каждый момент процесса имитации должна существовать активная точка принятия решений и рабочее правило в ней, иначе работа РДО-имитатора завершится. Именно по этой причине был создан ресурс типа "Ожидание".

1)

3

2)

2

3)

3

4)

2

5)

4

6)

2

7)

3

8)

2

9)

3

Ниже приведен текст объекта точек принятия решения для модели игры "Крестики-нолики" (файл Gomoku.dpt):

$Decision_point Ход_компьютера : some

$Condition

Игра.Состояние = Идет_игра and

Игра.Сделано_ходов < 9 and

Игра.Чей_ход = Компьютер and

Игра.Оценивать_вершины < 10

$Activities {Оценка клеток до выбора одной из них }

Человек_выиграл : Образец_Человек_выиграл

{Проверка: Не выиграл ли уже человек}

Оценить_вершину_1 : Образец_Оценить_вершину 1

Оценить_вершину_2 : Образец_Оценить_вершину 2

Оценить_вершину_3 : Образец_Оценить_вершину 3

Оценить_вершину_4 : Образец_Оценить_вершину 4

Оценить_вершину_5 : Образец_Оценить_вершину 5

Оценить_вершину_6 : Образец_Оценить_вершину 6

Оценить_вершину_7 : Образец_Оценить_вершину 7

Оценить_вершину_8 : Образец_Оценить_вершину 8

Оценить_вершину_9 : Образец_Оценить_вершину 9

$End

$Decision_point Завершить_ход_компьютера : some

$Condition

Игра.Состояние = Идет_игра and

Игра.Сделано_ходов < 9 and

Игра.Чей_ход = Компьютер and

Игра.Оценивать_вершины = 10

$Activities {После оценивания всех клеток выбор одной из них

и передача хода}

Передать_ход : Образец_Передать_ход

$End

$Decision_point Розыгрыш_хода : some

$Condition

Игра.Чей_ход = Ничей

$Activities {Розыгрыш хода в начале каждого сеанса игры}

Разыграть_ход : Образец_Разыграть_ход

$End

$Activities {Принятие хода человека}

Принять_ход_1 : Образец_Принять_ход '1' 1

Принять_ход_2 : Образец_Принять_ход '2' 2

Принять_ход_3 : Образец_Принять_ход '3' 3

Принять_ход_4 : Образец_Принять_ход '4' 4

Принять_ход_5 : Образец_Принять_ход '5' 5

Принять_ход_6 : Образец_Принять_ход '6' 6

Принять_ход_7 : Образец_Принять_ход '7' 7

Принять_ход_8 : Образец_Принять_ход '8' 8

Принять_ход_9 : Образец_Принять_ход '9' 9

$End

$Decision_point Ход_человека : some

$Condition

Игра.Состояние = Идет_игра and

Игра.Сделано_ходов < 9 and

Игра.Чей_ход = Человек

$Activities {Осуществление принятого ранее хода человека}

Компьютер_выиграл : Образец_Компьютер_выиграл

Обработать_ход_чел : Образец_Обработать_ход_чел

Ожидать_хода : Образец_Ожидать_хода {Ожидание хода человека}

$End

$Decision_point После_игры : some

$Condition

Игра.Сделано_ходов = 9 or

Игра.Состояние <> Идет_игра

$Activities {Оценка результатов сеанса игры}

Человек_выиграл2 : Образец_Человек_выиграл

Компьютер_выиграл2 : Образец_Компьютер_выиграл

Ничья : Образец_Ничья

Новая_игра : Образец_Новая_игра {Начать новый сеанс игры}

Еще_играть : Образец_Еще_играть {Еще сыграем?}

$End

На рис. 6.2 и 6.3 приведены два кадра анимации. В начале имитации показывается второй кадр. Его можно сменить с помощью списка кадров. Выбирать клетку для хода можно с помощью клавиш клавиатуры ('1', '2', …'9') и мыши, указывая на соответствующие клеткам области экрана.

Рис.6.3. Первый кадр анимации игры "Крестики-нолики". Текстовый.

Рис.6.4. Второй кадр анимации игры "Крестики-нолики". Графический.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]