مساعدة: ZX81 'BASIC' PEEK وظيفة [مكررة
سؤال
هذا السؤال لديه بالفعل إجابة هنا:
أحتاج إلى طريقة للعثور على ما إذا كانت الشخصية ("<') قد ضربت جدارًا (رسم بيكسل أسود)
-على لعبة 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 مع موضع حرف جديد (باستخدام "كزة" ، بلا شك).
أتمنى أن يساعدك هذا