مسئلهای که باید حل میکردم
کارتهای همپوشان جوکر بعد از جابهجایی ممکنه ترتیب دیداری تازهای داشته باشند. انتخاب اندیس میتونست یک کارت را preview کنه و کارت دیگری را منتقل کنه.
پیادهسازی در نسخهٔ فعلی
JokerSceneRunner انتخاب را با InstanceId میگیرد. لمس نخست پیشنمایش هست و لمس دوبارهٔ همان کارت تأیید؛ لمس کارت دیگر preview را عوض میکنه، نه اینکه double-click زمانی تشخیص بدهد.
تصمیم و هزینهٔ طراحی
فقط دست دهنده انتخابپذیر میشود و قبل از انتقال همهٔ دستها بسته میشوند. JokerCardView با raycast filter ناحیهٔ بیرونماندهٔ کارت را برای لمس محدود میکنه.
مرزهای فعلی
درستی انتخاب در دست عمودی به جهت و exposed fraction وابسته هست. وجود قرارداد شناسه مشکل همهٔ targetهای Raycast یا overlap صحنه را خودکار حل نمیکنه.
سناریوهای بررسی و معنای قرارداد
سناریوی خطا را میشود بدون زمانسنج پیچیده تصور کرد: بازیکن کارت سوم را لمس میکنه، دست دوباره مرتب میشود و جایگاه سوم اکنون به کارت دیگری تعلق داره. اگر تأیید با اندیس انجام بشه، کارت منتقلشده با کارت پیشنمایش یکی نیست. InstanceId به نمونهٔ کارت اشاره میکنه و این وابستگی به موقعیت را کاهش میدهد. دو لمس در این قرارداد به معنای انتخاب و تأیید همان نمونه هست؛ قرار نیست تشخیص دوبارکلیک با فاصلهٔ زمانی خاص باشد. لمس یک نمونهٔ دیگر، پیشنمایش را عوض میکنه و کاربر هنوز فرصت انتخاب داره.
لایهٔ ورودی نیز باید همان وعده را حفظ کنه. تنها دست اهداکننده انتخابپذیر میشود و پیش از انتقال، ورودی دستها بسته میشود تا حرکت در حال اجرا انتخاب تازه نگیرد. فیلتر raycast بخش آشکار کارت را در نظر میگیرد، چون تمام مستطیل کارت زیر همپوشانی نباید هدف لمس یکسانی باشد. این راهکار نیاز به بررسی جهت دست و مقدار بخش آشکار داره؛ دست عمودی و افقی ممکنه حس متفاوتی داشته باشند. بررسی یک انتخاب پس از جابهجایی، لمس مرز دو کارت و لمس سریع هنگام انتقال کمک میکنه مسئلهٔ هویت از مسئلهٔ هندسهٔ ورودی جدا دیده بشه.
پیشنمایش یک وعدهٔ کوچک رابط هست و باید پس از تغییر انتخاب قبلی پاک بشه. نگه داشتن برجستگی کارت قدیمی در کنار کارت تازه میتواند تأیید را مبهم کنه حتی وقتی شناسه درست هست. من این مسئله را به عنوان بازبینی وضعیت نمایش مطرح میکنم، نه نتیجهٔ آزمون انجامشده. هویت پایدار شرط مهمی هست، ولی برای انتخاب قابل فهم باید تصویر پیشنمایش هم با همان نمونه همزمان بماند.
چیزی که از این مرحله یاد گرفتم
برای من، لمس باید دقیقاً همان کارتی را وعده بدهد که جابهجا میشود. قرارداد ثابت کارت و بازخورد پیشنمایش دو بخش یک مسئلهاند: بازیکن بداند انتخابش چیست و مدل همان را دریافت کنه.
مثال عملی انتخاب پایدار کارت جوکر
برای فهم عملی انتخاب پایدار کارت جوکر، یک مثال آموزشی را قدمبهقدم دنبال کنیم. بازیکن یک کارت را لمس میکند و پیش از تأیید، ترتیب دست حریف تغییر میکند. پیش از اجرا، وضعیت آغاز را روی کاغذ بنویس؛ مشخص کن چه چیزی میتواند تغییر کند و چه چیزی باید ثابت بماند. بعد فقط همین مسیر را اجرا کن. این مثال گزارشی از آمار کاربران یا قابلیت تازهٔ منتشرشدهٔ دلو نیست؛ تمرینی برای روشن کردن تصمیم طراحی همین مطلب است.
خطای رایج و علت آن
اندیس انتخابشده ممکن است پس از بر زدن به کارت دیگری اشاره کند. این خطا معمولاً وقتی پنهان میماند که فقط مسیر موفق و ظاهر نهایی را ببینیم. برای پیدا کردن علت، آخرین وضعیت درست را از نخستین وضعیت نادرست جدا کن و ببین تغییر دقیقاً در کدام مرز رخ داده است. نمایش کارت پنهان نباید اطلاعات رتبهٔ آن را به بازیکن فاش کند. اگر این تفاوت در قرارداد مشخص نباشد، اصلاح یک نشانه ممکن است همان مسئله را در بخش دیگری دوباره ایجاد کند.
چطور نتیجه را بررسی کنیم؟
انتخاب باید به شناسهٔ ثابت وصل باشد و قبل از انتقال دوباره معتبر شود. اجرای یکباره برای نتیجهگیری کافی نیست؛ یک بار مسیر معمول و بار دیگر همان موقعیت را با ورودی مرزی یا تکرار اقدام بررسی کن. اگر نتیجه فرق دارد، ورودی و شرایط اجرا را همراه خروجی نگه دار تا مقایسه قابل بازسازی باشد. جدول زیر خلاصهٔ مشخصات همین سناریو است و برای ثبت نتیجهٔ بررسی به کار میآید.
| بخش بررسی | آنچه باید ثبت شود |
|---|---|
| موقعیت آزمایشی | بازیکن یک کارت را لمس میکند و پیش از تأیید، ترتیب دست حریف تغییر میکند. |
| ریسک اصلی | اندیس انتخابشده ممکن است پس از بر زدن به کارت دیگری اشاره کند. |
| روش بررسی | انتخاب باید به شناسهٔ ثابت وصل باشد و قبل از انتقال دوباره معتبر شود. |
| مرز نتیجهگیری | نمایش کارت پنهان نباید اطلاعات رتبهٔ آن را به بازیکن فاش کند. |
پرسشهای کاربردی دربارهٔ انتخاب پایدار کارت جوکر
از کجا شروع کنم؟
از همان موقعیت محدود این مطلب شروع کن: بازیکن یک کارت را لمس میکند و پیش از تأیید، ترتیب دست حریف تغییر میکند. ابتدا نتیجهٔ مورد انتظار را مشخص کن و بعد سراغ پیادهسازی یا ابزار برو. وقتی مسیر پایه قابل توضیح و بررسی شد، میتوان حالتهای بیشتری اضافه کرد. ساخت همهٔ حالتها از ابتدا، فهم علت خطا را سختتر میکند.
چه زمانی میتوانم بگویم این بخش درست کار میکند؟
زمانی که رفتار در موقعیت تعریفشده با قرارداد سازگار باشد و محدودیتهای آن روشن بمانند. انتخاب باید به شناسهٔ ثابت وصل باشد و قبل از انتقال دوباره معتبر شود. موفقیت در این آزمون دربارهٔ همان سناریو شاهد میدهد؛ از آن نمیتوان بدون بررسی دربارهٔ همهٔ دستگاهها، همهٔ قوانین محلی یا همهٔ حجمهای داده نتیجه گرفت. نمایش کارت پنهان نباید اطلاعات رتبهٔ آن را به بازیکن فاش کند.
برای ادامهٔ همین موضوع، هستهٔ مشترک دلو؛ یک میز برای چند بازی و بازی دلو را ببین. زمینهٔ ساخت این پروژهها و معرفی سازنده در صفحهٔ کیان پاک نعمت آمده است.




