منابع بازی منتشر شد.

 

  

مستند بازی:

مستند بازی از این ریپازیتوری قابل دریافت است. این مستند شامل داستان بازی، توضیح جزئیات و اجزای بازی و interface مربوط به کلاینت‌های سه‌زبان برنامه‌نویسی بازی است. توصیه می‌کنیم جهت بدست آوردن فهم دقیق از بازی این مستند را به خوبی مطالعه نمائید و در صورتی که هرسوال یا ابهامی در مورد مستند داشتید، آن‌ها را در ذیل همین پست و در بخش «پرسش و پاسخ و نظرات» مطرح نمائید.

 


 

 

اجرای بازی:

سبک نبردهای هوش مصنوعی به این صورت است که شما باید هوش یک بازیکن در بازی را پیاده سازی کنید. در بازی یک سرور وجود دارد که به عنوان منطق بازی عمل می‌کند و دو کلاینت به سرور وصل می‌شوند که هریک بازیکن هستند و سپس بوسیله تعامل با سرور بازی انجام می‌شود. ما برای شما قالب آماده‌ی کلاینت در ۳ زبان مختلف را پیاده‌سازی کردیم و شما تنها کافی است بخش هوش (AI) بازیکن را پیاده‌سازی کنید. شما باید برنامه‌ای بنویسید که با توجه به اطلاعات بازی که در کد کلاینت خود در اختیار دارید (و در مستند مسابقه ذکر شده‌است) بازی کند.

برای اجرای بازی ابتدا باید سرور را اجرا کنید و سپس دو کلاینت ران کنید تا به سرور وصل شوند و بازی انجام شود.

برای اجرای سرور لازم است بر روی سیستم خود جاوا ۸ یا بالاتر  (JRE) نصب داشته باشید. اگر سیستم عامل شما ویندوز است می‌توانید جاوا را از اینجا دانلود کنید و اگر سیستم عامل شما مک است آن را از اینجا دانلود کنید. (اگر می‌خواهید JDK نصب کنید آن را از اینجا  دانلود کنید) همچنین اگر سیستم عامل شما لینوکس است بسته  openjdk-8-jre  (ممکن است در توزیع‌های مختلف نامش فرق کند) را نصب کنید.

در اوبونتو برای نصب باید دستور زیر را در ترمینال اجرا کنید: sudo apt install openjdk-8-jre

سپس فایل jar سرور را دانلود کنید و آن را باز کنید. برای اجرای کلاینت ها نیز همان طور که در مستندات ذکر شده است دو کلاینت اجرا کنید. ترتیب قرارگیری کلاینت‌ها در نمایشگر گرافیکی بر اساس ترتیب اجرای آن‌ها است.برای اجرای سرور در مک و لینوکس و ویندوز در ترمینال (و در ویندوز  Command Prompt as Administrator) به فولدری که سرور در آن است رفته و دستور java -jar server-name.jar را بزنید. سپس باید فایل مپ را انتخاب کنید. پس از آن کلاینت‌های خود را اجرا کنید (تنها کافی‌است در محسط برنامه‌نویسی خود آن را ران کنید). توجه کنید که باید ۲ کلاینت اجرا کنید.

 


 

سرور:

سرور بازی از این ریپازیتوری قابل دریافت است. سرور بازی فایل jarیست که منطق بازی در آن پیاده شده و برای گرفتن خروجی مورد نیاز نمایشگر گرافیکی و اجرای بازی باید از این فایل استفاده کرد. 

شما بوسیله دستور java -jar server-name.jar --view می‌توانید از نمایشگر ابتدایی بازی بهره‌مند شوید. پس از اجرای بازی بوسیله این دستور فایلی با نام view.html در محل اجرای سرور ساخته می‌شود که با بازکردن آن بوسیله مرورگر می‌توانید لاگ بازی را مشاهده کنید. برای استفاده از این قابلیت باید ورژن جدید سرور را دانلود کنید.

شما می‌توانید در کنسول با استفاده از دستور export AICMap = /path/to/map-addr.map می‌توانید مپ پیش‌فرض را مشخص کنید و پس از اجرای سرور (در همان کنسول) دیگر نیازی نیست مپ را مشخص کنید.

 


 

نمایشگر بازی:

نمایشگر بازی سرویسی است که با دریافت فایل graphic.log که توسط سرور ساخته می‌شود محتوای بازی انجام شده را به صورت گرافیکی نشان می‌دهد. لطفا پیش از کار با آن راهنمای نمایشگر بازی را که در زیر قرار داده شده‌است بخوانید.

شما می‌توانید در پنل با رفتن به بخش نمایشگر بازی این فایل را مشخص کنید و نمایش بازی را ببینید. این کار کاملا سمت مرورگر شما انجام می‌شود و بار اول ممکن است نیاز باشد برای لود شدن نمایشگر چند بار تلاش کنید و صفحه را لود کنید. بهتر است از مرورگر فایرفاکس برای مشاهده بازی استفاده کنید.

همنچنین اگر شما در سایت بازی دوستانه انجام دهید پس از اتمام بازی قادر خواهید بود تا بازی را توسط نمایشگر بازی مشاهده کنید یا فایل graphic.log را دانلود کنید.

 

اگر نتوانستید در سایت نمایشگر بازی را لود کنید می‌توانید نسخه‌ی دسکتاپ آن‌را از لینک زیر دریافت کنید. توجه کنید این نسخه همان نسخه روی سایت است و در صورت آپدیت نمایشگر باید مجددا آن را دانلود کنید. در لینک زیر توضیحاتی درباره نحوه اجرا آن نیز نوشته شده است.

نسخه دسکتاپ نمایشگر بازی

راهنمای نمایشگر بازی

 


 

نقشه بازی:

نقشه‌های بازی از این ریپازیتوری قابل دریافت هستند. 

 


 

کلاینت:

کلاینت‌های بازی از لینک‌های زیر که ریپازیتوری کلاینت‌ها به ازای زبان‌های مختلف است قابل دریافت است. کلاینت‌های بازی کد‌های کمکی‌ای هستند که شرکت کننده برای کد زنی و ارتباط با سرور می‌تواند از آن‌ها استفاده کند.

