Сапер
"Сапер" для МК-61/52.
(c) 1993 Oleg Bulychov.
Freeware, AS IS ;-)
Игра идет по правилам обычного для IBM PC или DEC сапера (minesweeper).
Размер поля 9x7 клеток:
1 2 3 4 5 6 7 8 9 ось X
0 0 1 0
1 1 1 0
2 3 0
3 + +
4
5
6
Y
Поле можно рисовать на листе в клеточку. Рекомендуется играть на
лабораторных работах во время расчетной части ;)
Внимание, здесь лежит эта прога в формате эмулятора 3000.
00: | БП | 79 | ИП0 | F10x | ИПc | + | КИПd | K(ВП) | FBx | - |
10: | Fx<0 | 16 | ИПb | 1 | + | Пb | В/O | КИП0 | КППa | ИП0 |
20: | 2 | + | П0 | КППa | ИПd | 1 | - | Пd | КППa | КИП0 |
30: | КППa | КИП0 | КППa | ИПd | 2 | + | Пd | КППa | ИП0 | 2 |
40: | + | П0 | КППa | КИП0 | КППa | ИПb | С/П | П0 | FQ | Пd |
50: | 0 | Пb | КППa | ИПb | Fx=0 | A0 | ИП0 | Fx=0 | 17 | 1 |
60: | П0 | КППa | ИПd | 1 | - | Пd | КППa | КИП0 | КППa | ИПd |
|
70: | 2 | + | Пd | КППa | 1 | П0 | КППa | БП | 45 | 0 |
80: | Пb | 9 | П0 | 1 | 0 | П1 | ИПЕ | В! | Ксч | ПЕ |
90: | 8 | + | В! | F1/x | К^ | КП1 | FL0 | 86 | БП | 45 |
A0: | ВП | . | БП | 79 |
Перед игрой выполнить следующие операции:
2 Пa 7 F10x Пc любое сч ПЕ В/О С/П
Через некоторое время (пока поле заполнялось минами) высветится нуль
Тогда нужно ввести координату клетки по оси Х, нажать В!, ввести координату по У и нажать С/П
Через некоторое время вы увидите количество мин вокруг клетки, если же на индикаторе ЕГГОГ, то вы попали на мину.
Краткие пояснения к алгоритму:
00-01: переход чтобы освободить младшие адреса для подпрограммы, критичной
по скорости выполнения,
02-16: подпрограмма подсчета количества мин в клетке с координатами в d,0;
(07: сложение по модулю 2),
далее подсчет сколько мин вокруг клетки, который начинается с адреса 59,
(КИП0 просто вычитает единицу),
46: вывод количества мин, ожидание хода,
(48: FQ - крутить стек),
55: подорвались :-(
58: оптимизация: у верхней ячейки нет соседей еще выше,
79: цикл заполнения поля минами, причем используется встроенный Ксч,
впрочем игру это не портит, IMHO,
92-94: небольшой трюк, чтобы уменьшить число мин на поле.
Я 2001