FIRA Chovgan Simulation League · U14 / U19

Chovgan Simulation

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

مسابقه‌ی Chovgan در شبیه‌ساز رسمی
شبیه‌ساز رسمی CHOVGAN: تیم قرمز و تیم آبی، هر کدام چهار ربات، در ورزشگاه و کنار دایره‌ی مرکزی
این لیگ چیست

چهار ربات، یک توپ، یک داور مصنوعی

هر تیم کدی می‌نویسد که چهار ربات آن را هدایت می‌کند. ربات‌های تیم آبی B1 تا B4 و ربات‌های تیم زرد Y1 تا Y4 نام دارند (در شبیه‌ساز به‌صورت قرمز و آبی نمایش داده می‌شوند). هر ربات GPS، قطب‌نما، چهار حسگر فاصله، گیرنده‌ی توپ و فرستنده/گیرنده‌ی تیمی دارد و فقط سرعت چرخ چپ و راست خودش را تعیین می‌کند. هیچ دکمه‌ی «شوت» یا «پاس» وجود ندارد؛ هر تعامل با توپ فیزیکی است.

مسابقه دو نیمه‌ی ۲ دقیقه‌ای دارد. هر گل معتبر یک امتیاز است و تیمی که گل بیشتری بزند برنده است. امتیاز جداگانه‌ای برای مالکیت توپ، پاس، زیبایی کد یا مصاحبه داده نمی‌شود؛ فقط نتیجه‌ی مسابقه. تیم‌ها در دو رده‌ی کاملاً جدای U14 و U19 بازی می‌کنند. در U14 یک قابلیت ویژه به نام Coach Board وجود دارد که در U19 نیست.

۴ رباتدر هر تیم، همه با امکانات یکسان
۲ × ۲ دقیقهدو نیمه روی ساعت رسمی شبیه‌ساز
۲ تا ۴ نفراعضای تیم به‌علاوه‌ی یک کاپیتان
Pythonبا SDK رسمی Chovgan 1.0
یک فایل ZIPکد هر چهار ربات در یک بسته
U14 · U19رده‌ها کاملاً جدا؛ سن مبنا ۳۰ ژوئن ۲۰۲۶
مهارت‌هایی که یاد می‌گیرید: برنامه‌نویسی Python، هندسه و مثلثات، کنترل حرکت ربات دیفرانسیلی، استدلال با داده‌ی حسگر، ارتباط میان ربات‌ها و راهبرد تیمی.
محیط شبیه‌ساز

شبیه‌ساز CHOVGAN چه شکلی است؟

تصاویر از نسخه‌ی Windows شبیه‌ساز (Showcase v1) و راهنمای دانش‌آموزی v1.3 گرفته شده‌اند. برخی صفحه‌ها هنوز نام قدیمی «CHOGAN» را روی خود دارند؛ نام رسمی لیگ CHOVGAN است. ترتیب پیشنهادی یادگیری: Rules & Guide ← Robot Lab ← Training ← Competition.

راهنمای اجرا

چطور شبیه‌ساز را باز کنیم و کد را روی آن بارگذاری کنیم؟

دانلود و باز کردن

فایل CHOGAN_Showcase_Windows.exe را از بخش دانلود بگیرید (حدود ۱۲۰ مگابایت) و آن را در یک پوشه مثلاً Chogan قرار دهید. نیاز به نصب ندارد؛ روی آن دوبار کلیک کنید. اگر ویندوز پیام آبی «Windows protected your PC» داد، روی More info و سپس Run anyway بزنید.

منوی اصلی و انتخاب رده

شبیه‌ساز با صحنه‌ی ورزشگاه و منوی سمت چپ باز می‌شود: Competition، Training، Robot Lab، Rules & Guide، Settings، About، Exit. اول Rules & Guide را بخوانید، در Robot Lab با «Open live sensor practice» حسگرها را ببینید و در Training تمرین کنید. برای مسابقه Competition را بزنید و در صفحه‌ی Select Competition Division روی Select U14 یا Select U19 کلیک کنید (مطابق رده‌ی ثبت‌نامی تیم).

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

