برنامه ای بنویسید که بازی زیر را پیاده سازی کند.
در این بازی چهار نوع صفحه بازی وجود دارد که همگی دارای مشخصات زیر هستند:
- یک آرایه یک بعدی از خانه ها که به ترتیب از 1 تا طول صفحه بازی شماره گذاری شده اند. بعضی از صفحات دارای طول 15 و بعضی دارای طول 16 می باشند.
- هر صفحه بازی دارای یک موقعیت جاری است که بصورت پیشفرض برابر با خانه 1 می باشد.
- هر صفحه بازی دارای سه تابع moveLeft، moveRight و printCurrentPosition است.
- هر صفحه بازی دارای یک طول گام است. طول گام مشخص می کند که اندازه حرکت به راست/چپ چقدر باشد (در شکل زیر طول گام ها قابل مشاهده اند)
- توابع moveRight و moveLeft بر اساس شکل صفحه بازی حرکت می کنند که در تصویر مشخص شده است
- تابع printCurrentPosition برای هر صفحه بازی اطلاعات متفاوتی را چاپ می کند:
- صفحه بازی مستقیم: شماره خانه جاری
- صفحه بازی چرخشی: شماره خانه جاری و یکی از مقادیر بالا، پایین، راست و چپ (برای خانه هایی که در تقاطع قرار دارند، فرقی نمی کند که بالا/پایین چاپ شود یا چپ/راست)
- صفحه بازی رفت و برگشتی: شماره خانه جاری و شماره سطر (1، 2 یا 3)
- صفحه بازی زیگ زاگ: شماره خانه جاری
بازی توسط کلاس Player انجام می شود. کلاس Player دارای مشخصات زیر است:
- آرایه ای از 4 صفحه بازی از 4 نوع موجود
- یک عدد تصادفی بین 1 تا 15 در شروع بازی تولید می شود. هر صفحه بازی که زودتر به این عدد برسد برنده است و بازی متوقف می شود.
- عدد تصادفی تولید شده (هدف) چاپ می شود.
- یک حلقه وظیفه انجام بازی را به عهده دارد. در هر دور از حلقه عملیات زیر انجام می شود:
- یک عدد تصادفی بین 1 و 2 تولید می شود (1 یا 2).
- در صورتی که عدد تصادفی 1 باشد، صفحه بازی جاری به سمت راست حرکت می کند و در صورتی که 2 باشد، به سمت چپ
- موقعیت جاری صفحه بازی چاپ می شود (printCurrentPosition)
- در صورتی که موقعیت جاری صفحه بازی برابر با عدد تصادفی تولید شده (قبل از حلقه) بود، صفحه جاری برنده است. پیغام برنده شدن این صفحه چاپ شده و از حلقه خارج می شویم
- در غیر اینصورت، دور بعدی حلقه اجرا می شود
نکته ها:
- در این تمرین رفتارها و حالت ها به صورت جداگانه بیان نشده اند. وظیفه تشخیص رفتارها و حالت ها به عهده شماست.
- از یک کلاس صفحه بازی به عنوان پدر و چهار فرزند استفاده کنید.
- از دوباره نویسی توابع و چندریختی در زمان مناسب استفاده کنید.
- در صفحه های بازی، پس از رسیدن به انتهای صفحه بازی، به ابتدای آن برمی گردیم.
- استفاده از توابع اضافی مجاز است.
ارسال تمرین:
- فرصت ارسال این تمرین تا روز یکشنبه، 22 فروردین، ساعت 1:00 هست.
- فرصت ارسال تمرین به هیچ عنوان تمدید نخواهد شد.
- نحوه ارسال تمرین ها در این پست توضیح داده شده.
- عنوان ایمیل: برنامه نویسی پیشرفته، نام دانشجو، عنوان تمرین
- مثال: برنامه نویسی پیشرفته، علی بهرامی، تمرین ششم
روش تولید عدد تصادفی بین 1 و 10:
Random rnd= new Random();
int aRandomNumber= rnd.nextInt(10)+1;
System.out.println(aRandomNumber);