کلاینت Java

کلاینت ++C

کلاینت Python

 

در صورت بروز مشکل در سرور و یا کلاینت‌ها می‌توانید توضیحات مشکل خود را به همراه فایل‌های لازم برای ما بفرستید تا بررسی شوند.

برای این کار از صفحات زیر استفاده کنید:

مشکلات مربوط به سرور

مشکلات مربوط به کلاینت جاوا

مشکلات مربوط به کلاینت سی‌پلاس‌پلاس

مشکلات مربوط به کلاینت پایتون

مشکلات مربوط به سایت و سابمیت

 

در صفحه‌ی مربوط گزینه‌ی New issue را انتخاب کنید. در متن issue توضیحات لازم را بنویسید و همچنین فایل‌های graphic.log و client.log که هنگام اجرای کلاینت ساخته شده است را ضمیمه کنید.

برای به دست آوردن فایل client.log تغییرات مرتبط با کلاینت خود را مطابق توضیحات زیر انجام دهید و کلاینت را اجرا کنید.

برای ساختن فایل client.log در کلاینت جاوا در فایل Main.java مقدار متغیر GLOBAL_VERBOSE_FLAG را برابر true قرار دهید.

در کلاینت سی‌پلاس‌پلاس در فایل Main.cpp مقدار متغیر گلوبال global_verbose_flag را برابر true قرار دهید.

در کلاینت پایتون در فایل Model.py در کلاس World مقدار فیلد DEBUGGING_MODE را برابر True قرار دهید.

همچنین در کلاینت‌ها می‌توانید با پاس دادن آرگومان ورودی verbose-- هنگام اجرای کلاینت فایل client.log را به دست آورید.

علاوه بر این موارد می‌توانید سوالات خود را در ذیل همین پست نیز مطرح نمائید.

 

به‌روزرسانی ۱:

فیلم‌های آموزشی در این لینک بارگزاری می‌شوند.

به‌روزرسانی ۲:

منابع مسابقه به‌روز شدند. لطفا مجددا کلاینت و سرور و مپ‌ها را دانلود کنید. هم‌اکنون در کد کلاینت‌ها نمونه AI قرار دارد تا بیشتر با نحوه‌ی کدزنی مسابقه آشنا شوید. همچنین به علت آماده نبودن نمایشگر اصلی بازی، نمایشگر ساده‌ای در سرور تعبیه شده‌است که برای آشنایی با نحوه‌ی کار آن بخش سرور همین متن را مجددا مطالعه کنید.

به روزرسانی ۳:

- نمایشگر بازی منتشر شد برای جزییات استفاده از نمایشگر از بخش نمایشگر در همین لینک استفاده کنید.

- از این پس می‌توانید بازی دوستانه انجام دهید. شما هر ۳۰ دقیقه می‌توانید حداکثر یک بازی دوستانه انجام دهید. دقت کنید هم اکنون منابع تخصیص داده‌شده برای بازی دوستانه مانند آنچه در داک بازی گفته شده نیستند و به زودی درست  خواهد شد.

- همانطور که گفته شده اسکوربورد بازی دوستانه مستقیما در راهیابی به مرحله حضوری تاثیر نخواهد داشت و حداکثر در سیدبندی برای گروه‌بندی مسابقات نهایی غیرحضوری تاثیر خواهد داشت.

- نسخه جدید سرور منتشر شده، در نسخه جدید می‌توانید از یک نمایشگر تحت سرور استفاده کنید (با پارامتر --view) و همچنین با --extra=number  می‌توانید تایم‌اوت‌های سرور را به آن اندازه در واحد میلی‌ثانیه زیاد کنید.(برای مثال --extra=400 به هر محدودیت زمانی ۴۰۰ میلی ثانیه اضافه‌ می‌کند، این قابلیت برای کامپیوتر‌های ضعیف‌تر مفید است.)

- مستند جدید منتشر شده که از همان لینک قابل دریافت است. (به تغییرات نیز در همان صفحه اشاره شده است.)

 

 

به روزرسانی ۴:

 

- برخی از مشکلات نمایشگر بازی رفع شد.

 

- دکمه عدم شرکت در بازی‌های رندوم اضافه شد، با این دکمه در پنل می‌توانید در مسابقات رندم ایجاد شده توسط باقی تیم‌ها شرکت نکنید.

 

- نسخه‌های جدید سرور و کلاینت منتشر شده و برخی از مشکلات‌ آن‌ها برطرف شده.

- مستند جدید(1.3.1) منتشر شده که از همان لینک قابل دریافت است. (به تغییرات نیز در همان صفحه اشاره شده است. تعدادی از ویژگی‌های قهرمان‌ها تغییر کرده با mapهای جدید کدهای خود را تست کنید، دقت کنید که map‌های قدیم دیگر معتبر نیستند، همچنین map‌های بازی دوستانه سایت نیز تغییر کرد.) 

 


پرسش و پاسخ و نظرات

سرور بازی رو کی منتشر میکنین ؟

قضیه چیه؟

صبر

از چه کتابخونه هایی توی پایتون می تونیم استفاده کنیم ؟؟
استفاده از keras sklearn pandas numpy مجازه؟؟

داداش به ماهم یاد بده ازین کارای خفن خفن.

کتابخونه‌های استاندارد + numpy

فونت کل سایت ناخواناعه. عوضش کنید واقعا.

خداییش راست میگه / فاتحه چشمام خونده شد :)

عوض شد :)

پشماااااام
من هیچی نفهمیدم D:

:))))))))))))))))))))

:D

:))

خخخخخخخ

⁦(+_+)⁩

خخخخخخ

داداش من اصلا نمیدونم کجاش باید کدو بزنم و بد تر از اون نمیدونم حتی چی بزنم
حالا یه سری ها سر زبان بحث میکنند من به فارسی هم نمیتونم بزنم...

نمایشگر بازی رو کی منتشر میکنید؟

سوالی که منم دارم

سلام. نمایشگر کی منتشر میشه ؟