کد تیم یک پوشه به نام chovgan_team است با فایل‌های robot.py (راه‌انداز)، chovgan_robot.py (کمکی SDK)، robot1.py تا robot4.py (کد چهار بازیکن) و در صورت نیاز utils.py. شبیه‌ساز برای هر ربات یک بار robot.py را اجرا می‌کند و این فایل از روی نام ربات (مثلاً B3) کلاس بازیکن مناسب را انتخاب می‌کند. روی ربات چهارپا، «left wheel motor» و «right wheel motor» کنترل‌های مجازی حرکت‌اند که شبیه‌ساز به راه رفتن و چرخیدن ترجمه می‌کند.

بارگذاری کد: مرحله‌ی STRATEGY

در Competition مراحل MATCH و TEAMS را کامل کنید تا به STRATEGY (03) برسید. در Code workflow یکی از دو گزینه‌ی One team file یا One file per robot را انتخاب کنید، سپس در پنل تیم خود روی Select strategy file بزنید و فایل یا ZIP تیم را بدهید. پیام‌های زیر انتخاب‌گر را بخوانید: تا وقتی «Manifest / SDK / controllers: not verified» نشان می‌دهد، کد شما اعتبارسنجی نشده است. «Built-in match strategy available» یعنی راهبرد داخلی شبیه‌ساز، نه کد شما. بعد از تأیید، Next: Ready Check را بزنید. کد باید حتماً داخل شبیه‌ساز اجرا شود؛ اجرای robot.py در یک پنجره‌ی معمولی Python شیء Robot را نمی‌سازد.

تحویل برای مسابقه

پوشه‌ی chovgan_team/، فایل team_name.txt (نام تیم در یک خط) و در صورت تمایل logo.png را با هم در یک فایل ZIP فشرده کنید. پوشه‌ها باید مستقیم در سطح اول ZIP باشند، نه داخل یک پوشه‌ی دیگر. محل و مهلت آپلود را کمیته فنی اعلام می‌کند.

ساختار پیشنهادی ZIP تیم

ChovganTeam.zip
  chovgan_team/
    robot.py          # راه‌انداز: بازیکن درست را انتخاب می‌کند
    chovgan_robot.py   # کمکی مشترک ChovganRobot
    robot1.py         # بازیکن ۱
    robot2.py         # بازیکن ۲
    robot3.py         # بازیکن ۳
    robot4.py         # بازیکن ۴
    utils.py          # اختیاری: توابع مشترک
  team_name.txt       # نام تیم
  logo.png            # اختیاری

راه‌انداز robot.py

from controller import Robot
from robot1 import ChovganPlayer1
from robot2 import ChovganPlayer2
from robot3 import ChovganPlayer3
from robot4 import ChovganPlayer4

PLAYERS = {1: ChovganPlayer1, 2: ChovganPlayer2,
           3: ChovganPlayer3, 4: ChovganPlayer4}

robot = Robot()
number = int(robot.getName()[1:])   # "B3" -> 3
player = PLAYERS[number](robot)
player.run()
پیش از آپلود چک کنید: هر چهار فایل بازیکن هست؛ robot.py آن‌ها را درست import می‌کند؛ team_name.txt واقعاً متنی است (نه team_name.txt.txt)؛ ZIP بدون خطا باز می‌شود؛ پوشه‌ی اضافی یا پوشه‌ی controllers/ وجود ندارد؛ بسته‌ی controller خود شبیه‌ساز را داخل ZIP نگذاشته‌اید.
کد پایه

کد پایه‌ی تیم Chovgan — از همین‌جا شروع کنید

یک تیم چهار رباتی کامل (دروازه‌بان، مدافع، دو مهاجم) مطابق API رسمی Chovgan SDK 1.0، به‌علاوه‌ی یک ران‌تایم محلی که همان API را روی یک زمین دوبعدی اجرا می‌کند؛ بنابراین کد را همین امروز، بدون شبیه‌ساز اصلی، اجرا می‌کنید و حرکت ربات‌ها و گل‌ها را می‌بینید.

دانلود و باز کردن

