2010-07-07 59 views
8

我需要一种方法来发现如果字符(“<”)已经碰了壁(黑色像素图形)帮助:ZX81“基本”防窥视功能

-On一个ZX81游戏。

我一直在看另一场比赛...它采用代码

如果PEEK(PEEK 16398 + 256 *偷看16399)=代码 “blackpixel图形” 那么......

哪似乎为他们工作...

这是正确的代码?

我真的不知道地址和获取内存和东西。

请帮我...

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

+5

+1关于如何在2010年编程ZX81的问题:) – Andy 2010-07-07 16:43:11

回答

5

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

所以做碰撞检测,你首先必须设置:

PRINT AT X,Y; 

坐标到其中>将要移动,然后阅读

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

那么你可以在屏幕上打印>(覆盖之前的代码现在在C中的字符),如果您想在执行检查之前进行打印:

IF C=128 THEN ... 

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

哦,孩子,我觉得自己老了。

+0

好的非常感谢。听起来很完美。让我尝试一下,一个问题:你说'在X,Y打印哪里将要移动?你的意思是现在在哪里移动? - 我很困惑你如何打印它,然后在你评论之后,你可以打印>'你打印两次吗? =/ – 2010-07-07 21:33:24

+1

没有字符串的'PRINT AT'只设置打印光标位置。 – bobince 2010-07-07 22:48:17

+0

哇,我从来不知道=]非常感谢。 - 那是我需要的建议=] – 2010-07-08 06:57:18

1

哇这是否回去。我没有使用过ZX81,但是我在当天的TRS-80上写了一些游戏。

内部部分:

(PEEK 16398 + 256 *偷看16399)

是相当多采取的两个存储单元(8位)的值,并产生一个16位的

他们的号码,然后用作外部窥视的地址;你可能改写这个:

addrToCheck =(PEEK 16398 + 256 *偷看16399)

pixelValue = PEEK(addrToCheck)

如果pixelValue =代码 “blackpixel图形”,然后...

我猜测'addrToCheck'的值实际上是游戏中的角色位置,表示为屏幕上的地址。所以如果这个值不是一堵墙,那么你应该用一个新的字符位置更新地址16398和16399中的值(毫无疑问,使用'戳')。

希望这有助于

+0

角色在游戏中的位置?我将如何设置? – 2010-07-07 17:27:51

+0

通过选择一个内存位置(显然,根据原始源),将其初始化为您希望角色启动的任何屏幕内存位置,然后执行此操作。 – jackjumper 2010-07-08 18:57:11