С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Andrew771, ещё вопросы.
- При зеркалировании спрайта как находишь максимальный номер блока? Я не придумал ничего лучше, чем пройтись по спрайту и поискать максимальный номер.
Либо можно принять соглашение, что последним должен описываться самый правый нижний блок и координаты брать из него.
- Функция ReadKey возвращает код кнопки или символа из таблицы в мануале? Если нажаты 3 кнопки как быть? Например, право-вверх + "огонь".
Кемпстон, который через отдельный порт, позволяет в любой комбинации нажимать все 5 кнопок, они просто выведены на 5 битов считываемого байта. Может, лучше заранее предусмотреть 3 нажатые кнопки, а при обработке клавиатуры возвращать только 2 кнопки? Или думаешь ввести отдельную функцию для джойстика?
Кстати да, не подумал сразу. В одном ряду клавиш в левой и правой половине клавиатуры можно читать до 5 одновременно нажатых клавиш.
Из книги "Как написать игру на ассемблере":
Это я еще тогда запомнил, но видимо это поклёп(Из-за упрощенной аппаратной реализации клавиатуры, примененной в ZX Spectrum, достоверно (в общем случае) можно определить одновременное нажатие не более двух каких-либо клавиш - Примеч. ред.)![]()
в идеале вообще не так должно быть
сначала ReadKeyboard() для чтения всех 8 полурядов и джойстика в буфер
А потом все сравнения if IsPressed(KeyLeft) then то, else IsPressed(KeyRight) then это. IsPressed ничего не опрашивает, просто в буфер смотрит.
Но упадет быстродействие, надо смотреть.
- - - Добавлено - - -
В оригинале опрос клавы через внутренности ULA проходит вроде, может там какие-то мутки. Но вообще похоже на гон.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)