سؤال

هذا السؤال لديه بالفعل إجابة هنا:

أحتاج إلى طريقة للعثور على ما إذا كانت الشخصية ("<') قد ضربت جدارًا (رسم بيكسل أسود)

-على لعبة ZX81.

كنت أنظر إلى لعبة أخرى ... والتي تستخدم التعليمات البرمجية

إذا نظرت (نظرة خاطفة 16398 +256*نظرة خاطفة على 16399) = رمز "Blackpixel Graphic" ومن بعد ...

الذي يبدو أنه يعمل من أجلهم ...

هل هذا الرمز الصحيح؟

أنا لست على دراية حقًا بالعناوين والحصول على الذاكرة والأشياء.

الرجاء مساعدتي...

-إذا كنت تعرف طريقة أفضل. الرجاء الإجابة :) -شخص ما ذكر "موقف المؤشر" ماذا بحق الجحيم هذا على ZX81؟ شكرًا،

هل كانت مفيدة؟

المحلول

PEEK(PEEK 16398+256*PEEK 16399) هو المصطلح يعني "الحصول على رقم الحرف في موضع الطباعة الحالي". يعمل هذا لأن الكلمة ثنائية البايت في 16398 تستخدم بواسطة ZX81 Basic/ROM لتخزين مؤشر إلى موقع الذاكرة في كتلة بيانات الشاشة المقابلة لموضع الطباعة.

للقيام بالكشف عن التصادم ، يجب عليك أولاً تعيين:

PRINT AT X,Y;

منسقات أين > على وشك التحرك ، ومن بعد قرأ

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

ثم يمكنك طباعة > على الشاشة (الكتابة فوق الحرف السابق الذي أصبح رمزه الآن في C) إذا كنت تريد ذلك قبل إجراء الشيك:

IF C=128 THEN ...

(أظن أن الشخصية التي تريدها هي الحرف الأسود 128 ، █.)

يا فتى ، هل أشعر بالشيخوخة.

نصائح أخرى

واو هل هذا يعود. لم أستخدم ZX81 ، لكنني كتبت بعض الألعاب على طريق TRS-80 في اليوم.

الجزء الداخلي:

(نظرة خاطفة 16398 +256*نظرة خاطفة 16399)

إلى حد كبير يأخذ قيمة موقعين للذاكرة (8 بت) وإنشاء 16 بت

العدد منهم ، والذي يستخدم بعد ذلك كعنوان للنظرة الخارجية ؛ يمكنك إعادة كتابة هذا على النحو التالي:

addrtocheck = (نظرة خاطفة 16398 +256*Peek 16399)

pixelvalue = نظرة خاطفة (addrtocheck)

إذا كان PixelValue = رمز "Blackpixel Graphic" ثم ...

أظن أن قيمة "addrtocheck" هي في الواقع موضع الحرف في اللعبة ، معبراً عنها كعنوان على الشاشة. لذا ، إذا لم تكن القيمة جدارًا ، فستقوم بتحديث القيم في العنوان 16398 و 16399 مع موضع حرف جديد (باستخدام "كزة" ، بلا شك).

أتمنى أن يساعدك هذا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top