مسئلهای که باید حل میکردم
در کار همتیمیام، پاسور انتخاب کارت دست را با انتخاب مجموعهٔ زمین ترکیب میکنه. قانون باید هم ترکیب معتبر بسازد و هم اجازه ندهد بازیکن capture موجود را نادیده بگیرد.
پیادهسازی در نسخهٔ فعلی
PasurCaptureRules.GetCaptureOptions برای عددها زیرمجموعهٔ جمع تا یازده را پیدا میکنه. سرباز عددها و سربازهای زمین را میگیرد؛ بیبی و شاه یک کارت همرتبه میگیرندد.
تصمیم و هزینهٔ طراحی
IsLegalSelection شناسهٔ تکراری و کارت بیرون زمین را رد میکنه. اگر گزینهٔ جمعکردن وجود داشته باشد، انتخاب خالی غیرمجاز هست؛ قانون تولید گزینه و اعتبارسنجی از یک منبع میآیند.
مرزهای فعلی
پیداکردن زیرمجموعه مسیر بازگشتی داره و معیار عملکردی برای میزهای غیرمعمول اینجا اندازهگیری نشده. این قانون هم همهٔ شکلهای محلی پاسور را ادعا نمیکنه؛ دربارهٔ نسخهٔ موجود حرف میزنم.
سناریوهای بررسی و معنای قرارداد
برای کارت عددی، هدف یازده میتواند بیش از یک مجموعهٔ معتبر روی زمین بسازد. رابط باید امکان انتخاب را توضیح بدهد، اما نباید جمع حسابی مستقلی بنویسد که با قانون همتیمیام اختلاف پیدا کنه. GetCaptureOptions مجموعههای ممکن را تولید میکنه و IsLegalSelection انتخاب واقعی را در همان مرز بررسی میکنه. رد کردن شناسهٔ تکراری مهم هست، چون یک کارت زمین نباید دو بار در جمع حساب بشه. رد کردن کارت خارج از زمین نیز جلوی تأیید یک انتخاب کهنه را میگیرد؛ ممکنه نمایش قبلی هنوز به نمونهای اشاره کنه که دیگر روی میز نیست.
قانون سرباز با بیبی و شاه متفاوت هست و نباید از روی ظاهر مشابه کارتهای چهرهدار یک رفتار مشترک برایشان ساخت. سرباز کارتهای عددی و سربازها را جمع میکنه، ولی بیبی یا شاه یک کارت همرتبه را میگیرد. همچنین وقتی گزینهٔ جمع کردن وجود داره، انتخاب خالی قانونی نیست؛ رها کردن سادهٔ کارت تنها وقتی میتواند پذیرفته بشه که شرط لازم برقرار باشد. تولید زیرمجموعه به روش بازگشتی برای جدول معمولی قابل فهم هست، اما دربارهٔ اندازههای غیرعادی بدون اندازهگیری وعدهٔ کارایی نمیدهدم. این یادداشت به همین قواعد موجود محدود هست و اختلاف نسخههای محلی پاسور را نادیده نمیگیرد.
انتخاب کاربر باید در لحظهٔ پذیرش با زمین جاری سنجیده بشه. برجسته شدن چند کارت در رابط به خودی خود قانون را قطعی نمیکنه، چون وضعیت ممکنه در فاصله تغییر کرده باشد. شناسههای معتبر و بررسی همان مجموعه مرز لازم هستند. این موضوع در یکپارچهسازی مهم هست: پنل انتخاب راهنمای تصمیم هست و مرجع پذیرش همچنان قواعد پاسور همتیمیام باقی میماند، حتی اگر نمایش گزینهها سادهتر بشه.
چیزی که از این مرحله یاد گرفتم
برای من، نکتهٔ ادغام این بود که UI نباید ترکیب مستقل بسازد. زمین میتواند گزینهها را برجسته کنه، ولی اعتبار حرکت باید دوباره با همان قانون نوشتهشدهٔ همتیمیام سنجیده بشه.
مثال عملی جمعکردن کارت پاسور
اگر بخواهی جمعکردن کارت پاسور را در یک پروژهٔ کوچک بررسی کنی، بهتر است از یک موقعیت محدود شروع کنی. بازیکن یک کارت میدهد و چند ترکیب ممکن از کارتهای زمین برای جمعکردن دارد. ورودی را ثابت نگه دار و نتیجهٔ مورد انتظار را پیش از اجرای نسخه بنویس. این کار کمک میکند تفاوت میان رفتار منطقی و چیزی که صرفاً روی صفحه دیده میشود روشن بماند. سناریوی این بخش آموزشی است و ادعای نتیجهٔ واقعی یک آزمایش روی کاربران دلو ندارد.
خطای رایج و علت آن
انتخاب کارت روی زمین با تأیید ترکیب قانونی یکسان نیست. این خطا معمولاً وقتی پنهان میماند که فقط مسیر موفق و ظاهر نهایی را ببینیم. برای پیدا کردن علت، آخرین وضعیت درست را از نخستین وضعیت نادرست جدا کن و ببین تغییر دقیقاً در کدام مرز رخ داده است. قاعدهٔ جمعکردن باید قبل از حرکت و حذف تصاویر تصمیم بگیرد. اگر این تفاوت در قرارداد مشخص نباشد، اصلاح یک نشانه ممکن است همان مسئله را در بخش دیگری دوباره ایجاد کند.
چطور نتیجه را بررسی کنیم؟
ترکیب مجاز، ترکیب نامجاز و نبود ترکیب را طبق قانون انتخابشده مقایسه کن. اجرای یکباره برای نتیجهگیری کافی نیست؛ یک بار مسیر معمول و بار دیگر همان موقعیت را با ورودی مرزی یا تکرار اقدام بررسی کن. اگر نتیجه فرق دارد، ورودی و شرایط اجرا را همراه خروجی نگه دار تا مقایسه قابل بازسازی باشد. جدول زیر خلاصهٔ مشخصات همین سناریو است و برای ثبت نتیجهٔ بررسی به کار میآید.
| بخش بررسی | آنچه باید ثبت شود |
|---|---|
| موقعیت آزمایشی | بازیکن یک کارت میدهد و چند ترکیب ممکن از کارتهای زمین برای جمعکردن دارد. |
| ریسک اصلی | انتخاب کارت روی زمین با تأیید ترکیب قانونی یکسان نیست. |
| روش بررسی | ترکیب مجاز، ترکیب نامجاز و نبود ترکیب را طبق قانون انتخابشده مقایسه کن. |
| مرز نتیجهگیری | قاعدهٔ جمعکردن باید قبل از حرکت و حذف تصاویر تصمیم بگیرد. |
پرسشهای کاربردی دربارهٔ جمعکردن کارت پاسور
از کجا شروع کنم؟
از همان موقعیت محدود این مطلب شروع کن: بازیکن یک کارت میدهد و چند ترکیب ممکن از کارتهای زمین برای جمعکردن دارد. ابتدا نتیجهٔ مورد انتظار را مشخص کن و بعد سراغ پیادهسازی یا ابزار برو. وقتی مسیر پایه قابل توضیح و بررسی شد، میتوان حالتهای بیشتری اضافه کرد. ساخت همهٔ حالتها از ابتدا، فهم علت خطا را سختتر میکند.
چه زمانی میتوانم بگویم این بخش درست کار میکند؟
زمانی که رفتار در موقعیت تعریفشده با قرارداد سازگار باشد و محدودیتهای آن روشن بمانند. ترکیب مجاز، ترکیب نامجاز و نبود ترکیب را طبق قانون انتخابشده مقایسه کن. موفقیت در این آزمون دربارهٔ همان سناریو شاهد میدهد؛ از آن نمیتوان بدون بررسی دربارهٔ همهٔ دستگاهها، همهٔ قوانین محلی یا همهٔ حجمهای داده نتیجه گرفت. قاعدهٔ جمعکردن باید قبل از حرکت و حذف تصاویر تصمیم بگیرد.
برای ادامهٔ همین موضوع، هستهٔ مشترک دلو؛ یک میز برای چند بازی و بازی دلو را ببین. زمینهٔ ساخت این پروژهها و معرفی سازنده در صفحهٔ کیان پاک نعمت آمده است.




