Простая игра в кости против ПМК.
Бросая кубик, набрать 100 очков. Первым начинает игрок. Ход представляет собой серию бросков, и заключается в следующем: игрок бросает кость (кубик) неограниченное число раз и суммирует выпадающие значения. Однако если выпадает единица (свинья), вся сумма, набранная за ход, аннулируется и ход переходит к ПМК. Игрок может завершить свой ход в любой момент. То же самое делает ПМК.
В/О,
С/П.
Первым безусловно кидает кубик
игрок.
После остановки в регистре X отображается число в виде: К.-СС-ООО-ББ, где:
Например: 5.-15-042-03, означает, что сейчас была выкинута пятёрка, за серию набрано 15 очков, всего вместе с текущими 42 очка, и это третий бросок в серии.
Для того чтобы ещё раз бросить кубик, просто нажимаем С/П. Если же считаем, что ход нужно завершить (нам хватит), то вводим ноль или Cx и далее С/П. После чего ход переходим к ПМК.
Если на кубике выпала единичка (свинья), то очки за серию сгорают
и после С/П ход безусловно перейдёт к ПМК
(даже если вы введёте не ноль). Например, после четвёртого броска вышла единица:
1.-00-022-04
ПМК за себя играет всю серию сразу. При остановке значение в том же виде, только отрицательное (-К.-СС-ООО-ББ).
После снова ход игрока. Поэтому, посмотрев на достижения ПМК,
нажимаем С/П, чтобы кинуть кубик.
На экране калькулятора последние нули в числе не отображаются, поэтому
начальный промах
ПМК будет выглядеть, например, так:
-1.-00- -03.
Перед показом результата хода может отобразиться ЕГГ0Г , это значит, что ход победный. После С/П будет показан итог хода (как выше). А потом после С/П безусловно начнётся новая игра.
Параметрами игры ПМК можно управлять. Для этого используются следующие регистры:
Регистр | Значение | Пояснение |
---|---|---|
Ra | 71 |
Если кто-то из участников (ПМК или игрок) набирает
такую сумму, то ПМК кидает до победы. Можно поставить 100, если не хотите, чтобы ПМК так делал. |
Rb | 21 | Это сумму ПМК будет пытаться выбросить за свой ход. Если задать меньше – ПМК осторожничает, больше – играет агрессивнее. В действительности ПМК использует скорректированное значение, в зависимости от разрыва в очках между игроком и ПМК. А это значение используется как базовое. |
ПМК для игры использует стратегию Keep Pace and End Race, параметры которой и задаются в регистрах RA и RB.
R0 | Флаг новой игры. Если не равно единице, то начнётся новая игра. |
R1 | Флаг хода игрока. Если равно единице, то ходит игрок, иначе ПМК. |
R2 | Константа 2200.2. Используется для генерации видеоизображения. |
R3 | Рабочий. Используется ПМК для установки максимума для серии и для цикла по уменьшению порядка числа. |
R4 | Число, выброшенное кубиком. |
R5 | Номер хода в серии. |
R6 | Сумма очков за серию. |
R7 | Общая сумма очков игрока. Обновляется после перехода хода к ПМК. |
R8 | Константа 88008000. Используется для генерации видеоизображения. |
R9 | Общая сумма очков ПМК. Обновляется сразу. |
Ra | 71 (параметр). Смысл объяснён ранее. |
Rb | 21 (параметр). Смысл объяснён ранее. |
Rc | Случайное число в диапазоне (0…1). При одинаковом начальном значении выдаёт ту же последовательность случайных чисел (бросков кубика). |
Rd | Константа 82. Адрес процедуры броска кубика. |
Re | Константа 77. Адрес кода, выполняемого когда сумма превысит 71. |
# | | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 |
---|---|---|---|---|---|---|---|---|---|---|
00 | | Cx | x→П7 | x→П9 | 0 | x→П5 | x→П6 | 1 | КППd | П→x7 | + |
10 | | F10x | 1 | x→П0 | КП→x4 | П→x5 | x→П3 | FВx | П→x8 | + | П→x6 |
20 | | П→x2 | + | К∨ | П→x4 | <-> | FL1 | 28 | /-/ | /-/ | <-> |
30 | | КНОП | ВП | 1 | /-/ | FL3 | 30 | С/П | FL0 | 00 | FL1 |
40 | | 03 | П→x6 | × | Fx=0 | 06 | x→П5 | x→П6 | П→xa | FВx | П→x7 |
50 | | + | x→П7 | − | Кx≥0e | П→x9 | П→xa | − | Кx<0e | + | 8 |
60 | | ÷ | П→xb | − | x→П3 | КППd | Fx≠0 | 72 | П→x3 | + | Fx≥0 |
70 | | 64 | П→x6 | П→x9 | + | x→П9 | БП | 10 | П→x9 | 2 | F10x |
80 | | БП | 62 | x→П1 | КП→x5 | КП→x6 | П→xc | 1 | 1 | × | Fπ |
90 | | + | К{x} | x→Пc | 6 | × | К[x] | x→П4 | В↑ | П→x6 | + |
A0 | | Кmax | x→П6 | В/О |
трюкив программе.
объединениязначений из регистров X и Y. При пошаговой отладке в регистре X будет значение кубика и номер хода (отрицательная степень), а в регистре Y – суммы серии и общая сумма. В режиме исполнения они объединятся в одно число. Детально описано на странице Недокументированные возможности. Ещё момент – полученное число содержит шестнадцатеричные цифры (минус = A), поэтому степень числа (указание на количество бросков) меняется по одному в цикле (по счётчику в R3), иначе деление на всю степень сразу уберёт шестнадцатеричные цифры.
Подпрограмму генерации случайного числа по адресам 85…92 можно, при желании, поменять. Тем более, что есть резерв ещё в две команды.