Техника - молодёжи 1986-11, страница 45

Техника - молодёжи 1986-11, страница 45

век, очевидно, решил оттеснить шашку противника на фланг—ПМК реагирует четко. 2/57 (77); 2/66 (86); 1/55 (75). ПМК бежит из ловушки, человек настойчиво проводит свой план. 1/64 (84). ПМК словно «видит» возводимую перед ним глухую стену. 4/77 (73); 3/57 (62). Конечно, мы с вами в такой ситуации ускользнули бы; но сумеет ли машина? 1/53 (73); 3/46(64). Человек строит новую ловушку, и ПМК идет в нее с непростительной доверчивостью 3/55 (75); 4/86 (64). Зрители в этот момент решили, что судьба «гроссмейстера» решена. 4/75 (73); 4/84 (62); 4/73 (51); 3/44 (42); 3/33 (31). Нет! Электронный «гроссмейстер» увидел брешь в построениях противника и неудержимо ринулся на прорыв. 2/55 (22); 2/44 (13), после чего ПМК легко довел партию до победы.

Программу «Чемпион» легко использовать в варианте трех «волков» (для этого достаточно записать ноль в ячейку, соответствующую снятой с поля шашке, например, О П4), а также на доске размером 8X8 (переключатель Р-Г устанавливается в положение «градусы», при этом клетки 99, 97, 95, 93 и 91 автоматически отторгаются от игрового поля). Удобно смотреть программу с адреса 44 (команда С/П). Блок ввода (45—54) построен примерно, как и в программе Д. Кайкова, только здесь ПМК заодно определяет асимметрию — суммарное отклонение шашек противника от средней вертикальной линии (пятая вертикаль) — и заносит ее в регистр 7. В начальном положении асимметрия равна нулю, при каждом ходе она меняется на ±10. Исходя из полученного значения, ПМК выбирает приоритетное направление (доминанту): при малой асимметрии (0, 10, —10) — к ближайшему борту, при большой — к центру. Этот выбор стратегии обеспечивают команды по адресам 55—64 и 01—06 (команда В/О, записанная по адресу 64, передает управление на адрес 01). Подпрограмма ПП 88, использованная в этом блоке, дает на выходе 0, если асимметрия равна ±10, в остальных случаях значение асимметрии плюс 10 (если она равна нулю, обращение к ПП 88 обходится). На адресах 59—63 полученное значение складывается с небольшим (меньше единицы) числом, знак которого характеризует положение шашки ПМК относительно пятой вертикали. Если результат положителен, блок 01—06 формирует число —11 и записывает его в регистр 9 (в противном случае здесь оказывается 9) Вычтя это число из координат шашки ПМК, получим координаты поля, на которое она стремится в первую очередь. Но предварительно ПМК командами 07— 19 проверяет, стоит ли делать попытку такого хода. Если да, то она осуществляется (20—21). Как и в предварительных проверках, используется подпрограмма, записанная на адресах 65—94 (но в ряде случаев обращение игнори

рует ее первые команды). Посмотрим, как она действует (считаем, что в регистре 9 находится число —11).

