9

我需要一种方法来查找字符('<')是否撞到了墙上(黑色像素图形)

- 在 ZX81 游戏中。

我一直在看另一个游戏......它使用代码

如果 peek(peek 16398 +256*peek 16399) = 代码“黑色像素图形”然后...

这似乎对他们有用......

这是正确的代码吗?

我对地址和获取内存之类的东西并不是很了解。

请帮我...

-如果你知道更好的方法。请回答:) - 有人提到“光标位置”ZX81 到底是什么?谢谢,

4

2 回答 2

6

PEEK(PEEK 16398+256*PEEK 16399)是一个成语,意思是“获取当前 PRINT 位置的字符编号”。这是因为 ZX81 BASIC/ROM 使用 16398 处的两字节字来存储指向与 PRINT 位置对应的屏幕数据块中的内存位置的指针。

因此,要进行碰撞检测,您首先必须设置:

PRINT AT X,Y;

坐标到>即将移动的位置,然后读取

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

那么您可以在进行检查之前打印>屏幕上的内容(覆盖其代码现在位于的前一个字符):C

IF C=128 THEN ...

(我猜你想要的字符是全黑字符 128,█。)

哦,男孩,我是否觉得自己老了。

于 2010-07-07T18:12:02.423 回答
1

哇这要回去了。我没有使用过 ZX81,但我确实在 TRS-80 上写过一些游戏。

内部部分:

(窥视 16398 +256*窥视 16399)

几乎是取两个内存位置(8 位)的值并创建一个 16 位

它们的编号,然后用作外部 peek 的地址;您可以将其重写为:

addrToCheck = (peek 16398 +256*peek 16399)

pixelValue = peek(addrToCheck)

如果 pixelValue = code "blackpixel graphics" 那么...

我猜测'addrToCheck'值实际上是游戏中的角色位置,以屏幕上的地址表示。因此,如果该值不是墙,那么您将使用新的字符位置更新地址 16398 和 16399 中的值(毫无疑问,使用“poke”)。

希望这可以帮助

于 2010-07-07T16:59:54.127 回答