Chovgan-BaseCode.zip را بگیرید و باز کنید. فقط Python 3.10 یا جدیدتر لازم است؛ هیچ کتابخانه‌ای نصب نمی‌شود.

اجرای مسابقه‌ی محلی

در پوشه‌ی chovgan_base ترمینال باز کنید و بزنید:

python local_runtime/run_local.py --realtime

تیم شما (آبی) مقابل حریف داخلی بازی می‌کند؛ زمین به‌صورت متنی رسم می‌شود و داور گل، شروع مجدد و «عدم پیشرفت» را اعلام می‌کند. بدون --realtime بازی با بیشترین سرعت اجرا و فقط نتیجه چاپ می‌شود.

ویرایش راهبرد

فایل‌های robot1.py تا robot4.py را عوض کنید؛ توابع کمکی (go_to، face_ball، drive) در utils.py هستند. با --yellow chovgan_team تیم را مقابل خودش بیازمایید.

تحویل

فقط chovgan_team/ و team_name.txt را ZIP کنید؛ پوشه‌ی local_runtime را نه.

توجه: نسخه‌ی فعلی شبیه‌ساز CHOVGAN (Showcase v1) هنوز کد Python شرکت‌کننده را اجرا نمی‌کند («SDK bridge not connected»)؛ مسابقه‌ها با کنترلر داخلی اجرا می‌شوند. تا اتصال پل SDK در نسخه‌ی بعدی، با ران‌تایم محلی تمرین کنید. ابعاد زمین و مقیاس حسگرها در ران‌تایم محلی تقریبی است و در utils.py قابل تنظیم است.

نتیجه‌ی یک اجرای نمونه

Blue  = chovgan_team
Yellow = built-in opponent

[referee   13.3s] {"event": "goal", "team": "B", "score": {"B": 1, "Y": 0}}
[referee   26.6s] {"event": "goal", "team": "B", "score": {"B": 2, "Y": 0}}
[referee  120.0s] {"event": "half_time", "score": {"B": 4, "Y": 0}}
...
FINAL  Blue 8 - 0 Yellow
match log written to last_match.json

ساختار بسته

chovgan_base/
  chovgan_team/          # <- این پوشه تحویل داده می‌شود
    robot.py             # راه‌انداز: B3 -> ChovganPlayer3
    chovgan_robot.py     # کلاس کمکی ChovganRobot (همه‌ی دستگاه‌ها)
    robot1.py            # دروازه‌بان
    robot2.py            # مدافع
    robot3.py            # مهاجم (پشت توپ می‌رود و هل می‌دهد)
    robot4.py            # مهاجم دوم (همان کلاس، شریک ۳)
    utils.py             # drive / go_to / face_ball / ثابت‌های زمین
  team_name.txt
  local_runtime/         # شبیه‌ساز محلی (در ZIP تحویلی نمی‌رود)
    controller/          # ماژول controller با همان API رسمی
    run_local.py         # اجرای ۸ کنترلر + داور ساده
  README.md
طرح درس

طرح درس Chovgan — از اولین حرکت تا تیم چهار رباتی

بر پایه‌ی «راهنمای برنامه‌نویسی دانش‌آموزی Chovgan، نسخه‌ی ۱.۳ (Chovgan SDK 1.0 — API نهایی دانش‌آموزی، ۱۷ اکتبر ۲۰۲۶)». هر جلسه حدود ۹۰ دقیقه. U14 می‌تواند جلسه‌های ۱ تا ۷ را عمیق‌تر کار کند؛ U19 همه‌ی جلسه‌ها به‌علاوه‌ی چالش پیشرفته. فایل کامل راهنما در بخش دانلود هست.

۱لیگ، زمین و قوانین بازیمشاهده‌ای
هدف

دانش‌آموز بتواند یک مسابقه‌ی Chovgan را از شروع تا نتیجه شرح دهد و نقش داور مصنوعی را توضیح دهد.

