إنشاء جدول رياضات إلكترونية بنظام الإقصاء المزدوج
حوّلوا قائمة مرتبة من الفرق إلى بنية بطولة كاملة بنظام الإقصاء المزدوج من دون رسم الجولات يدوياً.
شغّل الأداة مجانًا
يعتمد المولد ترتيب القائمة بوصفه ترتيب التصنيف، ويوسع عدد الخانات إلى قوة العدد اثنين التالية، ويضيف الإعفاءات اللازمة، ثم يعيد مساري الفائزين والخاسرين مترابطين. تبين كل خانة لاحقة المباراة والنتيجة اللتين تغذيانها، ويتضمن النهائي الكبير مباراة الإعادة المشروطة المطلوبة إذا فاز ممثل مسار الخاسرين بالمواجهة الأولى على اللقب. النتيجة حتمية وجاهزة لبرامج البطولات ورسومات البث وإجراءات التسجيل أو مراجعة جدول منافسات الرياضات الإلكترونية قبل انطلاقها.
أعدّوا قائمة التصنيف وافهموا الإعفاءات
أدخلوا أسماء الفرق من صاحب التصنيف الأقوى إلى الأضعف. يحصل الاسم الأول على التصنيف 1 والثاني على التصنيف 2 وهكذا، ولا يعيد المولد ترتيبها عشوائياً. يجب أن يحتوي كل اسم على نص ظاهر وأن يكون فريداً بصرف النظر عن حالة الأحرف، لأن وجود مشاركين متطابقين يجعل تسجيل النتائج ملتبساً. يسهل تمثيل بطولة الإقصاء المزدوج بعدد خانات يساوي قوة للعدد اثنين؛ فستة فرق تستخدم ثماني خانات، بينما تبقى ثمانية فرق كما هي. تظهر الخانات الفارغة على هيئة كائنات إعفاء صريحة بدلاً من اختراع خصوم. يباعد التوزيع القياسي بين أعلى المصنفين لأطول مدة ممكنة. يتأهل الفريق المقترن بإعفاء من دون لعب، لكن خانة مباراة الجولة الأولى تبقى حتى تستقر المعرفات والمراجع اللاحقة. يفيد ذلك عند إغلاق التسجيل على عدد غير مكتمل أو عند انسحاب متأخر يخفض عدد المشاركين المخطط له.
اقرؤوا روابط مساري الفائزين والخاسرين
يقسم الناتج winners_bracket وlosers_bracket إلى جولات مرقمة. تتضمن مباريات البداية فرقاً مصنفة أو إعفاءات، بينما تتضمن المباريات اللاحقة كائنات مصدر لأن المشاركين يتوقفون على النتائج. يحدد kind هل تصل الخانة إلى فائز أم خاسر، ويحدد match المباراة السابقة، ويحفظ slot جانب الاقتران الجديد. تنتقل خسائر مسار الفائزين إلى مسار الخاسرين على مراحل، وبين هذه الانتقالات تقلص جولات الدمج عدد الباقين قبل وصول مجموعة أخرى. ينشأ بذلك إيقاع الإقصاء المزدوج المعتاد، فلا يخرج الفريق إلا بعد خسارته التنافسية الثانية. معرفات مثل W2M1 وL3M2 حتمية. يمكن لتطبيقكم حفظ النتائج بهذه المفاتيح، وحل المراجع بعد انتهاء المباراة، وعرض البنية في قائمة أو جدول تقليدي أو رسم للبث. تصف البنية مسار التقدم فقط؛ فلا تتنبأ بالفائزين ولا تنشئ نتائج وهمية.
أديروا النهائي وادمجوا النتيجة
يحتوي كائن grand_final على مباراة اللقب الأولى ومباراة إعادة مشروطة. تجمع GF1 ممثل مسار الفائزين الذي لم يخسر مع الناجي من مسار الخاسرين. إذا فاز الفريق غير المهزوم انتهت البطولة، لأن منافسه يكون قد خسر مرتين. أما إذا فاز ممثل مسار الخاسرين، فيصبح لكل فريق خسارة واحدة وتحسم GF2 البطل بشروط متساوية. يمنع التصريح بشرط الإعادة خطأ شائعاً يتمثل في افتراض نهائي واحد. للدمج، احفظوا الاستجابة الكاملة بوصفها تعريف البطولة، ثم أضيفوا المواعيد والخوادم والنتائج والحالات في نظامكم باستخدام معرف كل مباراة كمفتاح ثابت. لا تحلوا مصدراً قبل اعتماد المباراة المشار إليها، وتعاملوا مع الإعفاء وفق قواعد الحدث. لا يستخدم المولد الشبكة ولا يحتفظ بقائمة الفرق. التوليد مجاني في المتصفح، ويطبق طلب API السعر الأساسي المعروض $0.002 عند أتمتة التسجيل أو إدارة المنافسة.
حالات الاستخدام
صنّفوا تصفيات عبر الإنترنت
حوّلوا ترتيب المسجلين إلى جولات مترابطة، حتى عندما يتطلب العدد النهائي إضافة إعفاءات.
أنشئوا جدولاً للبث
شغّلوا الرسومات بمعرفات ثابتة ومصادر تقدم واضحة من دون إعادة ربط كل جولة يدوياً.
هيئوا برنامج إدارة البطولات
احفظوا البنية الحتمية أولاً، ثم أضيفوا المواعيد والنتائج والخرائط وحالات المباريات.
الأسئلة الشائعة
كم فريقاً يلزم؟
يلزم أربعة أسماء فرق فريدة وغير فارغة على الأقل، والحد الأقصى المقبول هو 64 فريقاً.
كيف يجري تصنيف الفرق؟
ترتيب الإدخال هو ترتيب التصنيف؛ يحصل الفريق الأول على التصنيف 1، ويفصل التوزيع القياسي بين الأقوى.
ماذا يحدث إذا لم يكن عدد الفرق قوة للعدد اثنين؟
يتوسع الجدول إلى قوة العدد اثنين التالية، وتصبح الخانات غير المستخدمة إعفاءات صريحة.
هل يتضمن الجدول إعادة للنهائي الكبير؟
نعم. تقام GF2 فقط إذا هزم ممثل مسار الخاسرين الممثل غير المهزوم في GF1.
هل تحدد الأداة المواعيد أو تختار الفائزين؟
لا. تعيد بنية البطولة ومراجع التقدم، بينما يدير نظامكم المواعيد والنتائج والقرارات.
ما تكلفة طلب API؟
السعر الأساسي لكل طلب API هو $0.002. ويمكنكم أيضاً إنشاء الجدول مجاناً في المتصفح.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/sports/esports-bracket-seed-matchups \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"teams":["Aurora","Blaze","Cyclone","Dragons","Eclipse","Falcons"]}'const res = await fetch("https://api.kit.forhosting.com/sports/esports-bracket-seed-matchups", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"teams": [
"Aurora",
"Blaze",
"Cyclone",
"Dragons",
"Eclipse",
"Falcons"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/sports/esports-bracket-seed-matchups",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"teams": [
"Aurora",
"Blaze",
"Cyclone",
"Dragons",
"Eclipse",
"Falcons"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/sports/esports-bracket-seed-matchups", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"teams":["Aurora","Blaze","Cyclone","Dragons","Eclipse","Falcons"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"teams":["Aurora","Blaze","Cyclone","Dragons","Eclipse","Falcons"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/sports/esports-bracket-seed-matchups", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"teams": [
"Aurora",
"Blaze",
"Cyclone",
"Dragons",
"Eclipse",
"Falcons"
]
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "sports.esports_bracket_seed_matchups",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |