سالها پیش حسنی که دست از تنبلی برداشته بود تصمیم گرفت در کار مزرعه به پدرش کمک کند.
اکنون که حسنی به توسعهی Front-end علاقهمند شده، تصمیم گرفته به یاد گذشته و مزرعهی پدری یک بازی با React طراحی کند. او در میانهی کار به شلمرود رفته و پروژهی نیمهکاره را به شما سپرده تا آن را کامل کنید.
در این بازی، مزرعه به شکل یک جدول از نهرهاست و هدف رساندن آب به همهی نهرهای مزرعه است. یکی از نهرها منبع آب است. با کلیک روی هر نهر، آن نهر ۹۰ درجه در جهت ساعتگرد میچرخد. بازی تعدادی مرحله دارد و با حل یک مرحله، (در صورتی که در آخرین مرحله نباشیم) دکمهی رفتن به مرحلهی بعد فعال میشود.
برای حل یک مرحله باید نهرها در وضعیتی قرار بگیرند که:
مثلاً در شکل زیر هنوز بازی حل نشده است و برای حل آن باید ۳ بار روی نهر وسط کلیک کنیم.
مثالی از بازی را در شکل زیر میبینید. در این مثال بازی تنها ۲ مرحله دارد.
پروژه اولیه را از اینجا دانلود کنید.
برای اجرای پروژه، باید NodeJS
و npm
(یا pnpm
) را از قبل نصب کرده باشید.
shalamrood
، دستور npm install
را برای نصب نیازمندیها اجرا کنید.pnpm install
استفاده کنید.npm start
را برای راهاندازی پروژه اجرا کنید.http://localhost:3000/
میتوانید نتیجه را ببینید.npm test
را اجرا کنید.حسنی برای پروژه تعدادی مؤلفه تعریف کرده که در جدول زیر مشاهده میکنید.
او با خواندن مقالهی
Lifting State Up
تصمیم گرفته حالت بازی را در بالاترین مؤلفه یعنی App
قرار دهد.
مؤلفه | توضیحات |
---|---|
App |
مؤلفهی اصلی بازی است و حالت بازی در آن قرار دارد. |
Menu |
مؤلفهی بدون حالت برای نمایش عدد مرحله و دکمههای «مرحله بعد» و «شروع مجدد» |
Board |
مؤلفهی بدون حالت برای نمایش نهرها |
Cell |
مؤلفهی بدون حالت برای نمایش یک نهر |
نهرها انواع زیر را دارند:
حالت بازی (حالت مؤلفهی App
) به صورت زیر است.
همانطور که مشخص است، تعداد سطرها و ستونها، شمارهی نهر منبع آب (source
)،
شمارهی مرحلهای که در آن قرار داریم و وضعیت نهرها در حالت قرار میگیرد.
state
از صفر شروع میشود اما هنگام نمایش از یک شروع میشود.cells
قرار میگیرد.rotate
برای هر نهر عددی بین ۰ تا ۳ است و
نشان میدهد نسبت به وضعیت اصلی نهر که در شکل بالا میبینید چند بار چرخیده است.active
برای هر نهر نشان میدهد که آب به آن نهر رسیده یا خیر.
بنابراین مقدار active
برای منبع آب باید همواره true
باشد.مواردی که باید پیادهسازی کنید:
در نمایش اولیهی مرحلهی اول بازی، باید منبع آب و همهی نهرهایی که آب به آنها میرسد فعال باشند (active: true
).
دکمهی رفتن به مرحلهی بعد باید غیرفعال باشد
(با صفت disabled
).
با کلیک روی هر نهر، باید حالت به نحوی مناسب تغییر کند تا آن نهر ۹۰ درجه بچرخد و آب نیز بر اساس وضعیت جدید نهرها به آنها برسد.
App.js
، Menu.js
، Board.js
و Cell.js
هستید.node_modules
در فایل ارسالی نباشد.