Теннис с настройками (152)

Tags:

Нововведения

В этом новом теннисе появилось несколько настроек, которые помогут игроку самостоятельно установить размер ракетки и шарика. Кроме этого, у тенниса появилась тёмная сторона!

Также реализованы пожелания SMB и ATH по поводу:
- использования в программе механизма прерываний, что позволило сделать движение ракетки плавным
- дать возможность отбивать шарик разными частями ракетки под разным углом

А также учтены старые пожелания для увеличения скорости:
- уменьшение частоты вызова К ГРФ
- рисование ракеток в виде прямоугольников, а не линий.

Ячейки, используемые для настройки

ПD - размер шарика [осторожно, не cделайте его черезчур гиганским]
ПС - размер ракетки [чем он меньше, тем сложнее отбить мяч]
ПЕ - если ввести сюда 0 или 2, то теннис будет обычным, например, таким:

Или таким:

Если же ввести 1, то мы попадаем на удивительную тёмную сторону тенниса ;) :

Структура программы

Адреса:
0000-0027 - очищаются, а затем задаются вектора, приоритеты и номера прерываний по нажатию и по отпусканию кнопки.
0030-0055 - отрисовывается начальное состояние экрана, в т.ч. оказывается задействована подпрограмма 0112, затем идёт переход на адрес 0130.
0059-0069 - подпрограмма рисования текущего положения шарика по его координатам П2 и П3.
0070-0088 - обработка прерывания по нажатию клавиши: в П20 заносится либо 1, либо -1, в зависимости от того, какая именно клавиша нажата.
0095-0099 - обработка прерывания по отпусканию клавиши: в П20 заносится 0.
0100-0111 - подпрограмма рисования текущего положения ракетки игрока по значению ПА - координате ракетки по Y.
0112-0127 - подпрограмма инициализации начальных значений, использующая подпрограммы 0059 и 0285.
0130-0133 - на этом этапе в первый раз отрисовывается ракетка игрока путём вызова ПП 0100.
0134-0149 - если в П20 не ноль, то положение ракетки игрока соответственно переделывается [она катится на 1 пиксель вверх или вниз], иначе ничего не происходит.
0150-0255 - путём вызова ПП 0059 закрашивается текущее положение шарика и вычисляется новое. При этом скорость мячика хранится в ячейках П6 (по координате Х, записанной в П3) и П5 (по координате Y, записанной в П5) и изменяется в зависимости от столкновений со стенками и игроком. Затем мячик снова рисуется. На адресе 0249 находится злобный оператор К-, который останавливает игру, если игрок пропустит мяч.
0260-0273 - здесь перерисовывается положение ракетки МК, которая всегда верхним концом стремится находиться напротив шарика [поэтому, как и раньше, непобедима]. Затем идёт возвращение на адрес 130.
0285-0299 - подпрограмма рисования ракетки МК по значению ПВ - координате ракетки по Y.

Все ячейки, задействованные программой:
П А - координата ракетки игрока;
П В - координата ракетки МК;
П С - длинна ракеток;
П D - размер шарика;
П Е - нормальный или инвертированный вывод на экран;
П 2, П 3 - координаты шарика;
П 5, П 6 - скорость шарика;
П 20 - скорость ракетки.

Недостаток программы

Заключается в том, что при движении ракетки игрока игра заметно замедляется.

P.S. Думаю, нужно обратить внимание на рябь и чёрную полосу в крайнем правом столбце двух из приведённых рисунков. На самом деле на экране МК-152 этих удивительных вещей не видно, да и неоткуда им взяться. Возможно, это глюки программы обмена ЭКВМ-ПЭВМ версии 1.10.

Прикрепленный файлРазмер
Теннис с настройками601 байта
Оценка: 4 (Голосов 1)

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".
Увы... Автор: Black_queen152