Сапер

"Сапер" для МК-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
Hosted by uCoz