Помощь: ZX81 «Основная» функция PEEK [дублировать

StackOverflow https://stackoverflow.com/questions/3196853

  •  02-10-2019
  •  | 
  •  

Вопрос

Этот вопрос уже имеет ответ здесь:

Мне нужен способ узнать, попал ли персонаж ('<') на стену (черный пиксельный график)

-В игре ZX81.

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

Если Peek (Peek 16398 +256*Peek 16399) = код "Blackpixel Graphic" тогда ...

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

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

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

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

-Еice вы знаете лучший способ. Пожалуйста, ответьте :) -Кто -то упомянул «позицию курсора», что, черт возьми, это на ZX81? Спасибо,

Это было полезно?

Решение

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

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

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 -битный

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

addrtocheck = (Peek 16398 +256*Peek 16399)

pixelvalue = peek (addrtocheck)

Если PixelValue = Code "BlackPixel Graphic", тогда ...

Я предполагаю, что значение «addrtocheck» на самом деле является позицией персонажа в игре, выраженной как адрес на экране. Поэтому, если значение не является стеной, то вы бы обновили бы значения в адресах 16398 и 16399 с новой позицией символа (используя «poke», без сомнения).

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top