JavaRush /مدونة جافا /Random-AR /قسم "الألعاب" في JavaRush: محرك اللعبة

قسم "الألعاب" في JavaRush: محرك اللعبة

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

1 المقدمة

هناك ثلاث مراحل في تنفيذ لعبة الكمبيوتر من جانب المطور:
  1. تهيئة اللعبة هي إجراءات تحضيرية: تحديد حجم الملعب ورسمه، وإنشاء كائنات اللعبة وتثبيتها في الموضع الأولي، بالإضافة إلى الإجراءات الأخرى التي يجب تنفيذها في بداية اللعبة.

  2. عملية اللعبة. يتضمن ذلك حركة كائنات اللعبة، وإجراءات اللاعب، وحساب النقاط المكتسبة، بالإضافة إلى الإجراءات الأخرى التي يجب تنفيذها على فترات زمنية معينة أو عن طريق الضغط على الأزرار.

  3. إنهاء اللعبة. يتضمن ذلك إيقاف الرسوم المتحركة والإبلاغ عن النصر أو الهزيمة والإجراءات الأخرى التي يجب تنفيذها في نهاية اللعبة.

2. تهيئة اللعبة

تتكون عملية تهيئة اللعبة من خطوتين فقط:

الخطوة 1: إنشاء فئة اللعبة الرئيسية.

لتطوير لعبتك استنادًا إلى محرك اللعبة JavaRush، تحتاج إلى إنشاء فئة ووراثتها من فئة اللعبة (com.javarush.engine.cell.Game). سيعطي هذا لفصلك القدرة على استدعاء الأساليب الموجودة على محرك اللعبة، وقدرة المحرك على استدعاء الأساليب الخاصة بك. مثال:
import com.javarush.engine.cell.Game;

public class MySuperGame extends Game {
    ...
}

الخطوة 2: تجاوز طريقة التهيئة ().

في هذه الطريقة، سيتم تنفيذ جميع الإجراءات اللازمة لبدء اللعبة: إنشاء ساحة اللعب، وإنشاء كائنات اللعبة، وما إلى ذلك. تحتاج فقط إلى إعلان هذه الطريقة في فئة ترث من فئة اللعبة . مثال:
import com.javarush.engine.cell.Game;

public class MySuperGame extends Game {

    @Override
    public void initialize() {
        //  Тут выполняем все действия по инициализации игры и ее an objectов
    }
}
طريقة التهيئة () هي نظير للطريقة الرئيسية () : حيث يبدأ تنفيذ جميع التعليمات البرمجية المكتوبة للعبة.

3. خلق ساحة اللعب

يتكون إنشاء ساحة اللعب أيضًا من خطوتين فقط.

الخطوة 1: تقسيم الملعب إلى خلايا.

يتم تقسيم الملعب بأكمله إلى خلايا بواسطة محرك اللعبة. الحد الأدنى للحجم هو 3x3، والحد الأقصى هو 100x100. شاشة اللعبة ذات حجم ثابت. ويمكن تقسيمها إلى أعداد مختلفة من الخلايا. على سبيل المثال، العرض 7 والارتفاع 9:
الفصل
يرجى ملاحظة أن ترقيم الخلايا يبدأ من الزاوية اليسرى العليا. لتعيين حجم الملعب، استخدم طريقة void setScreenSize(int width, int height) . فهو يحدد حجم الملعب. يأخذ كمعلمات عدد الخلايا أفقيًا (العرض) وعموديًا (الارتفاع). يتم استدعاؤه عادةً مرة واحدة عند بدء اللعبة. مثال:
import com.javarush.engine.cell.Game;

public class MySuperGame extends Game {

    @Override
    public void initialize() {
       //  задали размер поля 7x9 клеток
       setScreenSize(7, 9);
        ...
    }
}
عند كتابة لعبة، قد تحتاج إلى الحصول على العرض والارتفاع الحاليين لملعب اللعب. تعتبر أساليب int getScreenWidth() و int getScreenHeight() مفيدة لهذا الغرض .

الخطوة 2: تشغيل الشبكة أو إيقاف تشغيلها (اختياري).

