2010-07-07 52 views
5

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

-On一个ZX81游戏。

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

if peek(peek 16398 +256*peek 16399) = code "**blackpixel graphic**" then ... 

这似乎为他们工作...

这是正确的代码?

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

请帮我...

- 如果你知道更好的方法。请回答:)

感谢,

+5

没有我的帮助;大约20年前,我从我的记忆中冲洗了这些信息。 :-) – 2010-07-07 13:31:07

+0

xD:P是的,我想知道的基础知识前现代计算:)奠定基础...... – ZX81 2010-07-07 13:31:56

+1

“我想知道的基础知识前现代计算”然后尝试ZX谱。更多的乐趣+学习一点Z80组装的好理由。您可以尝试再制造一名司钻(http://en.wikipedia.org/wiki/Driller_(video_game)),硬驾驶(http://en.wikipedia.org/wiki/Hard_driving)或另一名Elite(http:///en.wikipedia.org/wiki/Elite_(video_game))。仅用文本显示,你就会被困在流氓喜欢(http://en.wikipedia.org/wiki/Roguelike)中。 – SigTerm 2010-07-07 13:42:51

回答

0

这取决于内存地址是什么,但偷看通常意味着“什么样的价值是在这个存储位置?”

This看起来应该是在这个特定主题的一些很好的阅读。

1

peek在内存位置读取字节。根据The System Variables of the Sinclair ZX81,存储器位置1639816399形成包含当前“显示文件中的PRINT位置的地址”的16位值。

因此,peek 16398 + 256*peek 16399将这两个值组合成一个16位地址和peek该地址(可能)在该位置获得像素/字符(?)。

+0

是的,我一直在看。尽管对初学者没有任何帮助。=/ – ZX81 2010-07-07 13:38:55

1

位于地址16398和16399是形成光标位置的两个字节。 (见http://web.ukonline.co.uk/sinclair.zx81/chap28.html)。换句话说,

peek 16398 + 256*peek 16399 

给你在下一个PRINT将去的屏幕上的字符的内存地址。这显然可以用PRINT AT进行更改。

peek(peek 16398 + 256*peek 16399) 

找到任何字符在该位置的代码。其余的你应该能够弄清楚。

现在,主要问题是:您的游戏是否以相同的方式使用光标?如果没有,你必须使用不同的解决方案。

+0

嗯,那么如果我在10,10(或任何位置)'peek(peek 16398 + 256 * peek 16399)'中打印黑色像素图形,会找到黑色像素图形的代码? – ZX81 2010-07-07 13:42:12

+0

不,它会在当前光标位置找到任何图形的代码。 – Artelius 2010-07-07 13:44:14

+0

光标位置?咦? :P我从来不知道ZX81有鼠标或游标? – ZX81 2010-07-07 13:45:26