كثير ، مثلي ، يحب محاكاة كرة القدم والعديد منهم مدمنون على البرمجة. ذات مرة ، في عام 2004 ، بعد أن لعبت بما فيه الكفاية في FIFU ، اعتقدت أنه سيكون من الجيد الجمع بين هويتي في لعبة واحدة يتم فيها التحكم في اللاعبين ليس باليد ، ولكن بواسطة نص مكتوب لهم. وهناك نوع من
لعبة للمبرمجين ، وهي
لعبة "RoboCup Simulation Soccer" ، فقط بطريقتهم الخاصة. كنت مبرمجًا مبتدئًا ثم كتبت بالفعل بعض الألعاب البسيطة ، لكنني لم أتمكن من إدراك فكرتي تمامًا ، حيث لم أكن أعرف كيف أكتب مترجمًا مناسبًا بلغة برمجة اللاعب. هناك المزيد من الألعاب للمبرمجين الآن ، لكنني لم أجد ألعابًا أريدها ، وبعد عدة سنوات وأطنان من الكود المكتوب ، قررت العودة إلى فكرتي القديمة.
تحولت اللعبة بالطريقة التي أردتها -
funcball.com .
- لكل لاعب من اللاعبين الأربعة ، يتم كتابة رمز من الشروط والإجراءات ، والتي يتم تنفيذها كل 50 مللي ثانية.
- يتحكم كل لاعب في نفسه ولا يستطيع الوصول إلى ذاكرة الآخرين ، لكن يمكنه إعطائهم إشارات. يتم تنفيذ الذاكرة عن طريق الأعلام.
- يتحرك جميع اللاعبين بنفس السرعة الثابتة ، لكن اللاعب الذي يحمل الكرة أبطأ قليلاً. لا حراس المرمى.
- يتم تنفيذ رموز المشغل عشوائيًا. يتم تنفيذ الكود الذي يعرض الكرة من المركز أولاً.
- يمكن تغيير سرعة ومدة اللعبة. من الممكن تسجيل التطابقات.
- حاولت أن أوضح اللغة قدر الإمكان للمبتدئين. كتابة وظائفك غير مطلوب ، لأن المدمج في تسمح لك لبرمجة أي سلوك لاعب تقريبا.
- من الممكن التنافس مع الفرق الأخرى على موقع اللعبة.
بناء جملة اللغة التقليدية:

هناك شكل من أشكال الكتابة بدون أقواس ، أكثر شيوعًا لغير المبرمجين:

هنا مثال آخر:

في هذه الحالة ، يتم التحقق من أنه إذا لم تكن الكرة مع اللاعب الثالث ، فركض حتى المربع العاشر من الملعب. الرمز الدولار يخرج البرنامج النصي.
يتم دعم وتشجيع التداخل:

في هذا المثال ، هناك شرط "player3_opened". هذه وظيفة مع تضمين وسيطة (3 - رقم لاعب) في الاسم ، والتي في رأيي مفهومة وقابلة للقراءة.
يمكن استخدام ما يسمى بوحدات الماكرو في الكود ، بدلاً من استبدال القيم المقابلة في وقت التشغيل. مثال على تمريرة الانتقال إلى اللاعب 4:

[X4 + 50] هو إحداثي X للاعب 4 بزيادة 50 ، و [Y4] هو إحداثيته Y. قبل تنفيذ هذا الأمر ، سيتم استبدال وحدات الماكرو الموجودة في أقواس مربعة بقيم محددة ، وستظهر ، على سبيل المثال ، مثل: send_ball: 254.190.
يمكن استخدام وحدات الماكرو وظائف الماكرو المضمنة. على سبيل المثال ، إذا كانت المسافة من اللاعب إلى هدف الخصم أقل من 150 بكسل ، فاضرب على الهدف:

سيتم استبدال X و Y بإحداثيات اللاعب ، وسيتم استبدال D (X ، Y ، 559،188) بالمسافة المحسوبة من هذه النقطة إلى النقطة مع الإحداثيات 559،188 (إحداثيات الهدف). إذا كان أقل من 150 ، فسيتم استبدال الماكرو بـ True (صحيح) ، وإذا لم يكن كذلك ، فسيتم استبداله بـ False (False) ، وسيتم تشغيله: إذا (True) {beat_on_ Turn}.
قررت مغادرة الحقل بالشكل الأفقي المعتاد. الأصل هو المعيار - الزاوية اليسرى العليا. عند برمجة اللاعبين ، يجب أن نفترض أنها تبدأ في النصف الأيسر من الملعب. أعداد لاعبيها هي 1-4 ، وأرقام الآخرين 5-8. عند اللعب على اليمين ، تنعكس جميع الإحداثيات والأرقام المربعة والزوايا وأعداد اللاعبين ، أي سوف يلعب الفريق نفس الشيء كما في النصف الأيسر.
يسمح لك
المحرر بعدم كتابة كل الشفرة بيديك ، ولكن بإدراج الوظائف الضرورية عن طريق النقر. هناك مساعدة لكل وظيفة.

عندما يكون الفريق جاهزًا ، يمكن تحميله على الخادم (يتم من المحرر في اللعبة). بعد ذلك ، سوف تشارك في
الموسم العادي. ستلعب جميع الفرق المحملة فيما بينها ، وسيتم نشر نتائج وسجلات الألعاب على الموقع. يعتمد عدد المرات التي ستقام فيها البطولة على اهتمام المشاركين. بينما مجموعة من الفرق للبطولة الأولى.
على الموقع ، يمكنك أيضًا طلب التطابقات في أي وقت مع الفرق المختارة. يتم إرسال الفرق على الفور تلقائيًا إلى خادم منفصل ، حيث يتم لعب المباريات ، ويتم إرسال سجلاتهم مرة أخرى ، ويمكنك بعد ذلك تنزيلها ومشاهدتها.
لذلك ، أدعو الجميع
للعب ! أعتقد أن هناك العديد من الأشخاص الذين قد يهتمون بمثل هذا المشروع ، وآمل أن يساعد هذا المقال في العثور عليهم.