فعالیت
  • شبیه‌ساز را باز کنید؛ Rules & Guide، سپس Robot Lab (Open live sensor practice) و Training را ببینید و از Competition یک مسابقه‌ی نمایشی تماشا کنید.
  • اجزای تابلوی امتیاز را پیدا کنید: نام تیم‌ها، نتیجه، زمان، نشانگر نیمه (H1/H2).
  • ربات‌های هر تیم را بشمارید و موقعیت شروع آن‌ها را علامت بزنید.
  • بندهای CH-1 تا CH-7 و CH-14 تا CH-16 قوانین را بخوانید.
ارزیابی

آزمونک کوتاه: چه کسی شروع مجدد را کنترل می‌کند؟ آیا تیم می‌تواند ربات خودش را جابه‌جا کند؟ چه چیزی گل حساب می‌شود؟

۲اولین هدف: ربات را حرکت بدهکدنویسی
مفاهیم
  • from controller import Robot برنامه را به ربات شبیه‌ساز وصل می‌کند.
  • getDevice("left wheel motor") موتور را با نام دقیق پیدا می‌کند؛ setPosition(float("inf")) موتور را در حالت کنترل سرعت می‌گذارد.
  • robot.step(32) تا به‌روزرسانی بعدی شبیه‌سازی صبر می‌کند (۳۲ میلی‌ثانیه). robot.getTime() زمان شبیه‌سازی به ثانیه.
  • بازه‌ی مجاز سرعت موتور −۱۰ تا +۱۰ است.
from controller import Robot
TIME_STEP = 32
robot = Robot()
left = robot.getDevice("left wheel motor")
right = robot.getDevice("right wheel motor")
left.setPosition(float("inf"))
right.setPosition(float("inf"))
start = robot.getTime()
while robot.step(TIME_STEP) != -1:
    if robot.getTime() - start < 2.0:
        left.setVelocity(3.0); right.setVelocity(3.0)
    else:
        left.setVelocity(0.0); right.setVelocity(0.0)
تمرین
  • سرعت ۳.۰ را به ۵.۰ تغییر دهید؛ ربات سریع‌تر می‌رود؟ مدت ۲.۰ را به ۴.۰ تغییر دهید.
  • چالش ۱: ربات چهار ثانیه حرکت کند و بایستد. چالش ۲: یک ثانیه با دو سرعت منفی عقب برود.
۳سرعت، عقب‌گرد و چرخش (حرکت دیفرانسیلی)کدنویسی
مفاهیم
  • سرعت برابر دو چرخ: حرکت مستقیم. سرعت مخالف: چرخش درجا. سرعت نابرابر: حرکت روی کمان.
  • setVelocity فقط سرعت را درخواست می‌کند؛ حلقه‌ی robot.step(...) باید همچنان بچرخد.
  • جهت دقیق چرخش را حدس نزنید؛ در شبیه‌ساز آزمایش کنید.
left.setVelocity(3.0);  right.setVelocity(3.0)    # جلو
left.setVelocity(-3.0); right.setVelocity(-3.0)   # عقب
left.setVelocity(3.0);  right.setVelocity(-3.0)   # چرخش درجا
left.setVelocity(2.0);  right.setVelocity(4.0)    # مسیر منحنی
تمرین
  • تابعی به نام drive(v, w) بنویسید که سرعت جلو و سرعت چرخش را به سرعت دو چرخ تبدیل کند و خروجی را به بازه‌ی −۱۰ تا +۱۰ محدود کند.
  • پیش‌بینی کنید وقتی چرخ چپ سریع‌تر است ربات به کدام سمت می‌چرخد؛ بعد آزمایش کنید.
۴نام ربات‌ها و حسگرهای فاصلهکدنویسی
مفاهیم
  • robot.getName() نام ربات را می‌دهد: حرف اول تیم (B یا Y) و عدد شماره‌ی بازیکن. هرگز "B1" را در کد ثابت ننویسید.
  • چهار حسگر فاصله: distancesensor front، back، left، right. مقدار کوچک‌تر معمولاً یعنی مانع نزدیک‌تر؛ عدد سانتی‌متر نیست.
  • هر حسگر باید با enable(32) فعال شود.
