Помощь: ZX81 'ОСНОВНАЯ' функция Быстрого взгляда [дубликат]

8
задан James Rattray 7 July 2010 в 16:31
поделиться

2 ответа

PEEK(PEEK 16398+256*PEEK 16399) - это идиома, означающая "получить номер символа в текущей позиции PRINT". Это работает, потому что двухбайтовое слово 16398 используется ZX81 BASIC/ROM для хранения указателя на ячейку памяти в блоке данных экрана, соответствующую позиции PRINT.

Таким образом, чтобы сделать обнаружение столкновений, вам сначала нужно установить:

PRINT AT X,Y;

координаты в то место, куда > собирается переместиться, затем прочитать

LET C= PEEK(PEEK 16398+256*PEEK 16399)

затем вы можете напечатать > на экране (перезаписав предыдущий символ, код которого сейчас находится в C), если вы хотите, прежде чем делать проверку:

IF C=128 THEN ...

(Я предполагаю, что символ, который вам нужен, это полностью черный символ 128, ". )

О боже, я чувствую себя старым.

5
ответ дан 5 December 2019 в 22:16
поделиться

Ух ты, как много лет прошло. Я не использовал ZX81, но я написал несколько игр на TRS-80 в те времена.

Внутренняя часть:

(peek 16398 +256*peek 16399)

в основном берет значение двух мест памяти (8 бит) и создает из них 16-битное

число, которое затем используется как адрес внешнего peek; вы можете переписать это как:

addrToCheck = (peek 16398 +256*peek 16399)

pixelValue = peek(addrToCheck)

if pixelValue = code "blackpixel graphic" then. ..

Я предполагаю, что значение 'addrToCheck' на самом деле является позицией персонажа в игре, выраженной как адрес на экране. Так что если значение не является стеной, то вы обновите значения в адресах 16398 и 16399 с новой позицией персонажа (используя "тычок", без сомнения).

Надеюсь, это поможет

.
1
ответ дан 5 December 2019 в 22:16
поделиться