Mines+ MC10 by Fabrizio Caruso
ШАХТЫ+ MC10
для TRS-80 MC-10
Оригинальная идея игры от Фабрицио Карузо
Это стратегическая игра. Двигайтесь осторожно.
Вы находитесь на минном поле, где есть мины
- под ногами при движении и
- вокруг вас (больше, если вы не двигаетесь)
Вы начинаете с 3 жизнями и 9 противоминными зарядами.
Вы можете очищать территорию вокруг себя с помощью противоминных зарядов, но вы можете нести не более 9 зарядов.
Если вы достигаете предмета "$", вы получаете дополнительный заряд противоминной защиты.
Поле имеет верхнюю и нижнюю границы. При достижении вы теряете все свои жизни. Левая и правая границы закругляются.
Количество мин, появляющихся вокруг вас, постоянно увеличивается.
Если вы окажетесь на мине, вы потеряете одну жизнь.
Цели:
- Наберите максимально возможное количество очков, проходя по пустым позициям или собирая сборы "$"
- Не наступайте на мины или верхнюю и нижнюю границы.
- Достигните следующих 500 очков, чтобы получить дополнительную жизнь и полную перезарядку противоминных зарядов.
ОЦЕНКА:
- Зайти на пустую позицию: 1 балл
- Зайти в противоминный заряд "$": 10 баллов
ЭЛЕМЕНТЫ УПРАВЛЕНИЯ:
– Используйте I J K L для перемещения
- Используйте ПРОБЕЛ, чтобы очистить близлежащую территорию (если у вас остались заряды)
РАСШИРЕННЫЙ КОД (?->ПЕЧАТЬ)
0ON-((INKEY$="")И(J>0))GOTO0:CLS0:A=16384:O=A+95:P=A+271:M=35:K=1:FORI=0TOM:POKEO +RND(384),M:NEXT:IFJ>RTHENNR=J 1X=500:B=49151:Q=.98:G=O-95:H=106:W=100:V=3:T=32:Z=64:N=160:J=.:D=A +480:U=.0005:ПЕЧАТЬ@0,"ИСПОЛЬЗУЙТЕ IJKLГЛАВНЫЕ ПЕРЕМЕННЫЕ
O в правом верхнем углу стены
D расположение внизу слева на стене
Позиция игрока P
Главный символ H (106 = ромб)
M мой символ (35 = перевернутый #)
W символ минной бомбы (100 = $)
Оценка J
Результат
F количество использованных минных бомб (минных бомб осталось = 9 - F)
Вероятность Q не создать поблизости дополнительную мину
Счетчик K для бонуса дополнительной жизни (следующая дополнительная жизнь = 500 x K)
Счетчик L по модулю 4 для генерации новых мин-бомб
V количество оставшихся жизней
Позиция G вновь сгенерированной случайным образом минной бомбы
Передний план экрана Bзарегистрироваться (49151)
Исходное расположение видеопамяти (16384)
ОБЪЯСНЕНИЕ КОДА
0
// Очистить экран и установить черный цвет
CLS0:
// Ожидаем нажатия клавиши, если игра была только что перезапущена (J>0)
ВКЛ-((INKEY$="")И(J>0))GOTO0:CLS0:
// Инициализировать переменные
A=16384:O=A+95:P=A+271:M=35:K=1:
// Инициализировать экран случайными минами
FORI=0TOM:POKEO+RND(384),M:NEXT:
// Обновить запись
IFJ>RTHENR=J
1
// Инициализировать переменные
X=500:B=49151:Q=.98:G=O-95:H=106:W=100:V=3:T=32:Z=64:N=160:J=.: Д=А+480:
// Отображаем инструкцию и ждем нажатия клавиши
PRINT@0,"ИСПОЛЬЗОВАТЬ IJKL
2
// Отображение MINES+ в инвертированных цветах
POKEA+45,13:POKEA+46,9:POKEA+47,14:POKEA+48,5:POKEA+49,19:POKEA+50,43:
// Отображаем верхнюю и нижнюю границу
FORI=0TO31:POKEO-I,255-T:POKED+I,255-T:ДАЛЕЕ
3
// Обновляем оценку и отображаем запись
PRINT@0,"$"9-F;" "V" ОЦЕНКА:"J" HI:"R:
ПОКЕО-90,Ч:
// Если игрок на $, то произведите звук, увеличьте счет на 9 (дополнительные очки после +1 за ход) и
// увеличить доступные бомбы для разминирования, если еще не 9
IFPEEK(P)=WTHENSOUNDZ,1:J=J+9:F=F+(F>0)
4
// Кратковременно отображаем проигрыватель в виде красного прямоугольника для создания эффекта мерцания
ПОКЭП, 191:
// если случайным условием является попытка и позиция игрока не слишком близко к верху, то отображаем одну случайную мин.e вокруг игрока
IFRND(0)>Q AND P>O+T THENPOKEP-6+2*RND(5)-Z*(RND(3)-2),M
5
// L соответствует модулю 4
L=JAND3:
// Чтение ввода
A$=INKEY$:S=.:Y=.:IFA$<>""THENS=ASC(A$):
// Часть приёма ввода IJKL (см. [*] ниже): вычисление паритета (по вертикали и по горизонтали)
E=ПЕСОК1:
// Увеличиваем случайный шанс создания ближайших мин
Q=Q-.0005
6
// Часть трюка ввода IJKL (см. [*] ниже)
C=S-75+E:
// Показать проигрыватель
ПОКЭП,Ч:
// если нажата клавиша из I, J, K, L, то отобразить мою на позиции игрока, обновить позицию игрока, воспроизвести звук
IFSGN(C)=CTHENY=1:POKEP,M:P=P+C*31*E+C:J=J+1:SOUNDT,1:
// Если счет достигает следующего кратного K=500, то воспроизводится звук, все мины восстанавливаются и дается дополнительная жизнь
IFJ>=K*XTHENSOUNDN,2:POKEB,Z:K=K+1:F=0:V=V-(V<9)
7
// Все жизни теряются, если игрок стоит на стене
V=-V*(P
// Показать новую анимацию шахты
ПОКЕГ,W:G=O-95:
ПОКЭБ,0:
// Если L равно 3 и игрок переместился, то генерируется новый $ (перезарядка минной бомбы)
IF-YTHENIFL=3THENG=O+RND(384):POKEG,36
8
// Если нажата клавиша пробела и осталась мина-бомба, то обезвредить мины на севере, юге, востоке и западе
// уменьшаем количество доступных минных бомб, отображаем игрока в виде перевернутого ромба, мигаем экраном и
// если игрок был слишком близкоe на стену, перейти к строке 2, т.е. перерисовать стены
IFS=TTHENIFF<9THENPOKEB,Z:POKEP-1,N:POKEP+1,N:POKEP-T,N:POKEP+T,N:F=F+1:POKEP,42:
// Если игрок был слишком близко к стене, переходим к строке 2, т. е. перерисовываем стены
IFP>=(D-T)ORP<=(O+T)GOTO2
9
// Если игрок не умер, возвращаемся к строке 3 (основной игровой цикл)
ON-(V>0AND(PEEK(P)<>M))GOTO3:
// В противном случае отображаем игрока, уменьшаем количество жизней. Если остались жизни, перейдите к строке 3.
// В противном случае выводим "end", ждем пару секунд и возвращаемся к 0
F=.:POKEP,H:V=V-1:SOUND1,2:ON-(V>0)GOTO3:PRINT@Z," GAME OVER":FORI=-XTOX:NEXT:GOTO0
[ТРЮК] [*]
Я придумал этот трюк (сам) в 2019 году. Возможно, это новый трюк.
Я не использую условные выражения, предварительно вычисленные смещения и логические выражения.
Я использую формулу интерполяции, которая вычисляет смещение от ASCII-кода нажатой клавиши.
Я использую особую симметрию кодов ASCII ключей I J K L:
- I и K имеют нечетные коды и расстояние 2 байта
- J и L имеют четные коды и расстояние 2 байта
– I и K имеют нечетные коды ASCII
- J и L имеют четные коды ASCII
Итак, если s=ASC(a$) с a$ либо I, либо J, либо K, либо L, мы обновляем позицию p с помощью
p=p+c*(31*e+1)
где
- e=s и 1 -> четность кода, т. е. движение по вертикали и по горизонтали
- c=s-75+e -> -1 for влево/вверх против +1 вправо/вниз
- 31*e+1 -> абсолютное значение смещения по вертикали и горизонтали, т. е. 1 против 32
Как скачать Mines+ MC10 by Fabrizio Caruso через торрент
Всего несколько простых шагов:
- Устанавливаем программу μTorrent, через которую мы будем скачивать торренты
- Выбираем и скачиваем подходящий торрент-файл репака Mines+ MC10 by Fabrizio Caruso
- Двойным кликом открываем скаченный файл, программа μTorrent запустится автоматически и предложит выбрать место для сохранения дистрибутива.
- После того как репак скачается, запускайте его. Начнется установка и... это все, приятной игры!