front = robot.getDevice("distancesensor front")
front.enable(TIME_STEP)
while robot.step(TIME_STEP) != -1:
    if front.getValue() < 300:
        left.setVelocity(0.0); right.setVelocity(0.0)
    else:
        left.setVelocity(3.0); right.setVelocity(3.0)
تمرین
  • آستانه‌ی ۳۰۰ را با ۵۰۰ مقایسه کنید؛ ربات زودتر می‌ایستد؟
  • چالش ۳: ربات در یک آستانه‌ی دلخواه بایستد؛ دو آستانه را آزمایش کنید.
۵GPS و قطب‌نما: من کجا هستم و رو به کجا؟کدنویسی
مفاهیم
  • gps.getValues() سه مقدار می‌دهد: x، y و ارتفاع؛ مختصات زمین، نه طول و عرض جغرافیایی.
  • compass.getValues() یک بردار جهت می‌دهد، نه زاویه‌ی درجه. محاسبه‌ی زاویه با math.atan2 گام پیشرفته و اختیاری است.
gps = robot.getDevice("gps"); gps.enable(32)
compass = robot.getDevice("compass"); compass.enable(32)
while robot.step(32) != -1:
    x, y, height = gps.getValues()
    v = compass.getValues()
    heading = math.atan2(v[0], v[1]) + math.pi / 2
تمرین
  • چالش ۴: نام ربات و مختصات GPS را چاپ کنید؛ کدام مقادیر با حرکت تغییر می‌کنند؟
  • U19: از GPS و قطب‌نما تابعی بسازید که ربات را به یک نقطه‌ی هدف برساند.
۶پیدا کردن توپکدنویسی
مفاهیم
  • دستگاه ball receiver مشاهدات توپ را در یک صف (FIFO) می‌گذارد: جهت محلی توپ (getEmitterDirection) و قدرت سیگنال (getSignalStrength). سیگنال قوی‌تر معمولاً یعنی توپ نزدیک‌تر.
  • بعد از خواندن هر بسته، nextPacket() را صدا بزنید وگرنه همان پیام تکرار می‌شود.
  • فرض نکنید direction[0] همیشه یعنی «چپ»؛ قرارداد محورها را در شبیه‌ساز بررسی کنید.
ball = robot.getDevice("ball receiver"); ball.enable(32)
while robot.step(32) != -1:
    if ball.getQueueLength() > 0:
        direction = ball.getEmitterDirection()
        strength = ball.getSignalStrength()
        ball.nextPacket()
تمرین
  • ربات را طوری بنویسید که به سمت توپ بچرخد و وقتی توپ روبه‌رو بود جلو برود و آن را هل دهد.
۷ارتباط تیمی با JSONکدنویسی
مفاهیم
  • team emitter و team receiver فقط بین ربات‌های یک تیم کار می‌کنند؛ ارسال پیام به تیم حریف ممنوع است.
  • پیام متن است؛ یک دیکشنری JSON ساده بهترین قالب است. حداکثر اندازه‌ی پیام ۴۰۹۶ بایت.
  • به ترتیب رسیدن پیام هم‌تیمی‌ها تکیه نکنید.
sender = robot.getDevice("team emitter")
receiver = robot.getDevice("team receiver"); receiver.enable(32)
message = {"robot": robot.getName(), "status": "ready"}
sender.send(json.dumps(message))
while receiver.getQueueLength() > 0:
    data = json.loads(receiver.getString()); receiver.nextPacket()
تمرین
  • چالش ۵ (پیشرفته): هر ربات نام خود و آخرین قدرت سیگنال توپ را برای تیم بفرستد. حالتی که هیچ مشاهده‌ای از توپ نیست را هم مدیریت کنید.
  • با این پیام‌ها تصمیم بگیرید کدام ربات (نزدیک‌ترین به توپ) حمله کند.
