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, ". )
О боже, я чувствую себя старым.
Ух ты, как много лет прошло. Я не использовал 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 с новой позицией персонажа (используя "тычок", без сомнения).
Надеюсь, это поможет
.