إذا كنت لا تحب الشبكة السوداء التي تفصل بين الخلايا في الملعب، فيمكنك إيقاف تشغيلها. تعمل طريقة showGrid (boolean isShow) الفارغة على تشغيل وإيقاف تشغيل الشبكة التي تفصل بين الخلايا. بشكل افتراضي، يتم عرض الشبكة. لإيقاف تشغيله، استدعاء هذا الأسلوب مع المعلمة false:
showGrid(false);
نتيجة:
الفصل
لإعادة تشغيل الشبكة، اتصل على:
showGrid(true);

4. البرنامج البدائي

برنامج المثال:
public class MySuperGame extends Game {

    @Override
    public void initialize() {

        //  Создаем игровое поле 3x3 клетки
        setScreenSize(3, 3);
        //  Выключаем отображение сетки
        showGrid(false);
        //  Меняем фон центральной клетки на синий, и отображаем в ней “Х”
        setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
    }
}
في هذا المثال، تم ضبط حجم الملعب على 3x3، وتم إيقاف تشغيل عرض الشبكة، وتم تعيين رمز "X" برتقالي بحجم نصف خلية في المنتصف على خلفية زرقاء. سيكون هذا أول ما يراه اللاعب عند بدء اللعبة.

5. العمل مع خلايا الملعب

إن حقيقة قدرتنا على تقسيم الملعب إلى خلايا أمر عظيم، ولكن ماذا يمكننا أن نفعل بالخلايا نفسها؟ يمكن ضبط كل خلية في الملعب:
  • لون الخلية (لون خلفية الخلية)؛
  • نص (نص أو رقم)؛
  • لون الخط؛
  • حجم النص كنسبة مئوية بالنسبة لحجم الخلية.
دعونا نفكر في طرق العمل مع خلايا الملعب :
  1. void setCellColor(int x, int y, Color color) - يضبط لون الخلية بالإحداثيات (x, y):

    setCellColor(0, 0, Color.RED);
    setCellColor(3, 6, Color.BLACK);
    setCellColor(6, 8, Color.NONE);

  2. اللون getCellColor(int x, int y) - يُرجع لون الخلية ذات الإحداثيات (x, y):

    Color myColor = getCellColor(2, 0);

  3. void setCellValue(int x, int y, String value) - يضع قيمة النص في الخلية ذات الإحداثيات (x, y):

    setCellValue(3, 3, "text");
    setCellValue(0, 8, "W");
    setCellValue(4, 1, "2222");
    setCellValue(6, 6, "");

  4. String getCellValue(int x, int y) - تقوم بإرجاع النص الموجود في الخلية بالإحداثيات (x, y):

    String s = getCellValue(3, 3);
    System.out.println(getCellValue(4, 1));

  5. void setCellTextSize(int x, int y, int size) - يضبط حجم المحتوى في الخلية بالإحداثيات (x, y). الحجم - ارتفاع النص كنسبة مئوية من ارتفاع الخلية:

    setCellTextSize(2 , 0, 70); //  70% высоты клетки

  6. int getCellTextSize(int x, int y) - يُرجع حجم المحتوى في الخلية بالإحداثيات (x, y):

    int size = getCellTextSize(2 , 0);

  7. void setCellNumber(int x, int y, int value) - يضع قيمة الرقم في الخلية ذات الإحداثيات (x, y):

    setCellNumber(3, 3, 40);
    setCellNumber(0, 8, -8);
    setCellNumber(4, 1, 2222);
    setCellNumber(6, 6, 0);

  8. int getCellNumber(int x, int y) - يُرجع الرقم الموجود في الخلية بالإحداثيات (x, y). إذا كانت الخلية لا تحتوي على رقم، فسيتم إرجاع 0:

    int i = getCellNumber(3, 3);
    System.out.println(getCellNumber(4, 1));

  9. void setCellTextColor(int x, int y, Color color) - يضبط لون المحتوى (النص) في الخلية بالإحداثيات (x, y):

    setCellTextColor(2, 1, Color.GREEN);
    setCellTextColor(0, 1, Color.NONE);

  10. اللون getCellTextColor(int x, int y) - يُرجع لون المحتوى (النص) في خلية ذات إحداثيات (x, y):

    Color textColor = getCellTextColor(1, 3);
