اخبار و اطلاعات مربوط به دروس

در این وبلاگ مباحث مرتبط با دروس تدریسی توسط اینجانب پیگیری می شود.

اخبار و اطلاعات مربوط به دروس

در این وبلاگ مباحث مرتبط با دروس تدریسی توسط اینجانب پیگیری می شود.

هدیه ای از طرف دانشجویان
Mbt925.ir

برنامه نویسی پیشرفته - تمرین نهم

سه شنبه, ۲۶ فروردين ۱۳۹۳، ۰۸:۱۸ ب.ظ

تمرین نهم: بازی جدید

یک بازی جدید اختراع شده است. این بازی از تعدادی خانه بر روی یک مستطیل 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);

  • بیگلری

نظرات  (۱۵)

ﺳﻼﻡ اﺳﺘﺎﺩ
ﻣﺎ ﺻﺒﺢ و ﺑﻌﺪ اﺯ ﻇﻬﺮ ﭘﻨﺞ ﺷﻨﺒﻪ ﺑﺮا acm ﻭﻗﺖ ﻧﺪاﺭﻳﻢ اﺯ ﻳﻪ ﻃﺮﻑ ﭼﻬﺎﺭ ﺷﻨﺒﻪ ﺗﺎ ﻋﺼﺮ ﻛﻼﺳﻴﻢ
اﮔﻪ ﺧﻮﺩﻣﻮﻧﻮ ﺑﻜﺸﻴﻢ و ﺟﻤﻌﻪ ﺑﻨﻮﻳﺳﻴﻢ ﺑﻘﻴﻪ ﺩﺭﺳﺎﺭﻭ اﻓﺘﺎﺩﻩ ﺑﺎﻳﺪ ﻓﺮﺽ ﻛﻨﻴﻢ,
ﻟﻂﻔﺎ ﻣﻬﻠﺘﺸﻮ ﺑﻴﺸﺘﺮ ﻛﻨﻴﺪ
پاسخ:
مهلت تا سه شنبه تمدید میشه
استاد الآن خروجی باید چطوری باشه؟
آیا باید مراحل بازی رسم بشه؟
استاد اینایی که گفتین یعنی,چه؟؟!!!یا توقعات زیاده یا ما خودمون رو دست کم گرفتیم
پاسخ:
شایدم صورت سوال رو متوجه نشدید، چون خیلی سادست!
  • زلال احمدیان
  • استاد این هفته شنبه امتحان معادلات هست
    سشنبه امتحان ریاضی دو
    اگر امکانش هست مهلت تمدید بشه
    پاسخ:
    فعلا روی تمدید شدن مجدد حساب نکنید.
    سلام استاد 
    ببخشید میشه یک کم در مورد برنامه بیشتر توضیح بدید.
    با تشکر.
    پاسخ:
    سلام. خیر.
    استاد صفحه بازی همیشه مربع شکل نیست.میتونه مسطتیل هم باشه.درسته؟

    پاسخ:
    بله
    سلام استاد
    میتونیم از توابع یا سازنده های بیشتری استفاده کنیم؟؟؟؟؟؟؟؟
    پاسخ:
    سلام. اگر منطق برنامه زیر سوال نره، بله.
    مثلا اگر طراحی درست باعث میشده که نیاز به تابع اضافی نداشته باشید، ولی ...
    استاد من برنده ها رو داخل یه آرایه دیگه ریختم تا ترتیب رو حفظ کنم .چطوری میشه نام اون کلاسی که تو ارایه هست رو تشخیص داد؟
    پاسخ:
    اسم شیء.getClass().getSimpleName()
  • ؟؟؟؟؟؟؟؟؟؟؟؟
  • خسته نباشید استاد

    برای هر رنگ باید یه کلاس تعریف کنیم یا نه؟؟؟؟؟؟؟؟؟

    پاسخ:
    بله
    استاد اینو اسم شیء.getClass().getSimpleName()  میدونم منظورم اینه که چطوری بفهمم بازیکن سبز یا ابی یا ...
    پاسخ:
    هر رنگی یه کلاس داره. دستوری که نوشتم، اسم کلاس رو میده. 

    سلام

    استاد خروجی باید چی چاپ کنه

    متلا اگ 3 و 5 بزنیم چیا رو چاپ میکنه؟؟؟

    پاسخ:
    چهارتا رشته چاپ میشه که ترتیب برنده شدن بازیکن ها هست.
    می تونید مرحله به مرحله صفحه بازی رو هم چاپ کنید (اختیاری)
    سلام...
    استاد تابع isWiinner  خالی باشه ؟یعنی واسه هر رنگ تو کلاس خودش تعریف بشه؟
    پاسخ:
    سلام. اگر می تونه مشترک تعریف بشه، در کلاس پدر تعریف بشه بهتره.
    استاد بازیکن زرد یعنی چی که هم میتونه عقب بیاد هم جلو.....اگه بخواد عقب بیاد که تو خیلی زود برنده میشه.....بعدشم اگه یه بازیکن دو تا خونه فاصله داشت واسه برنده شدن  تاس باید دو بیاد؟؟؟؟؟؟؟یا هر عددی اومد برنده میشه؟؟؟؟
    پاسخ:
    یعنی هر جهتی رو که دوست داشت، می تونه انتخاب کنه. به قول شما ممکنه زودتر برنده بشه.
    دقیقا باید دو بیاد. اگر عدد بزرگتری بیاره، از روی خونه هدف رد میشه.
    سلام استاد برای ساخت خونه ها ارایه تشکیل بدیم؟

    پاسخ:
    سلام. بله. آرایه یک بعدی کفایت می کنه
    ..:استاد نمیشه حداق واسه یه روز دیگه تمدید کنید
    توروخدا
    پاسخ:
    خیر

    ارسال نظر

    ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
    شما میتوانید از این تگهای html استفاده کنید:
    <b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
    تجدید کد امنیتی