من هیچی نمیفهمم
نمیشه یه فیلم آموزشی چیزی بسازید

سرور را اجرا میکنی و یه صفحه باز میشه که باید نقشه رو بهش بدی
بعدش دو تا کلاینت رو اجرا میکنی و منتظر میشی تا اجرا تموم شه. نتیجه ی بازی تو فایل graphic.log ذخیره میشه.
بعد از اینکه نمایشگر منتشر شد، فایل graphic.log رو بهش میدی و نتیجه رو میبینی

سلام
میشه لطفا یه برنامه بنویسین که بتونه همزمان graphic.log رو اجرا کنه چون اگه بازی طول بکشه نمیشه دید که دقیقا چه اتفاقی می افته

فیلم آموزشی به زودی منتشر خواهد شد.

من فقط همینجوری هرجا "این" نوشته رو دانلود میکنم

فایل کلاینت پایتون آپلود نشده

دو تا کلاینت میتونن اینترنتی وصل بشن؟
تو فایلclient بایدip سرور رو جایگزین کنیم؟
چرا نمیشه؟

پیشنهاد داده می‌شه که برای وصل شدن اینترنتی کلاینت‌ها از قابلیت بازی دوستانه استفاده کنید.

چه جوری؟

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

کلاینت پایتون مشکل داره

روی trying to connect گیر میکنه توی سرور هم هیچ اتفاقی نمیفته

من مانده ام تنهای تنهااا میون سیل فایل ها
p.s: مگه قرار نبود با مفاهیم ابتدایی برنامه نویسی اوکی باشیم؟! چیشد پس اون وعده ها؟!

واقعا برنامه نویسی پیشرفته لازم نیس؟!
این وسط یا من نمیدونم پیشرفته ینی چی یا شما نمیدونین یا یکی اون یکیو خر فرض کرده بیاین منطقی تریفتونو از پیشرفته بگید

مهر دل و مهره ی پشتم شکست
میشه یکی مارا از سیاهی های ظلمت برهانه آیا؟!!

فکر کردین ما هر روز 10 بار ازین مسابقه ها میدیم یا چی؟؟
توضیحات خیلی کمه و روند کار گنگه...

به زودی یک فیلم آموزشی قرار داده می‌شه.

از چی بگم برات

فایل مپ الان کجاست

سومین جایی که نوشته این دی:

کدوم ای دی

این دی یا ای دی
کجا
تو کدوم فایل

مهندس ، منظورش از این دی:
"این" D: بود

تو CMD؟

oh my God :|

ابعاد نقشه چند در چنده؟؟؟؟

اینطور که از فایل مپ بر میاد 30 در 30 باشه تعداد cell ها

31*31

getRowNum()*getColumnNum() :P

برای c++ توی clion باید با cmake اینو کامپایل کرد یا با vs 14 هم میشه ، من همش اررور میگیرم
اوضاع یجوریه که حتی نمیدونم چی رو نمیدونم که سرچ کنم یا بپرسم

منم با vs17 کلی ارور میگیرم
فک کنم فقط باید از minGW استفاده کنیم

با MinGW تونستی کامپایلش کنی؟

فقط از MinGW میشه استفاده کرد.

https://github.com/google/gson/archive/gson-2.3.1.zip
این فایل رو به جز دانلود و اد کردن جداگانه طور دیگه میشد اد کرد؟

zip اش رو منطقا دانلود نکن، jar اش رو دانلود کن، بعد تو اینتلیج ک بزنی روی فایله، ی چیزی داره Add as library. اون رو بزنی اوکی میشه.

به ریپو مربوطه کلاینت اضافه شد.

چه طوری از قابلیت بازی دوستانه استفاده کنیم؟؟

الان کدو زدین که می خوای استفاده کنی؟!

:))))

الان من سرورو ران میکنم از کجا بفهمم درسته ؟
خروجی اخرین خطم که مینویسه اینه:
Info (PARAM): ClientsConnectionTimeout=2147483647

بعدم اینکه فقط من نیستم که تویه اجرایه کلاینته پایتون مشکل دارم و اصلا اجرا نمیشه که بخوام client.log رو ارسال کنم ؟؟!!!

کلاینت پایتون که کانکت شه باید توی جاوا یه کانکشن اکسپت بگیری.
ولی برای منم پایتون هیچ واکنشی نشون نمیده به اینکه وصل شده

Info (PARAM): ClientsConnectionTimeout=2147483647

الان این اویکه از سمته سرور ؟؟

باز شما ران میشه پایتون من کلا syntax error میگیرم البته ارورش اشتباس مشکل از سروره برامن.
چیکار کنم ؟؟!!!!!!

کد ها با پایتون سه نوشته شدنا
کلا یه سری وارنینگ داره که یه سری چیزمیز ایمپورت کردن استفاده نکردن.
توی سرور هم اینارو باید دریافت کنی:
Info (JsonSocket): Message received: {"name": "token", "args": ["00000000000000000000000000000000"]}
Info (ClientNetwork): Client accepted.

واقعا آرایه دو بعدی جزو پایه برنامه نویسیه

نیست؟:/

الان با شی گرایی مشکل نداری بعد با آرایه ی دو بعدی مشکل داری؟ |:

تفاوت area of effect و range چیه ؟؟؟
توو ویژگی های قهرمان ها

