2010-07-07 61 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