زمان برگزاری | ۳ دی ۱۳۹۴ |
---|---|
محل برگزاری | دانشگاه صنعتی شریف |
مهلت ارسال کد | ۲۸ آذر ۱۳۹۴، ساعت ۲۳:۵۹ |
در این بازی دو تیم در یک نقشهی شطرنجی با یکدیگر بر سر پیدا کردن طلا رقابت میکنند.
این بازی بر روی یک نقشهی شطرنجی اجرا میشود. بعضی از خانههای نقشه حاوی طلا هستند. هر تیم سه دسته بازیکن در زمین دارد. دستهی اول شکارچیان، دستهی دوم جاسوسان و دستهی سوم کارگران که یابندگان طلایند، هستند. هر تیم تعداد مشخصی از هر نوع بازیکن در زمین دارد. شکارچیان مسلح به یک اسلحه هستند که میتوانند با آن شلیک کنند. کارگرها هم میتوانند زمین را کندوکاو کنند و طلاها را تصاحب کنند. جاسوسان میتوانند برای زمانی مشخص از دید سایر بازیکنان پنهان شوند و به جستوجو کردن زمین بپردازند. در این بازی هدف هر تیم، جمعآوری بیشترین تعداد طلا است.
هر بازیکن در هر مرحله، از وضعیت هشت خانهی مجاورش و همچنین از وضعیت تمام خانههای فضای دیدش آگاه میشود. همچنین تمام بازیکنان از وجود طلا در هشت خانه مجاورشان آگاه میشوند اما در باقی فضای دیدشان نمیتوانند مکان طلا را مشاهده کنند. طلاها در زیر خاک قرار دارند بنابراین کارگرها برای تصاحب طلا باید سه مرحله در خانهی مربوط به طلا بمانند و زمین را بکنند تا به طلا برسد. در صورتی که کارگری در میانهی کار، کندن را رها کند و به خانهی دیگری برود، میزان کنده شدن زمین به همانصورت باقی میماند و کارگر دیگر برای رسیدن به طلا کافیست تعداد مراحل باقیمانده را بر روی طلا بماند.
اطلاعاتی که در ابتدای بازی در اختیار دو تیم قرار میگیرد عبارت است از:
علاوه بر این در هر مرحله اطلاعات زیر در مورد هر یک از بازیکنان در اختیار تیم مربوطه قرار میگیرد:
در هر مرحله از بازی، هریک از دو تیم مدت زمان یک ثانیهای در اختیار دارند تا حرکات بازیکنان تیم خودی را مشخص کنند. هر بازیکن میتواند یکی از حرکات زیر را در یک مرحله انجام دهد:
در صورتی که برای یک بازیکن در یک مرحله چند دستور صادر شود، آخرین دستور انجام میشود.
شرایط حرکت بازیکن و تیر از قرار زیر است:
بازی در شرایط زیر به پایان میرسد:
بعد از پایان بازی، برنده به شرح زیر مشخص میشود:
برای اجرای بازی، یک فایل jar
به نام GoldHunter
در اختیار شما قرار گرفته است که شامل کدهای اجرایی بخش سرور و شبکه میباشد. برای اجرای بخش سرور بازی کافیست این فایل را اجرا نمایید.
java -jar GoldHunter.jar
با اجرای این فایل، صفحه اصلی بازی نمایان خواهد شد و برای شروع بازی در انتظار اتصال کلاینتها (دو تیم بازی) خواهد بود. دقت کنید که نقشه بازی میبایست درکنار این فایل اجرایی قرار داشته باشد.
یک فایل jar
دیگر با نام Client
در اختیار شما قرار گرفته است که شامل کدهای اجرایی کلاینت میباشد. پس از اجرای GoldHunter
میتوانید این فایل را اجرا نمایید. با اجرای این فایل یک تیم به سرور اجرایی متصل میشود. بنابراین با دوبار اجرای این فایل میتوانید بازی را شروع کنید.
دقت کنید که فولدر Client_lib
باید درکنار فایل اجرایی باشد علاوهبراین یک فولدر با نام lib
درکنار GoldHunter.jar
قرار دهید. محتویات این فولدر دقیقاً همان محتویات فولدر Client_lib
است، یعنی فایل gson-2.3.jar
. برای اجرای سرور باید جاوا نسخهی ۱.۷ همراه با JavaFX
را نصب شده داشته باشید.
برای پیادهسازی کدهای بخش client
یک package
با نام client
نیز در اختیار شما قرار میگیرد که میتوانید با تغییر آن به شرح زیر، تیم خود و الگوریتم اجرایی خود را پیادهسازی کنید. برای تست الگوریتم خود میتوانید پس از اجرای کد سرور (Gold Hunter
)، تیم رقیب را با اجرای client
و تیم خودی را با اجرای کدهای خود آماده بازی کنید.
یک پروژه جاوا با نام ChallengeProject
در اختیار شما قرار گرفته است. پیادهسازی بخش کلاینت میبایست در کلاس TeamClientAi
موجود در package
ی به نام client.java.teamClient
انجام میگیرد. این کلاس دو تابع دارد. یکی getTeamName
که نام تیم خود را در آن برمیگردانید و دیگری تابع مهمی به نام step
که این تابع میبایست شامل همه کدهای اجرایی شما شود. درهرمرحله از بازی این تابع برای تیم شما اجرا خواهد شد.
کلاس TeamClientAi
از کلاس ClientGame
ارثبری میکند. این کلاس توابع ضروری برای اطلاع از بازی را در اختیار شما قرار میدهد. برای اجرای دستورات هر بازیکن نیز میبایست از این کلاس استفاده کنید. سه تابع rotate
,move
, fire
برای انجام حرکات اصلی هر بازیکن در این کلاس وجود دارد.
برای اجرای کدهای خود کافیست پس از اجرای سرور، کلاس TeamClientAi
را اجرا نمایید. برای کسب اطلاعات بیشتر در مورد کلاسها و توابع موجود میتوانید این مستند را مطالعه کنید.
کد کلاینت سی در فایل C_client
دراختیار شما قرار گرفته است. کد اصلی خود را میبایست در تابعی به نام think
متعلق به کلاس PlayerDecision
بنویسید.
برای اجرای کد خود ابتدا لازم است کتابخانه boost
را از اینجا نصب کنید. از کامپایلر g4.9'' به بالا استفاده کنید. بعد از ''make'' کردن با استفاده از دستور زیر کد کلاینت خود را اجرا نمایید. (کد سرور را میبایست قبل از این اجرا کرده باشید)
./client host port
برای کسب اطلاعات بیشتر در مورد کلاسها و توابع موجود میتوانید این [[https://www.dropbox.com/s/xmt50zf72v0z206/Document.pdf?dl=0