لینکهای مفید برای شرکت در مسابقه:
در قسمت آموزشی برای حل سوالات، سه سری راهنمایی به انتهای سوالات اضافه میشود. زمان اضافه شدن راهنماییها را میتوانید در قسمت آموزشی پایین سوالات ببینید. همچنین میتوانید سوالهای خود را از بخش "سوال بپرسید" مطرح کنید.
مهارتهای لازم:
ظاهر کلی برنامه بدین صورت است:
پروژه اولیه را از این لینک دانلود کنید. ساختار فایلهای این پروژه به صورت زیر است.
برای اجرای پروژه، باید NodeJS
و npm
را از قبل نصب کرده باشید.
snake-game
، دستور npm install
را برای نصب نیازمندیها اجرا کنید.npm start
را برای راهاندازی پروژه اجرا کنید.http://localhost:3000/
میتوانید نتیجه را ببینید.در این سوال شما باید هوک useSnake که در فایل hooks/use-snake.js
تعریف شده را کامل کنید. این هوک در کامپوننت game.js
استفاده شده و آبجکتی شامل تمام اعضای وضعیت اولیه بازی برمیگرداند که در ابتدا برابر با آن است و سپس براساس موارد زیر تغییر میکند. شما در این سوال باید تغییرات لازم را در هر ۱۰۰ میلیثانیه (سرعت بازی) و کلیک شدن دکمههای w s a d در کیبورد روی وضعیت بازی اعمال کنید. (وضعیت اولیه بازی را حتما از فایل initialState.js
بخوانید)
وضعیت اولیه بازی
مختصات
مختصاتها در بازی مار به صورت یه ابجکت هستند. مبدا مخصات {x: 0, y: 0}
گوشه بالا سمت چپ بورد بازی است.
مربع ابی نشان داده شده در مختصات
{x: 2, y: 1}
است.
hooks/use-snake.js
و logic.js
هستید.logic.js
فقط یک فایل اضافه است که بتوانید توابعی که مربوط به logic بازی است را در آن تعریف کنید. این فایل میتواند خالی باشدnode_modules
در فایل ارسالی نباشد.در این قسمت راهنماییهای سوال، به مرور اضافه میشود. مشکلاتتان در راستای حل سوال را میتوانید از بخش "سوال بپرسید" مطرح کنید.
از useReducer
برای مدیریت استیت بازی استفاده کنید و INIT_STATE
را به عنوان استیت اولیه به آن بدهید.
بعداز تعریف useReducer
از یک useEffect
برای تعریف یک interval استفاده میکنیم که در هر ۱۰۰ میلی ثانیه dispatch را با یک اسمی مانند move صدا میزند این interval را در یک متغیر میذاریم تا هنگام return
، بتوانیم clearInterval
را روی آن صدا بزنیم.
از یک useEffect
دیگر برای تعریف دکمههای w a s d استفاده میکنیم و dispatch را با اسمی مانند change_direction و البته جهت جدید صدا میزنیم.
بقیه برنامه، فقط منطق برنامه است که داخل reducer نوشته میشوند.
توجه: این فقط یکی از روشهای ساخت این بازی است و قطعا روشهای دیگری هم وجود دارد.
قوانین بازی مار:
اگر head بعدی مار که قراره حرکت کنیم را nextHead در نظر بگیریم