۸پیام‌های داور و کمکی ChovganRobotکدنویسی
مفاهیم
  • داور مصنوعی گل، گل به خودی، خطا، شروع مجدد هوایی و ساعت را اداره می‌کند. از supervisor receiver (فقط خواندنی) می‌توانید پیام‌های داور را بخوانید. قالب نهایی فیلدها را کمیته فنی منتشر می‌کند؛ راهبرد را به کلیدهای حدسی وابسته نکنید.
  • کلاس کمکی ChovganRobot در chovgan_robot.py متدهای آماده دارد: get_gps_coordinates()، get_compass_heading()، get_sonar_values()، is_new_ball_data() / get_new_ball_data()، is_new_team_data() / get_new_team_data()، send_data_to_team(value).
from chovgan_robot import ChovganRobot, TIME_STEP
class MyChovganRobot(ChovganRobot):
    def run(self):
        while self.robot.step(TIME_STEP) != -1:
            if self.is_new_ball_data():
                ball = self.get_new_ball_data()
                print("Ball strength:", ball["strength"])
۹تیم چهار رباتی: نقش‌ها و آرایشراهبرد
مفاهیم
  • یک راه‌انداز (robot.py) و چهار کلاس راهبرد (robot1.py تا robot4.py). همه‌ی بازیکن‌ها همان حسگرها را دارند؛ تفاوت فقط در منطق است.
  • نقش‌ها اجباری نیستند و می‌توانند پویا عوض شوند: مهاجم (نزدیک‌ترین به توپ)، پشتیبان، دفاع، دروازه‌بان.
  • کد مشترک را در utils.py بگذارید؛ از import دایره‌ای پرهیز کنید.
تمرین
  • هر چهار ربات را با نقش‌های متفاوت بنویسید و در Competition مقابل تیم نمونه بازی کنید. نتیجه و تعداد گل را ثبت کنید.
۱۰مسابقه‌ی آزمایشی با قوانین واقعی و تحویل ZIPمسابقه
فعالیت
  • ZIP تیم را طبق ساختار رسمی بسازید و چک‌لیست پیش از آپلود را انجام دهید.
  • یک مسابقه‌ی کامل (دو نیمه‌ی ۲ دقیقه‌ای) مقابل تیم دیگر کلاس اجرا کنید؛ هیچ‌کس در طول بازی به ربات‌ها دست نمی‌زند.
  • بعد از بازی، هر عضو تیم بخشی از کد را توضیح دهد (آمادگی برای بررسی اصالت کد، CH-25).
رایج‌ترین مشکلات
  • خطای import controller: کد بیرون از شبیه‌ساز اجرا شده است.
  • ربات حرکت نمی‌کند: نام موتورها، حالت سرعت، سرعت غیرصفر، حلقه‌ی step و فعال بودن بازی را چک کنید.
  • پیام توپ تکرار می‌شود: nextPacket() را فراموش کرده‌اید.
  • بازیکن ۴ شروع نمی‌شود: robot4.py و نگاشت شماره‌ها را بررسی کنید.

نام‌هایی که باید دقیق بنویسید

"gps"                   "compass"
"ball receiver"         "supervisor receiver"
"team emitter"          "team receiver"
"distancesensor front"  "distancesensor back"
"distancesensor left"   "distancesensor right"
"left wheel motor"      "right wheel motor"

TIME_STEP = 32 ms   |  motor speed: -10 .. +10   |  team message <= 4096 bytes
قوانین

خلاصه‌ی قوانین مسابقه (نسخه‌ی ۱۷ اکتبر ۲۰۲۶)

این خلاصه برای فهم سریع است؛ متن کامل و رسمی را از بخش دانلود بگیرید. در صورت اختلاف، آخرین نسخه‌ی رسمی منتشرشده توسط کمیته فنی معتبر است.