برد اثرگذاري (Effect Of Area :(تا اين فاصله از خانهي هدف را
تحت تاثير قرار ميدهد. براي مثال قابليتي با برد اثرگذاري ٢ ،بر
تمامي خانههايي كه مجموع فاصلهي سطر آن از سطر خانهي هدف
و فاصلهي ستون آن از ستون خانهي هدف كوچكتر مساوي ٢ باشد،
اعمال ميشود. به تصوير اين مثال توجه كنيد. خانه هاي زرد رنگ
تحت تاثير قرار ميگيرند.:
 حداكثر فاصله اعمال (Range :(حداكثر فاصله از قهرمان كه
ميتوان به عنوان خانهي هدف قابليت انتخاب كرد.

healer میتونه سلامتی خودشو افزایش بده؟

خیر

بله می‌تواند.
به طور کلی هرجا که محدودیتی ذکر نشده، در واقع آن محدودیت وجود ندارد. برای هدف قابلیت heal نیز جز اینکه تدافعی است و بر روی قهرمانان خودی استفاده می‌شود محدودیتی ذکر نشده است.

میشه یه توضیح مختصر از نحوه وصل شدن اینترنتی کلاینت و سرور بدید

به زودی امکان بازی دوستانه باز میشود و میتوانید از آنجا برای انجام بازی های خود استفاده کنید

من موقع ساخت فایل client به این اررور میخورم
NMAKE : fatal error U1077
کسی میدونه مشکلش چیه؟

سلام
حرکت و عمل هردوش با هم باید توی کد در نظر گرفته بشه؟ یا اینکه اول حرکات انجام میشن، بعد اطلاعات گرفته میشن و بعد عمل؟
کلاً میخوام بدونم تصمیمات (حرکت و عمل هر قهرمان) مرحله به مرحله در هر دور گرفته میشه یا اینکه همه حرکات و عمل ها باید باهم ایجاد بشه؟

از داک و فیلم توضیح بازی استفاده کنید.

سلام

تو هر فاز محدودیت های زمانی و حافظه چجوریه ؟
برای ۶ فاز حرکت و فاز عمل تصمیمات باید تو‌پیش پردازش انجام بشه ؟ یا بین فاز ها هم زمان داریم ؟

آخر فایل نوشته 0.2 ثانیه

برنامه فریم فریم اجرا میشه؟
یعنی از لحظه های قبل خبر نداریم؟

شما می‌تونید اطلاعات رو برای فازهای بعد ذخیره کنین،
برای مثال تو جاوا برای کلاس AI متغیر تعریف کنین و توش اطلاعات رو بریزین.

نمایشگر بازی کی در دسترس قرار میگیره

هنوز برای من گنگه دقیقا تو فایل AI باید چه کدی بزنیم؟ کدمون باید چی کار کنه؟

باید کدی بزنی که با توجه به شرایط بازی تصمیم بگیره که چی کار کنه

نمایشگر بازی کی آپلود میشود؟؟؟

الان فایل سرور دقیقا کجاست؟
بین اون همه فولدر

تو بخش release

بهتر نیست برنامه ای بنویسید که فایل کد دو تا بازیکن رو بهش بدیم برامون اجرا کنه؟

الان کسی می دونه دقیقا چطوری باید اجرا کرد؟

لطفا سریعتر یه فیلم آموزشی بزارید که بفهمیم اصلا چیکار کنیم

هیچی قابل فهم نیست

خودتون تا حالا یه دور بازی کردین اصلا؟
خیلی گنگه روال بازی.

یکم بحث رو باز تر کنید مثلا بگید که ما چیکار کنیم!

بی صبرانه منتظر فیلم آموزشی ای که قراره بزارید هستم.

کی فیلم آموزشی قرار داده می‌شه ؟؟ تایم دقیق بدین ما روی هوا نباشیم... :|

نهایتا امروز فیلم آموزشی منتشر میشه :)
شکیبا باشید

بهتر نبود این فضا رو روی خود وب میزاشتید مثل سایتهایی که میشه توشون برنامه نویسی کرد . این طوری کار ما خیلی راحت تر میشد البته کار شما سخت تر :)

لطفا هر زبان برنامه نویسی رو به صورت مجزا آموزش بدید . تشکر :)

توی فیلم شیوه اجرا کردن کلانت هر کدام از زبان ها توضیح داده خواهد شد.

میشه یکی خیلی مختصر توضیح بده کلاینت هارو چجوری وصل میکنن به سرور؟ و اینکه چجوری با پایتون فایل client.log میگیرن؟

اگر فایل ها درست و آماده باشه
فایل سرور رو اجرا می کنی بعد فایل کلاینت
بعد کلاینت به سرور وصل میشه

خب استاد میشه بگید چجوری فایل و درست و اماده کنیم؟

نه اوکیه
منتها نمیدونم چجوری باید فایل کلاینت رو اجرا کنم؟
سرور نقضه رو میگیره و بعد یه فایل گرافیک دات لاگ میسازه
نمیدونم بعدش باید چیکار کنم:)

سرور رو ران کن بعد از کلاینت controller رو ران کن

لطفا فیلم اجرای کلاینت جاوا رو ببینید

حمله خطی مبهمه. بردن خط به یه grid روش یکتایی نداره:
https://en.wikipedia.org/wiki/Xiaolin_Wu%27s_line_algorithm
الان مثلن خونه 0,0 یک سر خط و 1,m یک سر دیگه خطه, اشعه از کدوم خونه ها رد میشه؟
مثلن اگر m = 2 باشد, از خونه 1,1 یا 1,0 رد میشه؟ هر دوی این خونه ها نسبت به مبدا و مقصد متقارن هستند.

ترتیب خانه‌ها به ترتیب ورود خط به محدوده‌ی آن‌هاست. دقت کنید که مرز خانه‌ی معمولی جزء آن نیست اما مرز خانه‌ی مسدود جزء آن است.
در مثال شما‌ ترتیب به شکل زیر است(درایه اول سطر و درایه دوم ستون است):
0,0
1,0
1,1
2,1

فیلم آموزشی را سریعا بذاری که بدونیم چیکار کنیم🤔🤨

دیروز حداقل جواب می دادن

امروز منتشر خواهد شد.

خواهشا رنگ کامنت هارو عوض کنید.
پس زمینه سفید و رنگ متن کرمی روشن
هیچچچی پیدا نیست

برا من این شکلی نیست!!

داداش طراحی سایت شبیه متریال دیزاینه اصلا رنگ شبیه هم نمیشه استفاده کرد...

از force refresh استفاده کنید.
ctrl + shift + f5

محدوده دید قهرمان فقط جهت های اصلیه یا بصورت فضای باز میبینه؟
شلیک اشعه با قهرمان قراول به چ صورته؟ منظورم اینه ک شلیک به هر خونه ای ک قابل مشاهده باشه، معتبره یا فقط در 4 جهت میشه شلیک کرد؟

