我需要一种方法来查找字符('<')是否撞到了墙壁(黑像素图形)。
-在ZX81游戏中。
我一直在看另一个游戏...它使用的是以下代码
如果 peek(peek 16398 +256*peek 16399) = code "blackpixel graphic" then ...
这似乎对他们有效...
这个代码正确吗?
我不太了解地址和获取内存之类的东西。
请帮助我...
-如果您知道更好的方法,请回答 :) -有人提到“光标位置”,在ZX81上那是什么?
我需要一种方法来查找字符('<')是否撞到了墙壁(黑像素图形)。
-在ZX81游戏中。
我一直在看另一个游戏...它使用的是以下代码
如果 peek(peek 16398 +256*peek 16399) = code "blackpixel graphic" then ...
这似乎对他们有效...
这个代码正确吗?
我不太了解地址和获取内存之类的东西。
请帮助我...
-如果您知道更好的方法,请回答 :) -有人提到“光标位置”,在ZX81上那是什么?
PEEK(PEEK(16398)+256*PEEK(16399))
是一个常用语,意思是“获取当前PRINT位置的字符号码”。这是因为16398处的两个字节单词被ZX81 BASIC/ROM用来存储指向屏幕数据块中对应于PRINT位置的内存位置的指针。
所以要进行碰撞检测,首先必须设置:
PRINT AT X,Y;
这段文字涉及到it技术,意思是获取>
即将移动的坐标,然后进行读取。
LET C= PEEK(PEEK 16398+256*PEEK 16399)
如果你想在进行检查之前在屏幕上打印>
(覆盖先前字符,其代码现在为C
),则可以这样做:
IF C=128 THEN ...
PRINT AT
没有字符串参数时,仅设置打印光标位置。 - bobincePRINT AT X,Y;
(更新的答案)。我认为如果没有分号,它会进入下一行,这可能会使您的定位出错。 - bobince哇,这个好古老了。虽然我没有用过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’的值实际上是游戏中的字符位置,在屏幕上表示为一个地址。因此,如果该值不是墙,那么您将使用‘poke’更新地址16398和16399中的新字符位置值(毫无疑问)。
希望这有所帮助。