برنامه نویسی پیشرفته - تمرین نهم
سه شنبه, ۲۶ فروردين ۱۳۹۳، ۰۸:۱۸ ب.ظ
تمرین نهم: بازی جدید
یک بازی جدید اختراع شده است. این بازی از تعدادی خانه بر روی یک مستطیل n در m تشکیل شده است.
قوانین بازی:
- بازی 4 نفره است
- خانه مربوط به هر بازیکن با یک رنگ مشخص شده است
- در ابتدای بازی بازیکن سبز، روی خانه قرمز قرار دارد، بازیکن قرمز، روی خانه زرد، بازیکن زرد، روی خانه آبی و بازیکن آبی روی سبز.
- هر بازیکنی که روی خانه همرنگ خود بایستد، برنده شده و از بازی کنار می رود.
- رتبه بازیکن ها به ترتیب برنده شدنشان بستگی دارد
- هر بازیکن یک تاس می اندازد
- بازیکن سبز، به اندازه مقداری که روی تاس بیاید، به جلو حرکت می کند
- بازیکن قرمز، اگر مقدار تاس بین 1 تا 3 باشد، به همان اندازه و اگر بین 4 تا 6 باشد، به اندازه نصف آن حرکت می کند
- بازیکن زرد: می تواند هم به جلو و هم به عقب حرکت کند (هر کدام که به خانه زرد نزدیک تر است)
- بازیکن آبی: مقدار تاس را از عدد 6 کم کرده و به مقدار باقیمانده حرکت می کند.
برنامه ای بنویسید که این بازی را به صورت زیر پیاده سازی کند کلاس player دارای فیلدها/توابع زیر است
- فیلد خانه: اندیس خانه ای که روی آن قرار دارد
- فیلد هدف: اندیس خانه ی هدف
- فیلد w و h: ابعاد صفحه بازی
- تابع move(int dice): مقدار تاس را گرفته و حرکت می کند
- تابع isWinner: اگر اندیس خانه ای که روی آن قرار دارد و اندیس خانه هدف برابر باشند، true برمی گرداند
نکات:
- کلاس player تابع move را خالی رها می کند
- هر کلاس این تابع را برای خود دوباره نویسی می کند
کلاس Board وظیفه اجرای بازی را بر عهده دارد و دارای فیلدها و توابع زیر است:
- سازنده این کلاس (m و n ) را دریافت می کند.
- یک آرایه چهارتایی از نوع Player که در خانه اول آن، یک بازیکن سبز، در خانه دوم، بازیکن قرمز، خانه سوم، بازیکن زرد و در خانه چهارم بازیکن آبی قرار می دهد
- وظیفه انداختن تاس (تولید یک عدد تصادفی بین 1 تا 6) به عهده این کلاس است
- تابع play: بازی می کند. با شروع از بازیکن سبز، تاس انداخته و از او می خواهد که حرکت کند (تابع move او را صدا می زند)
- این تابع بعد از هر حرکت، تابع isWinner را فراخوانی می کند. در صورتی که بازیکن مربوطه برنده شده باشد، او را از بازی کنار می گذارد.
- تابع printWinners: چهار بازیکن را به ترتیب برنده شدن در خروجی چاپ می کند
مهلت ارسال تمرین: شنبه، 6 اردیبهشت 93، ساعت 24
تولید یک عدد تصادفی بین 0 و 10:
Random rnd= new Random();
int aRandomNumber= rnd.nextInt(10);
System.out.println(aRandomNumber);
- ۹۳/۰۱/۲۶