شرلوک هلمز پس از رمزگشایی کد مورس با کمک دستیار جوانش، به سرعت پالتو و کلاه گوشیدار معروفش را بر میدارد و به سمت برج لندن میرود. پس از رسیدن به محل بمبگذاری فردی ناشناس با صدایی ترسناک به شرلوک زنگ میزند و به او میگوید برای خنثی کردن بمب باید معمایی که برایش ارسال کرده است را انجام دهد.
شرلوک پس از دیدن معما متوجه میشود که این معما در اصل معمای معروف maze
است که بازیکن باید مسیری از نقطه شروع به نقطه نهایی پیدا کند و کلید بمب با توجه به جهاتی که باید پیمایش شود تا بازی به اتمام برسد مشخص میشود. به دلیل زمان کمی که وجود دارد شرلوک از شما برای ایجاد الگوریتمی برای حل این بازی کمک میگیرد.
ظاهر کلی برنامه به صورت زیر است:
پروژه اولیه
پروژه اولیه را از این لینک دانلود کنید.
ساختار فایلها
maze
├── scripts
│ ├── direction.js
│ ├── execution.js
│ ├── generation.js
│ ├── main.js
│ ├── maze.js
│ ├── point.js
│ └── utility.js
├── solution.js
├── styles
│ ├── reset.css
│ └── styles.css
├── template
│ ├── index.html
├── assets
│ ├── favicon.svg
توضیحات
فایلها
فایل | تعریف |
---|---|
direction |
در داخل این بازی چهار جهت بالا، پایین، چپ و راست در فایل direction.js به صورت enum تعریف شده است. |
Point |
در این بازی یک کلاس به نام Point در فایل Point.js تعریف شده است که در اصل موقعیت مکانی هرکدام از سلولهای بازی است. |
maze |
در این بازی یک کلاس به نام maze در فایل maze.js تعریف شده است که در اصل زمین و مشخصات مربوط به بازی است. |
فایلdirection
direction
تعریف | مقدار |
---|---|
UP |
↑ |
DOWN |
↓ |
LEFT |
← |
RIGHT |
→ |
فایل point
point
تابع | تعریف |
---|---|
equals |
این تابع یک point دیگر را به عنوان ورودی دریافت میکند و اگر مختصات این point با مختصات خود point برابر بود مقدار true و در غیر این صورت مقدار false را برمیگرداند. |
left |
این تابع مختصات فعلی کلاس خود را یک واحد در خلاف جهت محور x میبرد.(به عنوان مثال اگر مختصات برابر x=1, y=2 باشد پس از صدا زدن این تابع مختصات جدید برابر x=0, y=2 میشود.) |
right |
این تابع مختصات فعلی کلاس خود را یک واحد در جهت محور x میبرد.( به عنوان مثال اگر مختصات برابر x=1, y=2 باشد پس از صدا زدن این تابع مختصات جدید برابر x=2, y=2 میشود.) |
up |
این تابع مختصات فعلی کلاس خود را یک واحد در جهت محور y میبرد.(به عنوان مثال اگر مختصات برابر x=1, y=2 باشد پس از صدا زدن این تابع مختصات جدید برابر x=1, y=3 میشود.) |
down |
این تابع مختصات فعلی کلاس خود را یک واحد در خلاف جهت محور y میبرد.(به عنوان مثال اگر مختصات برابر x=1, y=2 باشد پس از صدا زدن این تابع مختصات جدید برابر x=1, y=1 میشود.) |
isBlocked |
این تابع مختصاتی را به صورت یک Point دریافت میکند و در صورتی که در سلول بازی این مختصات بلاک شده باشد (قابل حرکت نباشد) یا از فضای بازی بیرون نباشد (به عنوان مثال x=-1, y=-1 ) مقدار true و در غیر این صورت مقدار false برمیگرداند. |
فایل maze
maze
متغیر | تعریف |
---|---|
startPoint |
این مشخصه در اصل مختصات مکان شروع بازی را به صورت point به شما میدهد. |
endPoint |
این مشخصه در اصل مختصات مکان پایان بازی را به صورت point به شما میدهد. |
خواسته مسئله
در فایل solution.js
تابعی به نام solveMaze
وجود دارد که شما باید در آن الگوریتمی بنویسید نا مسیری که باید از نقطه شروع (startPoint
) به نقطه پایان (endPoint
) بازی پیمایش شود را با استفاده از جهتهایی که در فایل direction.js
مشخص شده است، برگرداند.
نکات
- شما تنها قادر به تغییر فایل
solution.js
هستید. - شما تنها قادر به استفاده از توابع و مشخصههایی که در بالا توضیح داده شده است هستید.
- پس از اعمال تغییرات در فایل
solution.js
آن را در قسمت پاسخ آپلود کنید.
ارسال پاسخ برای این سؤال