لعبة للمبرمجين FuncBall

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

تحولت اللعبة بالطريقة التي أردتها - funcball.com .

لعبة للمبرمجين FuncBall

  1. لكل لاعب من اللاعبين الأربعة ، يتم كتابة رمز من الشروط والإجراءات ، والتي يتم تنفيذها كل 50 مللي ثانية.
  2. يتحكم كل لاعب في نفسه ولا يستطيع الوصول إلى ذاكرة الآخرين ، لكن يمكنه إعطائهم إشارات. يتم تنفيذ الذاكرة عن طريق الأعلام.
  3. يتحرك جميع اللاعبين بنفس السرعة الثابتة ، لكن اللاعب الذي يحمل الكرة أبطأ قليلاً. لا حراس المرمى.
  4. يتم تنفيذ رموز المشغل عشوائيًا. يتم تنفيذ الكود الذي يعرض الكرة من المركز أولاً.
  5. يمكن تغيير سرعة ومدة اللعبة. من الممكن تسجيل التطابقات.
  6. حاولت أن أوضح اللغة قدر الإمكان للمبتدئين. كتابة وظائفك غير مطلوب ، لأن المدمج في تسمح لك لبرمجة أي سلوك لاعب تقريبا.
  7. من الممكن التنافس مع الفرق الأخرى على موقع اللعبة.

بناء جملة اللغة التقليدية:

رمز عينة FuncBall

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

رمز عينة FuncBall

هنا مثال آخر:

رمز عينة FuncBall

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

يتم دعم وتشجيع التداخل:

رمز عينة FuncBall

في هذا المثال ، هناك شرط "player3_opened". هذه وظيفة مع تضمين وسيطة (3 - رقم لاعب) في الاسم ، والتي في رأيي مفهومة وقابلة للقراءة.

يمكن استخدام ما يسمى بوحدات الماكرو في الكود ، بدلاً من استبدال القيم المقابلة في وقت التشغيل. مثال على تمريرة الانتقال إلى اللاعب 4:

رمز عينة FuncBall

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

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

رمز عينة FuncBall

سيتم استبدال X و Y بإحداثيات اللاعب ، وسيتم استبدال D (X ، Y ، 559،188) بالمسافة المحسوبة من هذه النقطة إلى النقطة مع الإحداثيات 559،188 (إحداثيات الهدف). إذا كان أقل من 150 ، فسيتم استبدال الماكرو بـ True (صحيح) ، وإذا لم يكن كذلك ، فسيتم استبداله بـ False (False) ، وسيتم تشغيله: إذا (True) {beat_on_ Turn}.

قررت مغادرة الحقل بالشكل الأفقي المعتاد. الأصل هو المعيار - الزاوية اليسرى العليا. عند برمجة اللاعبين ، يجب أن نفترض أنها تبدأ في النصف الأيسر من الملعب. أعداد لاعبيها هي 1-4 ، وأرقام الآخرين 5-8. عند اللعب على اليمين ، تنعكس جميع الإحداثيات والأرقام المربعة والزوايا وأعداد اللاعبين ، أي سوف يلعب الفريق نفس الشيء كما في النصف الأيسر.

يسمح لك المحرر بعدم كتابة كل الشفرة بيديك ، ولكن بإدراج الوظائف الضرورية عن طريق النقر. هناك مساعدة لكل وظيفة.

محرر فريق FuncBall

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

لذلك ، أدعو الجميع للعب ! أعتقد أن هناك العديد من الأشخاص الذين قد يهتمون بمثل هذا المشروع ، وآمل أن يساعد هذا المقال في العثور عليهم.

Source: https://habr.com/ru/post/ar481428/


All Articles