فضای باز، مثال هم زده

محدوده‌ی دید قهرمان در تمامی جهات است.
برای انتخاب خانه‌ی هدف تمامی قابلیت‌ها (با در نظر گرفتن استثنائات گریز که ذیل جزئیات فنی ذکر شده)، امکان انتخاب هر خانه‌ای مستقل از اینکه در دید تیم قرار دارد یا خیر و در چه جهتی است، وجود دارد.

امروز نمایشگر هم میذارید؟

سرور یه فایله زیپه که وقتی بازش میکنی میخواد مپ رو انتخاب کنی و بعده انتخابم بسته میشه
همینه؟؟بعدش چه کنیم؟
کلاینت پایتون هم ارور میده ک

کلاینت جدید گذاشتن
server رو ران کن مپ رو که انتخاب کردی
فایل controller از کلاینت رو ران کن
بعد به سرور وصل میشه خروجی میده

البته باید دو تا کلاینت اجرا کنی

جدا خیلی بد توضیح دادین!!! بیشتر شبیه ترجمه های زورکیه:|

سلام میشه یه کلاینت سمپل بذارید که کد هامونو باش تست کنیم نخواییم دوتا کلاینت بزنیم؟

می تونی کلاینت خودتو دو بار اجرا کنی
ولی منم با کد نمونه موافقم

آره منطقا باید کد نمونه رندوم می بود که نیست...

میشه لطفا رسیدگی کنید؟؟

حداقل یه کلاینت ساده می زاشتید!

In Case that you are a meme fan:

My Client fighting it self on my computer
yon.ir/MyClient :D

اره یه کلایینت ساده می زاشتید بد نبود

امشب قرار داده میشه

سلام آيا کسي تونسته تا حالا با پايتون برايه برنامه کد بزنه ؟؟
من نميدونم برايه مقداريه کلاسا چي ورودي بدم خودش ورودي ميگيره ؟؟
اگه کسي با پايتون مد زده يک کمکي هم به من بکنه ممنون ميشم.

مثل همون چیزی که تو داک گفته شده میتونین عمل کنین
راجب پایتون هم یک پانویس موجود هست.

میشه بگید سرورو چجوری ران کنیم؟؟؟ وقتی اکسترکت میکنم سه تا فایله بعد چیکار کنم

لطفا میشه یه کمکی کنید

برو دوباره دانلود کن فایل اصلی تو زیپ نیست
یه فایله به اسم server.jar
مستقیم اونو باید دانلود کنی
بعد اونو که ران کنی یه صفحه میاد باید مپ رو انتخاب کنی (از فایلی که گذاشتن)
بعد دو تا کلاینت ران کنی

ببخشید آخرشو دوتا کلاینت از کجا بیارم
نفهمیدم

تو فایل کلاینت یه controller هست
دو بار اونو اجرا کن

وقتی اجرا میکنم حتی دوبارم توی trying connection1# هیچکاری نمیکنه

ببین نباید برنامه اولی بسته شه ها
رو فایلت دو بار دابل کلیک کن که اجرا شه

با توجه به اینکه تخیل کردن محیط بازی با خوندن لاگ سرور چندان راحت نیست، خواهشمند است نمایشگر را ریلیز بفرمایید با تچکر

یه روز گذشت هنوز هیچی درست نیست

حداقل از دیروز می گفتید مسابقه چند روزی رو هواست

با توجه به اینکه خونه های مپ , یه آرایه دو بعدی هستن , چاپ کردن مپ به صورت بصری کار چندان راحتی هست . میتونید قبل اون خودتون مپ رو ببینید

به نظر خودتون توابعتون خیلی ورودی نمی خواد؟

توی پایتون برای مپ کلی ورودی لازم داره که فک می کنم باید با توجه به مپ انتخاب شده از طرف سرور وارد بشه
الان ما برای این که بفهمیم یه خونه ی مپ چیه باید چی کار بکنیم؟

نحوه ورودی به هر تابع توی doc به ازای جاوا گفته شده مثلا اگه world.getMap() در جاوا داریم معادل اون در پایتون میشه world.map

من سرورو اجرا میکنم فایل مپو بهش میدم ولی چیزی نمیشه که

بعدش باید کلاینت ها رو ران کنی

چجوری؟ کجا اجراش کنم؟

رو فایلش دابل کلیک کن

من سرورو دانلود کردم و توی command prompt رفتم
بادستور cd downloads وارد فولدر دانلود شدم دستور زیر را اجرا کردم
java -jar server.jar

server.jar اسم فایل دانلود شده است

بعد از من map رو خواست قبلا map رو دانلود کرده بودم وارد فولدر map شدم یکی از map ها رو انتخاب کردم وصل شد بعد منتظر کلاینت ها بود کلاینت های نمونه رو دانلود کردهبودم controller را دو بار اجرا کردم اجرا شد حالا باید کلاینت های خودمون رو بنویسیم و ارسال کنیم

کدتو تو AI بزن بفرست

کی "منتشر خواهد شد" ؟

واقعا!

بنی قبل مسابقه به فیلم آموزشی فکر نکردید؟

خودتون گفتید Issue بزارید بعد 2 ساعته جواب نمیدید (کلاینت پایتون)

ولشون کن خودشون دارن بازی می کنن

سلام
میشه بگید controllerی که باید تو کلاینت باز کنیم دقیقاً کجا فولدر کلاینته؟
c++

الان ما بخوابیم یا منتظر بمونیم؟

فک کنم اونا خوابن

حداقل می گفتید امشب میذاریم که ما کل روز رو منتظر نمی موندید

واقعا امشب بذارید که از این به بعد بهتون بی اعتماد نشن من که رفتم بخوابم
الکی روزمونو الاف شما تلف کردیم

کلاینت python مشکل داره

منم همین نظرو دارم

فایل جدید گذاشتن اگر ندیدید
من با اون کد خودشونو می تونم ران کنم
ولی هر دستوری میزنم یا ورودیشاو نمی تونم پر کنم یا اصا نیست
همین الان
World:
Map getMap();
که تو پی دی اف نوشته رو با هر املایی نداره
Model.Map()
هم مه 6 تا ورودی می خواد که اونم اطلاعات مپه