После исполнения команды по адресу 20 в регистре X находится 2. Команда КППВ эквивалентна ПП 65, и управление передается на адрес 65. После команд 65—70 в регистре X оказывается предполагаемая новая координата шашки (прежняя -f-Н); команды 71—72 дублируют это число в регистры Y и 6. Команда ВП по адресу 73 «срезает» его первую цифру (такова особенность этой команды, когда перед ней стоит запись в регистр; при шаговом прохождении этот номер не пройдет). Легко видеть, что если предполагаемый ход завел «электронного гроссмейстера» за верхнюю, нижнюю или левую границу поля, то в результате такого отбрасывания в регистре X останется чистый ноль, следующая команда перебросит нас на команду В/О (в регистре Д записан ее адрес — 94), а та вернет управление на команду 22, причем в регистре X — ноль, ход не удался, ПМК начинает «обдумывать» следующий. Если же «срезка» первой цифры не привела к нулю, ПМК командами 75— 77 проверяет, не вышла ли его шашка за правую границу поля. При таком нарушении правил вычитание (75) даст 100, а косинус 100 градов равен нулю, и мы, как в предыдущем случае, возвращаемся на адрес 22 (теперь понятно, почему переключение Р-Г в «градусы» сужает игровое поле — косинус 90° тоже равен нулю, и в этом случае ПМК не пустит шашку на 9-ю вертикаль). Далее (78—87) ПМК проверяет, не наткнулась ли его шашка на одну из шашек противника, а заодно (командами 88—94) не идет ли она в стандартную ловушку посреди доски. В любом случае команда В/О возвращает управление на адрес 22: если ход невозможен, в регистре X находится 0, и ПМК принимается за обдумывание следующего хода. Если же возможен, команда Кх=оА (она эквивалентна Fx=0 42) передает управление на адрес 42, содержимое регистра 6 переписывается в регистр 5, ход сделан, и происходит останов для его индикации.

Если ход вперед по доминанте невозможен, ПМК проверяет, стоит ли ходить вперед против приоритетного направления (23—30), затем пытается (или отказывается) это сделать (31 — 35), а в случае неудачи пробует ходы назад (36—37) и (38—41). Если ни один ход невозможен, при останове на индикаторе горит ноль — ПМК не желает продолжать сражение.

Любителям нестандартных приемов рекомендуем обратить внимание на «нештатное» использование оператора цикла (14—15) и (29—30). В обоих случаях он используется как оператор сравнения — если содержимое регистра 0 равно 1, то работает следующая по порядку команда, если же нет — управление передается дальше, на адрес 36 Эти команды позволяют ПМК

LD

59

ч

яя

Г|

2S

л&

6&

&&

17

37

57

77

97

26

46

66

86

15

35

55

75

95

24

44

64

&4

13

33

53

75

95

22

42

62

Ж

11

зТ

5?

тГ

91

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

Рассмотренная программа пригодна только для Б3-34 (МК-54); чтобы использовать ее на новых ПМК (МК-61 или МК-52), надо сделать обычное изменение: вставить между командами 80.1 и 81.ИП6 стандартный фрагмент 81.ИПО 82.ПЕ 83.XY, а также сделать переадресацию — 57.ПП 58.88 изменить на 57.ПП 58.91, и ввести новый адрес команды В/О в регистр Д: 97 ПД.

Рассмотренная игра предоставляет богатые возможности для самостоятельного творчества. Хотя программа и называется «Чемпион», выиграть у нее довольно несложно. Но правила игры просты, поэтому каждый член КЭИ может разработать собственный алгоритм игры. В связи с этим администрация КЭИ объявляет следующий конкурс: разработать наиболее удачную программу предложенной игры. Оценивать решения будем просто: чем лучше программа играет, тем она удачнее. Если программы равны ло силе, лучшей считается более короткая (ведь в таковую, естественно, можно будет включить еще какой-нибудь блок). Дополнительный сервис (например, защита от неправильного хода человека) также будет приниматься во внимание. Можно использовать любые решения, уже опубликованные на страницах КЭИ. Если, например, ввести в программу небольшое изменение, заменив фрагмент 14—35 на 14. КНОП 15. КНОП 16.2 17.КППС 18. Fx=*o 19.23 20.2 21.КППВ 22. Кх=оА 23. ИП7 24. Fx=?=o 25. 30 26. ПП 27.88 28. Fx=o 29. 35 30. 2 31. ИП9 32. -f- 33. КППС 34. Кх=оА 35. 0, то она будет играть по-другому: в некоторых ситуациях сильнее, в других — послабее. Еще раз напоминаем правила игры: шашки ходят по диагонали на одну клетку, причем «волки»г которыми руководит человек,— только вперед. Задача «козлика» — прорваться на последнюю горизонталь, задача «волков» — не пустить его туда и прижать к краю доски. Ждем ваших решений

КЛУБ ЭЛЕКТРОННЫХ ИГР