Справка: ZX81 BASIC "Peek" функция - PullRequest
5 голосов
/ 07 июля 2010

Мне нужен способ узнать, попал ли персонаж ('<') в стену (Черная пиксельная графика) </p>

- В игре ZX81.

Я смотрю на другую игру ... которая использует код

if peek(peek 16398 +256*peek 16399) = code "**blackpixel graphic**" then ...

Что, кажется, работает на них ...

Это правильный код?

Я не очень разбираюсь в адресах, памяти и прочем.

Пожалуйста, помогите мне ...

-Если ты знаешь лучший способ. Пожалуйста, ответьте:)

Спасибо

Ответы [ 3 ]

1 голос
/ 07 июля 2010

peek читает байт в ячейке памяти.Согласно Системные переменные Sinclair ZX81 , ячейки памяти 16398 и 16399 образуют 16-битное значение, содержащее текущее "Адрес позиции PRINT в файле дисплея" .

Таким образом, peek 16398 + 256*peek 16399 объединяет два значения в 16-битный адрес, и peek, если этот адрес (возможно), получает пиксель / символ (?) В этой позиции.

1 голос
/ 07 июля 2010

По адресам 16398 и 16399 расположены два байта, которые формируют местоположение курсора. (См. http://web.ukonline.co.uk/sinclair.zx81/chap28.html). Другими словами,

peek 16398 + 256*peek 16399

дает вам адрес памяти персонажа на экране, куда пойдет следующий PRINT. Который, по-видимому, можно изменить с помощью PRINT AT.

peek(peek 16398 + 256*peek 16399)

находит код для любого символа в этом месте. Остальное вы должны уметь выяснить.

Теперь главный вопрос: используется ли в вашей игре курсор таким же образом? Если нет, вы должны использовать другое решение.

0 голосов
/ 07 июля 2010

Зависит от того, какой адрес памяти, но заглядывание обычно означает «какое значение находится в этом месте памяти?»

Это похоже, что это должно быть хорошее чтение в этой конкретной теме.

...