هر جایی که توی داکیومنت مثلا ()getFolan میبینی توی کلاینت پایتون دسترسی مستقیم بهش داری، یعنی لازم نیست از تابع استفاده کنی
مثلا ()world.getMap میشه world.map

فیلم راهنما قرارگرفت یا نه
قرار نبود امروز منتشر بشه؟

منتشر شد.

جالبه صفحه ویدیو ها دارن ولی تا الان که من بیدارم و هی رفرش میکنم صفحه رو فیلمی توش نیست کل شبو بیدار و منتظر موندم تا بفهمم چی به چیه هرچند مفهوم برنامه نویسی مبتدی کلا با این مسابقه عوض شد

توی فاز انتخاب در مجموع می توانیم چند قهرمان انتخاب کنیم؟

کلا 4 نوع قهرمان وجود داره , شما میتونید هر چهار تاش رو از یه نوع انتخاب کنید , میتونید از هر نوع یکی انتخاب کنید و...

در هر فاز انتخاب فقط یک قهرمان و در مجموع 4 قهرمان انتخاب می‌شود.

سلام
دقیقا منظورتون از این چیه که اگه مساوی شدن کسی که زودتر سابمیت کرده؟
منظورتون اینه که آخرین سابمیت دیگه وگرنه همین الانم هر چیزی رو میشه سابمیت کرد

منظور از زمان سابمیت، زمان سابمیت همان کدی است که در مسابقه‌ی جاری (که نتیجه‌ی آن مساوی شده) شرکت داده شده است.

ای کاش داخل کلاینت پایتون , get , set میذاشتید , الان میخوام ببینم مثلا تو کلاس world چه کار هایی میشه انجام داد نمیتونم با یه ctr space بفهمم باید برم تو model.py بعد خودم کد هاشو بخونم تا اسم متغیر هاشو بفهمم , لااقل تو اون پی دی اف آموزشی , اسم متغیر های کلاس های پایتون که بهشون دسترسی مستقیم داریم رو درست می نوشتید که این همه سر در گم نمیشدیم . اسم ۹۰ درصد متغیر هایی که بود , با پی دی اف فرق داشت ( مثلا _ داشت ولی تو پی دی اف نداشت ) . لطفا یه لیستی از همه متغیر هایی که بهشون دسترسی مستقیم داریم رو درست کنید و منتشر کنید تا همه از این سر در گمی بیرون بیان

عدم وجود get و set در پایتون به دلیل رعایت استاندارد برنامه‌نویسی این زبان است.
در آخرین سطر از توضیحات رابط برنامه نویسی و پیش از جداول توابع، به این مورد اشاره شده که موارد نگارش شده متعلق به کلاینت جاوا می‌باشد و نام‌گذاری در پایتون دقیقا با همان کلمات اما به صورت snake_case (حروف تمام کوچک به هماره جداسازی با "_") می‌باشد.
لطفا مستند را با دقت بیشتری مطالعه بفرمایید.

از pycharm استفاده کن تشخیص میده خودش.
یا تابع هات رو اینطوری تعریف کن احتمالا ide های دیگه هم درست بشه:

import Model
from Model import World

class AI:
def preprocess(self, world:World):
print("preprocess")
pass

def pick(self, world:World):
print("pick")

سلام
وقتی روی لینک فیلم کلیک می کنم ارور 404 میده و میگه صفحه مورد نظر یافت نشد

https://www.aparat.com/v/dmL3k

ممنون

ممنون از شما.
لینک اصلاح شد.

لطفا کلاینت پایتون پاسحگو باشید

میشه توضیح بدید فایل های کلاینت که باید بعد از اجرای سرور اجرا بشن کجان
چطور باید اجرا بشن
متد main دارن مگه که بخوان اجرا بشن

بله دارن.
تو مسیر src/client/Main.java

آقا کلاینت پایتون الگوریتم مسیریابیتون یکم مشکل داره , چون فکر میکنه میشه از یار های خودی رد شد . اگه تو مسیرش یار خودی نباشه درست کار میکنه ولی اگه یار خودی باشه , گیر میکنه و مسیری که پیشنهاد میده اینه که از روی یار رد شیم که نمیشه .
لطفا الگوریتم مسیر یابی رو اصلاح بفرمایید

لطفاً نمایشگر بازی رو تکمیل و "قابل استفاده" کنید.

آیا جدول همبند است(از هر خانه غیر مسدود می توان به هر خانه غیر مسدود دیگر رسید) یا خیر؟ اگر نیست تابع getpathmovedirections چه بر میگرداند؟ همچنین ابعاد جدول حداکثر چه قدر خواهد بود؟

بله همبند است.

شماره قهرمان ها حداکثر تا چند است؟

اگه من کد هام رو تو قسمت بازی دوستانه بفرستم , آیا اگه ببازم از امتیاز اصلی تیمم کم میشه و به حریف اضافه میشه؟

بازی دوستانه روی امتیاز چه تاثیری داره، و اگر تاثیری نداره چه فاکتور هایی روش تاثیر میذارن

بالاخره من ران کردم. برای جاوا فایل tar.gz رو دانلود کنین و بعد از اکسترکت پوشه رو در جت برین حتما امپورت کنین.

گه من کد هام رو تو قسمت بازی دوستانه بفرستم , آیا اگه ببازم از امتیاز اصلی تیمم کم میشه و به حریف اضافه میشه؟
بازی دوستانه روی امتیاز چه تاثیری داره، و اگر تاثیری نداره چه فاکتور هایی روش تاثیر میذارن
لطفا جواب بدین

ما تا چه حد می توانیم در مورد قهرمان های حریف اطلاعات داشته باشیم؟ یعنی مثلا اگر در دید ما باشند می توانیم مقدار جانشان رو متوجه شویم یا خیر؟

متوجه شدم.

بازی خیلی شبیه به brawl stars هست :)

