بازی 2048
نمونهٔ 2048 یک بازی کامل با حرکت لمسی، کلیدهای جهتدار و WASD، انیمیشن حرکت، برگشت و شروع مجدد است. کد بازی در یک فایل Dart جمع شده و به متغیرها و عملکردهای اپادیتور وصل است. از Flutter استفاده میکند و پکیج جدید نیاز ندارد.
افزودن بازی
- ویجت Flutter سفارشی را داخل گروه صفحه اضافه کنید.
- در فرم روی نمونه بازی 2048 بزنید. سورس آماده و پارامتر ارتفاع وارد میشوند.
- یا فایل game2048.dart را دانلود کنید و با «بارگذاری فایل دارت» وارد کنید.
- عرض را «به اندازه والد» قرار دهید. برای صفحهٔ بازی، حدود ۶۰۰ واحد منطقی ارتفاع در نظر بگیرید.
- ویجت و صفحه را ذخیره کنید و خروجی جدید بسازید.
پارامتر ارتفاع
{
"height": 600
}
اگر والد ارتفاع محدود و مشخص داشته باشد، بازی از اندازهٔ آن استفاده میکند. در چیدمان با ارتفاع آزاد، مقدار height اندازهٔ جایگزین است؛ پیشفرض ۶۰۰ و بازهٔ قابلاستفاده ۲۰۰ تا ۲۰۰۰ است. ارتفاع خیلی کم ممکن است برای کنترلها و جدول مناسب نباشد.
این نسخه فقط height را از JSON میخواند. تغییر اندازهٔ جدول، امتیاز هدف، رنگها، نام متغیرها یا فعالبودن برگشت به تغییر کد و ساخت خروجی جدید نیاز دارد.
متغیرهای بازی
| نام | نوع ذخیره | کاربرد |
|---|---|---|
game2048_score | موقت | امتیاز بازی فعلی |
game2048_best | روی دستگاه | رکورد بین اجراهای اپ |
بازی متغیرها را خودش ایجاد و بهروز میکند. برای نمایش امتیاز در جای دیگری از صفحه، یک نمایشگر متغیر با نام game2048_score قرار دهید. برای رکورد از game2048_best استفاده کنید.
رکورد روی همان دستگاه ذخیره میشود و همگامسازی حساب کاربر نیست. وضعیت جدول ذخیره نمیشود؛ حفظ رکورد بهمعنای ادامهٔ جدول قبلی پس از بازکردن دوبارهٔ صفحه نیست.
نامها در این سورس ثابتاند. اگر دو نمونهٔ بازی در یک اپ قرار دهید، متغیرهای امتیاز و رکورد مشترک خواهند بود. برای استقلال باید نامها را در سورس یکی از نمونهها تغییر دهید و خروجی جدید بسازید.
عملکردهای برد و پایان بازی
در فهرست عملکردهای همین ویجت میتوانید این شناسهها را تعریف کنید:
| شناسه | زمان فراخوانی | پیشنهاد کاربرد |
|---|---|---|
onWin | رسیدن بازی به وضعیت برد | نمایش پیام یا بازکردن صفحهٔ موفقیت |
onGameOver | رسیدن بازی به وضعیت پایان | نمایش امتیاز نهایی یا صفحهٔ پایان |
متغیرهای امتیاز و رکورد قبل از فراخوانی عملکرد بهروز میشوند. تعریف این عملکردها اختیاری است. رویدادها با ورود به وضعیت مربوط اجرا میشوند و با هر بازسازی رابط تکرار نمیشوند؛ شروع بازی جدید یا برگشت و ورود دوباره به وضعیت پایان میتواند رویداد تازهای ایجاد کند.
امتحان در خروجی
- با کشیدن انگشت حرکت کنید؛ روی خروجی دارای صفحهکلید، جهتها یا WASD را امتحان کنید.
- امتیاز داخل بازی و نمایشگر متغیر بیرونی باید هماهنگ باشند.
- برگشت و شروع مجدد را امتحان کنید.
- اپ را دوباره باز کنید؛ رکورد باید حفظ شود و جدول تازه ایجاد شود.
- برای امتحان رویدادها،
onWinوonGameOverرا به نمایش پیام متصل کنید.
شبیهساز پنل این بازی را اجرا نمیکند. اگر سورس را تغییر دهید و فقط صفحه را آنلاین منتشر کنید، خروجی قبلی نمیتواند کد جدید را اجرا کند؛ خروجی تازه لازم است.
تبدیل بازی دیگر به ویجت
برای تبدیل یک پروژهٔ کوچک Flutter:
- Widget اصلی صفحهٔ بازی را مشخص کنید.
- کلاسهای لازم را در یک فایل جمع کنید و import فایلهای داخلی پروژه را حذف کنید.
- تابع
buildCustomWidgetرا اضافه کنید که Widget بازی را برگرداند. main،runAppوMaterialAppمستقل را کنار بگذارید.- وابستگیها را با پکیجهای فعلی خروجی تطبیق دهید؛ فایل asset جدید یا تنظیم بومی اختصاصی از این فرم اضافه نمیشود.
- امتیاز و رویدادها را با
app.addVarوapp.runActionوصل کنید. - محدودیت اندازهٔ والد و آزادسازی منابع در
disposeرا بررسی کنید.
برای قرارداد کامل و محدودیتها به راهنمای ویجت مراجعه کنید. سورس آمادهٔ این نمونه از دکمهٔ دانلود بالای صفحه در دسترس است.