برای اجرای کرنل به پایتون نسخه 3.8 یا بالاتر نیاز دارید.
پس از دانلود منابع به root-folder
کرنل cd
کنید.
ابتدا توسط دستور زیر پیشنیازها را نصب نمایید.
$ pip3 install -r requirements.txt
در این فایل همچنین پکیجهایی که مجاز به استفاده از آنها هستید، قرار گرفته که در صورت نیاز میتوانید هر کدام را uncomment
کنید.
سپس با دستور زیر کرنل بازی را اجرا کنید.
$ python3 src/main.py -p1 <player1-path> -p2 <player2-path>
برای اجرای کرنل از python-executable
خود استفاده کنید. این دستور معمولا در ویندوز py
و در لینوکس یا مک python3
میباشد.
منظور از player-path
فایل اجرایی کلاینت میباشد. یعنی برای زبانهای سیپلاسپلاس، جاوا و سیشارپ بایستی آدرس فایل اجرایی خود را قرار دهید نه سورس فایل کد! این آرگومان به صورت پیشفرض روی کلاینت پایتون Clients/main.py
تنظیم شده است.
توجه کنید در صورتی که به زبان جاوا کد میزنید، نام فایل کد و کلاس اصلی را به صورت main
بنویسید. (مانند کلاینت آماده شده)
فایل اجرایی جاوا بایستی به صورت jar
باشد.
برای کامپایل کلاینت سیشارپ از دستور زیر استفاده کنید:
$ csc main.cs # Windows
$ mcs main.cs # Linux
اگر از سیستم عامل لینوکس استفاده میکنید، تنها در صورتی که به زبان سیشارپ کد میزنید پسوند فایل اجراییتان exe
باشد.
با استفاده از آپشن v-
یا visualizer--
و تعیین مسیر فایل اجرایی گرافیک بازی، پس از پایان بازی و تولید game.json
، گرافیک بازی به صورت خودکار اجرا خواهد شد.
در صورتی که قصد دارید تنظیمات cgroup
برای شما فعال شود، از آپشن cg
استفاده کنید و با یوزر root
اجرا بگیرید.
این تنظیمات باعث میشود memory-limit
و cpu-limit
بازی روی کد شما اعمال شود.
(در نظر داشته باشید که این کتابخانه فقط روی سیستم عاملهای لینوکسی قابل استفاده است)
$ sudo python3 src/main.py -p1 <player1-path> -p2 <player2-path> --cg
همچنین شما میتوانید نقشه دلخواه خود را به فرمت نقشه موجود در منابع maps/map1.json
طراحی نمایید و یا متغیرهای جدیدی را برای بازی خود به فرمت تنظیمات موجود در منابع src/settings.json
تدوین کنید.
در نهایت برای اطلاعات بیشتر از بقیه آرگومانها و نحوه استفاده آنها از آپشن h-
استفاده کنید.
کلاینت های بازی به ۴ زبان پایتون، سیپلاسپلاس، جاوا و سیشارپ آماده شدهاند که بسته به نیاز می توانید از یکی از این کلاینت ها استفاده کنید.
اطلاعات observation
که در هر مرحله توسط کرنل فرستاده میشود، در سمت کلاینت دریافت شده و از طریق کلاس GameState
قابل دسترسی است که میتوانید در ادامه برای نوشتن کدتان از آن استفاده کنید.
این کلاینت از طریق متد getAction
خروجی کد شما رو به کرنل میفرستد.
با توجه به اینکه ارتباط کلاینت و کرنل بازی از طریق stdin
و stdout
انجام میشود، کد شما نباید هیچ دریافت ورودی یا ارسال خروجی اضافهای داشته باشد. همچنین میتوانید برای دیباگ کدتان از فایل استریم استفاده کنید که نمونه آن در کلاینت پایتون پیاده سازی شده است و بنا به نیاز خود میتوانید آن را تغییر دهید.
اکیدا توصیه میشود متدها و توابع پیاده سازی شده را تغییر ندهید و خروجی خود در هر مرحله را فقط از طریق متد getAction
برگردانید. در غیر این صورت مسئولیت Fail
شدن بازی یا مشکلات دیگر بر عهده شرکت کننده خواهد بود.
اگر قصد دارید به صورت مولتی فایل کد نویسی کنید، ساختار فایلهای شما باید به شکل زیر باشد:
فایل اصلی شما که کرنل آن را اجرا میکند باید main.example
باشد. example: {py, cpp, java, cs}
در صورتی که از فایل مدل استفاده میکنید، نام آن باید به صورت model
باشد. (بدون هیچ پسوندی)
تمامی فایلها باید پسوند یکسانی با فایل main
شما داشته باشند. (به جز فایل model
و فایلهای
header
در سیپلاسپلاس که h.
هستند)
هیچکدام از فایلها داخل فولدر نباشند.
در نهایت فایلهای خود را داخل یک فایل zip
قرار داده و آپلود کنید.
توجه کنید که برای اجرای کرنل روی سیستم لوکال خود، باید همان آدرس فایل اجرایی (در پایتون همان فایل اصلی برنامه) را به کرنل بدهید و فایل zip
فقط برای ارسال فایل کدهایتان بر روی سایت میباشد.
ساختار یک نمونه کلاینت مولتی فایل پایتون معتبر میتواند به صورت زیر باشد:
myCode.zip
|─── main.py
│─── MyModule1.py
|─── MyModule2.py
└─── model