2010-07-07 37 views
8

Tôi cần một cách để tìm thấy nếu các ký tự ('<') đã đánh một bức tường (Black điểm ảnh đồ họa)Trợ giúp: ZX81 'BASIC' chức năng Peek

-Ngày một trò chơi ZX81.

Tôi đã nhìn vào trò chơi khác ... mà sử dụng mã

nếu peek (ú 16.398 + 256 * ú 16.399) = mã "blackpixel đồ họa" sau đó ...

nào dường như làm việc cho họ ...

Đây có phải là mã đúng không?

Tôi không thực sự am hiểu về địa chỉ và nhận được bộ nhớ và nội dung.

Hãy giúp tôi ...

-Nếu bạn biết cách tốt hơn. Vui lòng trả lời :) -Một người nào đó đã đề cập đến 'vị trí con trỏ' cái quái gì trên ZX81? Cảm ơn,

+5

+1 Để biết câu hỏi về cách lập chương trình ZX81 trong năm 2010 :) – Andy

Trả lời

5

PEEK(PEEK 16398+256*PEEK 16399) là một thành ngữ có nghĩa là “lấy số lượng nhân vật ở vị trí IN hiện nay”. Điều này làm việc vì từ hai byte tại 16398 được sử dụng bởi ZX81 BASIC/ROM để lưu một con trỏ đến vị trí bộ nhớ trong khối dữ liệu màn hình tương ứng với vị trí IN.

Vì vậy, để làm phát hiện va chạm, bạn muốn đầu tiên phải thiết lập:

PRINT AT X,Y; 

tọa độ đến nơi > là về để di chuyển, sau đó đọc

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

sau đó bạn có thể in > trên màn hình (ghi đè lên ký tự trước đó có mã bây giờ là C) nếu bạn muốn trước khi thực hiện kiểm tra:

IF C=128 THEN ... 

(Tôi đoán nhân vật bạn muốn là nhân vật toàn màu đen 128, █.)

Oh cậu bé, tôi cảm thấy mình già.

+0

Ok cảm ơn rất nhiều. Nghe tuyệt đó. Hãy để tôi thử nó, một vấn đề: Bạn nói 'in tại X, Y', nơi sắp di chuyển? cho bạn có nghĩa là nó đang di chuyển ở đâu? -Tôi đang nhầm lẫn về cách bạn có thể in nó, sau đó sau khi xem đoạn trích bạn nhận xét 'thì bạn có thể in ra' 'bạn có in nó hai lần không? =/ –

+1

'IN AT' không có chuỗi chỉ đặt vị trí con trỏ in. – bobince

+0

Wow, tôi không bao giờ biết rằng =] Cảm ơn rất nhiều. -Đó là lời khuyên tôi cần =] –

1

Làm điều này quay trở lại. Tôi đã không sử dụng một ZX81, nhưng tôi đã viết một số trò chơi trên một TRS-80 cách trở lại trong ngày.

Phần bên trong:

(ú 16.398 + 256 * ú 16399)

được khá nhiều việc giá trị của hai vị trí bộ nhớ (8 bit) và tạo ra một 16 bit

số từ chúng, sau đó được sử dụng làm địa chỉ của peek ngoài; bạn có thể viết lại này như:

addrToCheck = (ú 16.398 + 256 * ú 16399)

pixelValue = peek (addrToCheck)

nếu pixelValue = mã "blackpixel đồ họa", sau đó ...

Tôi đoán rằng giá trị 'addrToCheck' thực sự là vị trí ký tự trong trò chơi, được biểu thị dưới dạng địa chỉ trên màn hình. Vì vậy, nếu giá trị không phải là một bức tường, sau đó bạn sẽ cập nhật các giá trị trong địa chỉ 16398 và 16399 với một vị trí ký tự mới (sử dụng một 'poke', không có nghi ngờ).

Hope this helps

+0

Vị trí ký tự trong trò chơi? Làm thế nào tôi sẽ thiết lập điều đó? –

+0

Bằng cách chọn vị trí bộ nhớ (hoặc vị trí, rõ ràng, theo nguồn ban đầu) để sử dụng, hãy khởi chạy nó đến bất kỳ vị trí bộ nhớ màn hình nào bạn muốn nhân vật bắt đầu và tiếp tục. – jackjumper

Các vấn đề liên quan