CH-1
رده‌ها و سندو رده‌ی کاملاً جدا: U14 و U19. سن مبنا ۳۰ ژوئن ۲۰۲۶: U14 متولدین ۱ ژوئیه ۲۰۱۲ به بعد؛ U19 متولدین ۱ ژوئیه ۲۰۰۷ به بعد. ممکن است مدرک سن خواسته شود.
CH-2
تیم۲ تا ۴ نفر با یک کاپیتان. کاپیتان رابط رسمی برای مسائل فنی، داور و اعتراض‌هاست.
CH-3
ربات‌هادقیقاً ۴ ربات فعال در هر تیم: B1–B4 و Y1–Y4. همه‌ی ربات‌ها امکانات یکسان دارند؛ نقش ثابت اجباری نیست.
CH-4
Coach Board فقط در U14U19 هیچ ورودی تاکتیکی انسانی در حین بازی ندارد. مشخصات Coach Board را کمیته فنی پیش از استفاده منتشر می‌کند.
CH-5/6
خودمختاری و تعامل با توپهدایت دستی ممنوع. ربات‌ها از طریق SDK رسمی کنترل می‌شوند و توپ را فقط با تعامل فیزیکی مجاز حرکت می‌دهند. تغییر مستقیم مختصات یا سرعت توپ ممنوع. نگه داشتن مداوم توپ خطا نیست.
CH-7
هدف و نتیجهتیمی که گل معتبر بیشتری بزند برنده است؛ تساوی مساوی ثبت می‌شود. امتیازی برای سبک، مالکیت، پاس یا مصاحبه نیست.
CH-9/11
حسگرها و ارتباطفقط دستگاه‌ها و توابع مستند در SDK رسمی مجازند. ارتباط فقط بین ربات‌های یک تیم از طریق Team Communication؛ شنود حریف و کانال‌های شبکه/فایل غیرمجاز ممنوع.
CH-14/15
شروع و زمانداور مصنوعی توپ و ربات‌ها را در جای اولیه می‌گذارد. مسابقه دو نیمه‌ی ۲ دقیقه‌ای روی ساعت رسمی دارد. تیم‌ها نمی‌توانند ربات خود را جابه‌جا کنند یا ساعت را تغییر دهند.
CH-16
گل و گل به خودیگل فقط وقتی معتبر است که داور مصنوعی آن را ثبت کند. هر گل یک امتیاز؛ گل به خودی برای حریف.
CH-17–19
خطا، شروع مجدد، توقفهر برخورد خطا نیست؛ تشخیص با داور مصنوعی است. بعد از خطا، شروع مجدد هوایی (Aerial Ball Restart). داور می‌تواند بازی را متوقف یا ربات‌ها را جابه‌جا کند و «عدم پیشرفت» را اعلام کند.
CH-21
تحویل کدیک ZIP شامل کنترلر چهار ربات. ساختار فایل، نقطه‌ی ورود، وابستگی‌های مجاز و روش آپلود را کمیته فنی پیش از مسابقه منتشر می‌کند. پس از مهلت، تغییر کد بدون مجوز ممنوع. سازمان‌دهنده می‌تواند فایل‌ها، وابستگی‌ها و مصرف منابع را اعتبارسنجی کند.
CH-22/23
منابع، اینترنت و هوش مصنوعیکد نباید شبیه‌ساز را مختل کند یا منابع را تمام کند. در طول مسابقه استفاده از اینترنت، API ابری، سرویس AI از راه دور یا سرور کنترل خارجی ممنوع. استفاده از ابزار AI در توسعه، تیم را از فهم و توضیح کد خودش معاف نمی‌کند.
CH-24/25
خرابی فنی و مصاحبهمشکل فنی از طریق کانال رسمی به سرداور گزارش می‌شود؛ خرابی ناشی از کد خود تیم حق بازی مجدد نمی‌دهد. کمیته فنی می‌تواند فهم تیم از کدش را بررسی کند (بدون امتیاز جداگانه).
CH-26–28
انصاف، جریمه و اعتراضدور زدن داور، دسترسی به کد حریف یا خرابکاری عمدی = از اخطار تا حذف. اعتراض فقط پس از پایان دور، توسط کاپیتان، به کمیته فنی.
توجه: برخی جزئیات (ساختار دقیق ZIP، نسخه‌ی نهایی SDK، قالب پیام داور، توابع Coach Board، محدودیت منابع) هنوز در حال تأیید کمیته فنی است و پس از نهایی شدن در کانال کمیته داوران اعلام می‌شود.
دانلود

شبیه‌ساز، قوانین و راهنمای برنامه‌نویسی

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

کانال لیگ

کانال تلگرام و بله لیگ Chovgan

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