در هر دور تابع pickTurn چهار بار صدا زده میشه؟ که با سوییچ کیس خودمون کنترلش کنیم یا اینکه یک بار صدا زده میشه و ما تو همون یک بار باید چهار بار pickHero کنیم؟

چهاربار صدا زده می‌شود و در هر مرتبه دقیقا یک مرتبه pickHero پذیرفته می‌شود.

تابعی که فاصله منهتنی رو میده؛ با توجه به دیوار ها میده؟ یا صرفن جمع dx و dy رو میده؟

صرفا مجموع اختلاف سطرها و ستون‌ها می‌دهد.

آیا بازی دوستانه تاثیری بر امتیاز ما داره یا خیر؟
اگر داره , میشه یه قسمتی رو هم بزارید که بدون کم شدن امتیاز , با تیم هایی که میشناسیم مسابقه بدیم و نهایی شدش رو آپلود کنیم؟

سوال مهمیست
لطفا جواب بدید.

در حال حاضر تنها استفاده‌ی امتیاز برای برقراری مناسب‌تر بازی‌های دوستانه‌ی رندوم است. به این شکل که تیم‌های در سطح امتیازی هم با یکدیگر مسابقه دهند.
همانگونه که از نام "بازی دوستانه" مشخص است، این امتیازدهی هیچ تاثیری در انتخابی مرحله حضوری ندارد.

سلام.میشه یه نفر لطف کنه توضیح بده چیکار باید بکنیم؟خیلی نامفهموم بنظر میاد

سلام موقعیت قهرمانا تو فاز انتخاب کجا قرار می گیرند؟

همونطور که تو داک گفته شده در یکی از نقاط اولیه به اسم respawn zone به طور تصادفی

میشه لطفا نقشه آپلود شده رو تایید کنید ؟ (یکی از نقشه های خودتون هست)

تابع چیزی بر نمی گردونه
hero1=world.get_hero(1)
cella=hero1.current_cell
hero2=world.get_hero(2)
cellb=hero2.current_cell
if cella==cellb:
print("OH!")
l=world.get_path_move_directions((cella.row,cella.column),(cellb.row,cellb.column))
print(l)

درست شد

قهرمان حرکت نمی کنه

واقعا احساس نمی کنید بدون نمایشگر کاری نمیشه کرد؟

سلام ، امکانش هست یک نمونه از فایل ai رو هم در اختیارمون بذارید ؟!

سلام
اگه میشه لطفا برایه هر زبان نمونه کد بگزارید در github مثلا پایتون هم بدونیم چهطوری شروع کینم من هرچی کد میزنم یک جا به ارور میخورم در پایتون اصلا نمیتونم ران کنم که بخوام به بازی فک کنم خب یک نمونه کد بزارید وقتی میگید نیازی به دانش برنامه نویسی پیشرفته نیست من الان مبتدی پایتونم و نمیتونم ران کنم کدامو در AI ؟؟؟؟؟؟؟؟!!!!!
---------------------------------------------------
نمونه کد که باشه میفهمم چهطوری بنویسم.ممنون.
---------------------------------------------------

بعد از import کردن پروژه در شروع intelij مینویسه noframework detected
چیکار کنم؟

شما finish رو بزن آخر کار وقتی import شد بالای کد ها یه گزینه میاره (اسمش یادم نیست)
روی اون کلیک میکنید و تموم میشه :)

قسمت بازی دوستانه کار نمیکنه، نمیشه نقشه انتخاب کرد و بدون اون هم ارور میده، از ثبت نقشه (که یکی از نقشه های خودتون بوده) هم چند ساعتی میگذره

به نظر شما هم برگزار کننده ها رفتن مسافرت؟

قطعا دارن تلاش خودشون و میکنن
به نظر شما اسپم کردن باعث میشه نمایشگر سریعتر منتشر شه یا سوالای بقیه دیده نشه؟

ایا فایل map هایی که در اختیار ما قرار دادین در مرحله غیر حضوری تغییر میکند یعنی ما در مرحله غیر حضوری باید کد خود را برای هر map بهینه کنیم یا فقط برای map هایی که در اختیار داریم باید کد خود را بهینه کنیم

بله تغییر خواهد کرد.

ایا فایل map ها در مرحله غیر حضوری تغییر میکند یعنی ما باید کد خود را برای map هایی که داریم بهینه کنیم یا برای هر فایل map باید کد های خود را بهینه کنیم

سه نقشه‌ی قرار داده شده مخصوص تمرین و تست است. در هر مرحله از مسابقه نقشه‌های جدیدی استفاده می‌شود.

سلام،

لطفا اگر ممکنه یک boundی برای ابعاد نقشه بدید، برای اینکه ببینیم تو پیش‌پردازش چه قدر میشه کار کرد!

ممنون.

سلام.
اندازه‌ی نقشه 31 در 31 است.
به زودی محدودیت‌های نقشه به مستند بازی اضافه خواهد شد.

آقا بدون نمایشگر نمیشه کاری کرد! میشه زودتر بدینش؟!

دقیقن! زمان مسابقه باید از روزی که نمایشگر ریلیز شه محاسبه شه, وگرنه بدون نمایشگار کاری نمیشه کرد

نمایشگر رو منتشر میکنین !🤔

خوب اگه آماده نیستین چرا مسابقه رو به تعویق ننداختین؟

۱۸ روز دیگه مسابقس 😕

نه مسابقه همین الانه
اون موقع داوریه

مدت زمان غیر فعال = 1
یعنی هر turn میشه استفاده ش کرد؟
یا یعنی اگر این turn استفاده کردی, turn بعد نمی تونی؟

مقدار ۱ به این معناست که در نوبت بعد می‌توان استفاده کرد.
به طور کلی این عدد نشان می‌دهد که قابلیت در این تعداد نوبت پس از نوبت استفاده شده، قابل استفاده‌ی مجدد است.

آیا منطقه ری اسپان و منطقه شروع یکی هستند؟
اگر یکی نیستند چرا getRespawn داریم ولی برای گرفتن منطقه شروع چیزی نداریم؟

بله منطقه‌ی شروع بازی نیز در همان منطقه ریسپان می‌باشد.