للراحة، هناك عدة طرق setCellValueEx() مع مجموعات مختلفة من المعلمات:
  1. void setCellValueEx(int ​​​​x, int y, Color cellColor, String value) - يضبط الخلية بإحداثيات (x, y) ولون الخلفية وقيمة المحتوى:

    setCellValueEx(0, 2, Color.BLUE, "56");

  2. void setCellValueEx(int ​​​​x, int y, Color cellColor, String value, Color textColor) - قم بتعيين الخلية بإحداثيات (x, y) ولون الخلفية cellColor وقيمة المحتوى ولون المحتوى textColor:

    setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);

  3. void setCellValueEx(int ​​​​x, int y, Color cellColor, String value, Color textColor, int textSize); - يضبط الخلية بإحداثيات (x، y) لون خلفية الخلية، وقيمة المحتوى، ولون نص المحتوى، وحجم النص حجم النص:

    setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);

6. العمل بالألوان

يتم التحكم في الألوان في محرك اللعبة بواسطة Color enum ، الذي يحتوي على قيم فريدة لـ 148 لونًا. وكذلك القيمة الخاصة لا شيء - غياب اللون. مثال على العمل بالألوان:
Color myColor = Color.WHITE;  //  переменной myColor присваивается белый цвет.
Color redColor = Color.RED; //  переменной redColor присваивается красный цвет.
Color blueColor = Color.BLUE; //  переменной blueColor присваивается синий цвет.
في بعض الأحيان قد ترغب في الحصول على مجموعة من جميع الألوان الموجودة. للقيام بذلك، استخدم طريقة القيم () . على سبيل المثال:
//  переменной colors присваивается массив, содержащий все доступные цвета.
Color[] colors = Color.values();
الحصول على رقم اللون في اللوحة أمر بسيط للغاية:
Color color = Color.RED;
int redIndex = color.ordinal(); //  Номер красного цвета

int blueIndex = Color.BLUE.ordinal(); //  Номер синего цвета
يمكنك أيضًا الحصول على اللون برقمه:
//  переменной color присваивается цвет с индексом 10 из enum Color.
Color color = Color.values()[10];

7. مربعات الحوار

وفي نهاية اللعبة يجب إعلام اللاعب بالنصر أو الهزيمة. هناك طريقة خاصة لذلك تعرض مربع حوار على شاشة اللعبة:
void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)
هنا:
  • cellColor - لون خلفية مربع الحوار؛
  • رسالة - نص الرسالة؛
  • textColor - لون نص الرسالة؛
  • textSize - حجم نص الرسالة.
يتم إغلاق مربع الحوار من تلقاء نفسه إذا قام المستخدم بالضغط على شريط المسافة.

8. طرق المنفعة

غالبًا ما تستخدم الأرقام العشوائية عند كتابة الألعاب. لتسهيل الحصول على أرقام عشوائية، يمكنك استخدام أساليب محرك الخردة:
  1. int getRandomNumber(int max) - يُرجع عددًا صحيحًا عشوائيًا من 0 إلى (max–1) ضمنًا.

  2. int getRandomNumber(int min, int max) - يُرجع عددًا صحيحًا عشوائيًا من min إلى (max–1) شاملاً.

9. قيود محرك اللعبة

لتشغيل الألعاب على الموقع، يتم ترجمتها إلى JavaScript على الخادم. وفي هذا الصدد، تنشأ بعض القيود. على وجه الخصوص، عند كتابة الألعاب باستخدام محرك JavaRush، لا يمكنك العمل مع الملفات، ولا استخدام جميع أساليب فئة النظام ، باستثناء currentTimeMillis() و setOut() و setErr() و arrayscopy() . يمكنك أيضًا استخدام حقلي الخطأ والخروج . من خلال انتهاك هذه القيود، يمكن بالطبع تجميع اللعبة وتشغيلها، لكن لن يكون من الممكن نشرها. لن تتمكن أيضًا من نشر لعبة ذات حلقات لا نهائية. هذا كل شئ! إذا كنت تريد معرفة المزيد حول قسم الألعاب، فإليك بعض الوثائق المفيدة التي يمكن أن تساعدك:
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION