برنامهسازی پیشرفته (جاوا) نیمسال 49-49 دانشکده مهندسی کامپیوتر مدرس :سلمان مروستی تمرین سوم مهلت ارسال 11 :خرداد ماه 1334 -1مهلت ارسال تمرین تا ساعت 95:32روز جمعه 53خرداد ماه میباشد. -2 کالسها و توابع آمده در فایل ضمیمه شده باید دقیقا به همان نام باشند و شما تنها باید بدنهي آنها را با توجه به عملکرد خواسته شده بنویسید البته نوشتن توابع اضافی و تعریف متغیرهاي مورد نیاز در کالسها مجاز خواهد بود. -3تمرین باید به صورت حضوري تحویل داده شود و استفاده از کامنت ،و ساختار مناسب کد نمره خواهد داشت .بنابراین نمره کامل از سیستم داوري به معناي نمره کامل نبوده و این نمره تنها بخشی از نمرهي شما خواهد بود. -4در صورت داشتن هرگونه مشکل ،سوال خود را با تگ مناسب در مطرح کنید. سوال -1باغ وحش در انتخابات انجمن حیوانی باغ وحش ادیسون شمال ،فقط یک کاندیدا ،نامزد انتخابات شده بود .اما از آنجایی که هر نامزد باید حداقل یک سامانه جدید برای خدمت رسانی به هم باغ وحشی ها معرفی کند ،جناب نامزد ،که االغی مهربان بود ،به فکر فرو رفت و پس از غور کردن در بحر اندیشه ،به سامانه ای سودمند برای مدیریت باغ وحش رسید تا بدین وسیله هم دل مدیران باغ وحش و هم دل حیوانات عزیز را به دست آورده باشد .این شد که سامانه ی مطرح در این سوال ابداع گردید .سعی کنید با پیاده سازی درست این سامانه ،به االغ عزیز کمک کنید تا مسئولیت انجمن حیوانی را به دست بگیرد .برای این کار ،همانند تمرین قبل ،کالسها و متدهای ضمیمه در فایل Zoo.javaرا کامل نمایید. قواعد معنایی محیط هر حیوان یک نام مشخص دارد .همچنین یک سطح انرژي مشخص دارد که با حرکت کردن و نیز تولید مثل ،کاهش یافته و با تغذیه زیاد می شود .میزان کاهش ،بستگی به حیوان و میزان افزایش بستگی به غذا دارد .هر غذا مقدار مشخصی انرژي دارد که در اثر تناول آن ،به همان میزان به سطح انرژي تناولگر ( )افزوده میشود .براي هر حیوان ،میزان کاهش انرژي در اثر حرکت و تولید مثل ،به عنوان ورودي هنگام ساخت آن حیوان داده میشود. هر حیوان سقف عمري دارد که با رسیدن به آن ،دار فانی را وداع خواهد گفت! البته به دالیلی که ذکر خواهد گشت، ممکن است قبل از رسیدن به آن سن ،اقدام به ترک دنیا کند. گذر زمان را متد nextRoundبرعهده دارد .هر بار که این متد صدا زده میشود ،یک واحد زمان به جلو میرود. نیاز به نگهداری زمان سپری شده نیست ،لکن تاثیر زمان باید رعایت شود .یعنی با هر بار صدازدن این متد ،سن هر حیوان یک واحد زیاد میشود .خروجی این متد ،در هر بار صدا کردن آن ،لیستی از حیوانات متوفی در پایان آن مرحله است .حیواناتی که به عنوان متوفی بازگردانده میشوند ،به یکی از سه دلیل زیر مرده اند: .1خوراک ناکافی (یعنی اگر سطح انرژي آنها در هنگام صدازدن متد ،مثبت نباشد) .2مسکن ناکافی! (در واقع یعنی مسکن نداشته باشند ،در این باره بیشتر توضیح داده خواهد شد) .9رسیدن به سن غیرقانونی (یعنی سقف عمر) هر حیوان مسکن مشخصی دارد .حیواناتی که پرواز میکنند ،روي درخت و حیواناتی که پرواز نمیکنند ،در قفس زندگی میکنند (از آنجا که آبزیان و آنهایی که زیاد زیرآبی میروند ،نباید حق راي داشته باشند ،االغ عزیز آنها را در سامانه خود حساب نکرده است) توجه داشته باشید که هر نوع حیوانی ،در مسکن همان نوع زندگی میکند .بنابراین در قفس فیل ،فقط فیل میتواند زندگی کند. هر غذا ،مدتزمان مصرف مشخصی دارد که اگر از آن زمان بگذرد ،اثر عکس خواهد داشت .یعنی به همان میزان انرژي آن ،از انرژي تناول کننده آن خواهد کاست! قرار بود هر مسکن (چه قفس چه درخت) ظرفیت مشخصی داشته باشند ،و براي کنترل ظرفیت آن و جلوگیري از پرشدن ،چند قاعده معنایی دیگر ،به این قواعد اضافه شود .از آنجا که االغ مهربان رقیب خاصی ندارد که براي رقابت با او ،سطح کیفی محصولش را باال ببرد ،و نیز براي رفاه حال پیادهسازان سامانه که ممکن است دلمشغولیهاي فراوان دیگري داشته باشند ،از این مورد صرف نظر کرد هر حیوان ،جنسیت مشخص دارد .برای تولید مثل ،باید به این امر توجه شود که جنسیت دو حیوان متفاوت بوده و نیز، دو حیوان از یک نوع باشند (حاالت استثنا مثل اسب و خر و اینها که محصول بازارمشترک تولید میکنند را نادیده بگیرید) همچنین هر نوع حیوان ،دوره بارداری مشخصی دارد .پس از طی شدن آن دوره (که با متد nextRound طی میشود) بچههای آن تولید شده و به همان قفس یا درخت اضافه میشوند .تعداد بچههای متولد شده در هر بارداری ،عددی است که برای هر نوع حیوان فرق میکند .این عدد ،برای ماکیان ،شش ،برای کانگرو ،سه و برای خفاش ،دو میباشد .حیوان مادهای که در دوران بارداری خود است ،نمیتواند در عمل تولید مثل دیگری شرکت کند .نام فرزندان ،به صورت ترکیب نام پدر (برای فرزندان فرد) یا نام مادر (برای فرزندان زوج) با شماره (ترتیب) تولدشان است .در اینصورت نام فرزند اول Jackو Janeهمانا ، Jack1نام فرزند دومشان ، Jane2سومی Jack3و ...خواند بود. توجه داشته باشید که انرژی کاهش یافته در تولید مثل ،در همان مرحله (یعنی هنگام صدازدن متد )breedکاهش مییابد و نه در مرحله به دنیا آمدن فرزند(ان). کانگروها ،قابلیتی اضافی دارند .آنها میپرند! وقتی کانگرویی میپرد ،از انرژي هر کسی در قفس نباشد ،به اضافه همهي کانگروهاي هم قفسی اش ،به علت لذت و هیجان باال چهار واحد کم میشود! توجه کنید که هر حیوان در بدو تولد سطح انرژي اولیهاي برابر با 92دارد. هر حیوان صدای مشخصی دارد که با صدا زدن متد مربوط به آن ،آن صدا در قالب رشتهای برگردانده میشود! این صدا برای نوع حیوان ،در حالت کلی ،رشتهی ” ،“aaaarrr aaaarrrبرای پستانداران نیز همان ،برای مرغ “ghodghodghodaaaaa”،و برای خروس “ghoughoulighoughou” ،میباشد. هر قفس ،شمارهي یکتایی دارد که از 5شروع میشود و یکی یکی زیاد میشود .همچنین است هر درخت! براي موارد مورد نیاز ،باید استثناهایی پرتاب شوند .بدین منظور ،استثناهاي زیر در نظر گرفته شدهاند: :TypeMismatchExceptionاگر در تولید مثل ،دو حیوان از دو نوع مختلف باشند .فرمت این استثنا باید به صورت مقابل باشد ‘T1’ && ‘T2’ :که T1و T2نوع حیوانات است! :GenderMatchExceptionاگر در تولید مثل ،جنیست دو حیوان یکی باشد .فرمت این استثنا باید اینگونه باشد ‘G’ :که Gجنسیت آنهاست. :PregnantExceptionاگر حیوان باردار ،برای تولید مثل ،فراخوانی شود .فرمت این استثنا باید اینگونه باشد ‘#’, ‘*’ :که #نام حیوان باردار و * زمان گذشته از دوران بارداریش است. :HouseMismatchExceptionاگر در مسکن دادن به یک حیوان ،نوع مسکن و نوع حیوان یکسان نباشد. استثنای نوع چهارم ،باید کنترل شود و در صورت رخ دادن آن ،عملی انجام نشود! سه استثنای دیگر ،نباید کنترل شوند. سوال -2مار عمین! که پس از سالها بازی با گربهها ،به تازگی عالقهی خاصی به خزندگان و به خصوص مارها پیدا کرده است، در تالش است حضور مارها را در زندگیاش پررنگتر کند .برای همین تصمیم گرفت در تمام لحظات فراغتش به بازی مار یا همان snakeمشغول شود و این موجود دوستداشتنی را هر چه بیشتر در لحظات خود حس کند .به همین جهت برای کمک به علی در راه رسیدن به این هدف شما میبایست این بازی را برای او پیادهسازی کند. در این سوال شما باید بازی snakeکه احتماال خاطرات زیادی را با آن دارید ،پیادهسازی کنید. در صورتی که حافظهی تان یاری یادآوری بازی را نمیکند میتوانید از این لینک بازی را مشاهده کنید: http://patorjk.com/games/snake برای ابتدای بازی ،نام کاربر را از آن دریافت کرده تا در تمامی صفحات بازی ،آن را نمایش دهید. بعد از وارد کردن نام ،به کاربر صفحهی خوش آمد گویی را نشان میدهید .کاربر با فشردن یکی از دکمههای جهت (باال ،پایین ،چپ و راست) بازی را شروع میکند و مار در جهت کلید فشرده شده حرکت خود را شروع میکند .مار همواره در حال حرکت است و شما باید بازی را به گونه ای طراحی کنید که مار بوسیله کلیدهای جهت روی صفحه کلید ،کنترل شود .نکته قابل ذکر این است که مار با کنترل در جهت عکس حرکت فعلی حرکت نمی کند و تنها در صورتی که کلید تغییر جهت تغییر 09درجه را نشان دهد جهتش عوض میشود. طول مار در ابتدای بازی 2است .غذاهایی به صورت رندوم در هر مرحله درون صفحه قرار میگیرد و در صورتی که مار هر کدام از این غذاها را بخورد دو واحد به طولش زیاد میشود و 1امتیاز به امتیازهای کاربر اضافه میشود. امتیازات کاربر باید در صفحه بازی نمایش داده شود .به ازای هر 4غذای خورده شده یک واحد رژیم غذایی باید در صفحه برای 19ثانیه ظاهر شود که در صورتی که مار این رژیم غذایی را بخورد 3واحد از طولش کم میشود. در صورتی که مار به یکی از خطوط صفحه بازی برخورد کند و یا به خودش برخورد کند بازی خاتمه مییابد. بخش امتیازی: -1بیشترین امتیاز کسب شده در این بازی را به همراه اسم فرد نگه دارید تا در انتهای بازی به کاربر بیشترین امتیازهای کسب شده را به همراه اسم کسب کنندهی آن نمایش دهید 5( .امتیاز اضافه برای انجام این بخش) -2اگر مار به یکی از خطوط صفحه برخورد کرد از خط مقابل این خط در همان جهت ادامه میدهد 19( .امتیاز برای انجام این بخش) -3تعدادی دیوار دلخواه در صفحه وجود داشته باشد که پس از خوردن هر غذا جای دیوارها عوض شود و در صورتی که مار به این دیوارها برخورد کند بازی خاتمه یابد ( 19امتیاز)
© Copyright 2025 Paperzz