من یه مپ خودم درست کردم , به اندازه کافی هم با مپ های شما متفاوته و آپلود کردم . لطفا تایید کنید تا بتونم بازی دوستانه انجام بدم

سرور هم با این مپ مشکلی نداره و لود میکنه

بحث اجازه نداشتن بازی کردن واسه نبودن map نیست بخاطر اینه که تا یک زمان مشخص قرار نیست که بازی دوستانه‌ای انجام شه :)

test</p> <p>salam</p>

سلام
اینجوری که بنده متوجه شدم در مرحله حضوری و همچنین یک هفته بعد از اغاز مسابقه پارامتر های مربوط به hero ها و یا پارامتر های بازی مثل مثله ap اولیه تغییر خواهد کرد.
بنابراین اگر بخاهیم یک agent ، train دهیم که در مرحله حضوری موفق باشد علاوه بر اینکه این agent باید تغییرات map را در نظر گرفته باشد باید تغییرات پارامتر های اولیه رو هم در نظر گرفته باشد در طول تمرین.
حال سوال بنده اینه که محدوده تغییرات این پرامتر ها به چه گونه است؟

در داکی که فردا گذاشته میشه محدوده بعضی از ثوابت قرار داده میشه.

داداش چطوری یه agent رو برای نقشه های مختلف train میکنی؟‌ به منم یاد بده

و همچنین در map ها الزاما objective zone یک مربع 7*7 در وسط map میباشد یا خیر؟

ابعاد منطقه هدف بین ۵در۵ تا ۹در۹ متغیر است. این ناحیه یک مستطیل همبند است و در وسط نقشه قرار دارد.
به زودی در نسخه‌ی جدید مستند محدودیت‌های نقشه ذکر می‌شود.

سلام. با توجه به اینکه محاسبات ممکنه طول بکشه مسلما شما باید محدودیتی گذاشته باشید تا یک تیم بتونه جرکاتش رو اعلام بکنه. میتونه محاسبات پیچدیده باشه، مثلا 600 ثانیه طول بکشه. برای هر نوبت کلاینت حداکثر چند ثانیه وقت داره؟

تو pdf صفحه اخر نوشته.

ولی طبق فیلمی که گذاشتین نمیتونم کد ها رو ران کنم مشکل از کجاست توی فیلم بعد اینکه سرور رو ران میکنه و نقشه رو انتخاب میکنه میره و کد و دوبار اجرا میکنه ولی برای من اصلا نه اینکه نتونه ران کنه نه اصلا انگار ناشناختست با
این با جاوا بود مشکلم
با پایتون هم نمی دونم چه شکلی باید کد و ران کرد

متوجه مشکلتون نشدم
توی پایتون هم با
python3 controller.py اجراکنید کلاینت

خسته نباشید.
خیلی تشکر میکنم ازتون
ببخشید یه سوالی درباره مناطق خاص مخصوصا منطقه هدف توضیحاتی فکر کنم که داده نشده یا من ندیدم.
ممنون میشم اگر کمی توضیحات بدید که در مناطق هدف چقدر امتیاز اضافه میشن و ... ؟
و یه سوال دیگه اینکه در فاز حرکت به هر ۴ قهرمان همزمان باید دستور داد دیگه درسته؟
ممنون

سلامت باشید.
به ازای حضور هر قهرمان در هر نوبت، یک امتیاز اضافه می‌شود.
در هر فاز حرکت می‌توانید هر تعداد از قهرمان‌ها را بنا به تصمیم خود حرکت دهید.

ممنون که منابع مسابقه رو به روز کردید.😊

ممنون که منابع مسابقه رو به روز کردید.

خواهش می‌کنم :)

ما اومدیم!!!!

سلام
به سایتی DDOS نزدی؟

این به سایتایه خودشم DDOS میزنه

تو پایتون از کراس میشه استفاده کرد
؟

گفتن فقط numpy هست
چیز دیگه ای می خوای باید فایلشو کپی کنی

آیا باید تمام فاز ‌های یک نوبت را در منطقه هدف حضور داشته باشیم تا امتیاز منطقه هدف را کسب کنیم؟

در انتهای هر turn نه phase اگه داخل objective zone باشید امتیاز کسب می‌کنید.

توی این خط کدها دقیقا باید چی بزاریم من هر چی میذارم ارور میدده که

void AI::preProcess() {

}

void AI::pick(5 *5) {

}

void AI::move(4 *6) {

}

void AI::action(1 *2) {

آیا برای برخورد قابلیت خطی با قهرمان حتما باید مرکز Cell قهرمان هدف رفته باشد یا اگر خط از قسمت های دیگر یک Cell نیز عبور کند به قهرمان برخورد میکند؟

با عبور از دیگر قسمت‌های خانه نیز برخورد می‌کند.

سلام! آیا اصلا میشه توی تابع pick قهرمان از قبل مشخص شده داد؟ چون هرکاری بکنی تابع 4 بار تکرار میشه پس مشخصا نمیتونی از قبل برنامه ریزی کنی که چه قهرمانی میخوای برداری...پس همیشه رندومه؟

بله می‌شود. می‌توانید با بررسی شرط هایی مثل انتخاب های حریف شما نیز انتخاب های متفاوتی داشته باشید

منظورم اینه که چجوری میشه turn رو توی برنامه فهمید؟

یه متغیر بذار هر دفعه تابع صدا زده میشه زیادش کن

درست شد هیچی :/

سلام
کد سی پلاس پلاستون مشکل داره
دستور حرکت به سرور ارسال نمیشه
من با پایتون امتحان کردم قشنگ کار میکرد اما مثال cpp کار نمیکند
لطفا اصلاحش کنید

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

قهرمان‌ها با Id مشخص میشن نه نوعشون.

قرار نبود امتیازا ریست بشه؟؟؟

میشه، صبور باشید.

اگه یه نفر به اشتباه یه تیم یه نفره تشکیل داده باشه و بخواد تیمش رو حذف کنه و توی یه تیم دیگه عضو بشه باید چیکار کنه ؟

توی گروه تلگرامی درخواست بدید.

برای پرسش و پاسخ وارد شوید