CodeGym /مدونة جافا /Random-AR /قسم الألعاب في CodeGym: محرك الألعاب
John Squirrels
مستوى
San Francisco

قسم الألعاب في CodeGym: محرك الألعاب

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

1 المقدمة

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

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

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

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

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

public class MySuperGame extends Game {
    ...
}
الخطوة 2: تجاوز طريقة التهيئة (). ستتم جميع الإجراءات المطلوبة لبدء اللعبة بهذه الطريقة: إنشاء ساحة اللعب، وإنشاء كائنات اللعبة، وما إلى ذلك. ما عليك سوى الإعلان عن هذه الطريقة في الفصل الذي يرث الفصل Game. على سبيل المثال:
import com.codegym.engine.cell.Game;

public class MySuperGame extends Game {

    @Override
    public void initialize() {
        // Here we perform all actions to initialize the game and its objects
    }
}
الطريقة initialize()مشابهة للطريقة main(): فهي نقطة البداية لجميع التعليمات البرمجية المكتوبة للعبة.

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

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

public class MySuperGame extends Game {

    @Override
    public void initialize() {
       // Set the field size to 7 cells x 9 cells
       setScreenSize(7, 9);
        ...
    }
}
عند كتابة لعبة، قد تحتاج إلى الحصول على العرض والارتفاع الحاليين لملعب اللعب. وللقيام بذلك، ستكون الأساليب والطرق مفيدة int getScreenWidth(). الخطوة 2: تشغيل الشبكة أو إيقاف تشغيلها (اختياري). إذا كنت لا تحب الشبكة السوداء التي تفصل بين الخلايا في الملعب، فيمكنك إيقاف تشغيلها. تعمل الطريقة على تشغيل الشبكة وإيقاف تشغيلها. بشكل افتراضي، يتم عرض الشبكة. لإيقاف تشغيله، قم باستدعاء هذا التابع باستخدام الوسيطة false: int getScreenHeight()void showGrid(boolean isShow)
showGrid(false);
النتيجة: قسم "الألعاب" في CodeGym: محرك الألعاب - 3لإعادة تشغيل الشبكة، اتصل بـ:
showGrid(true);

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

وهنا مثال على البرنامج:
public class MySuperGame extends Game {

    @Override
    public void initialize() {

        // Create a playing field that is 3 cells x 3 cells
        setScreenSize(3, 3);
        // Turn off the grid
        showGrid(false);
        // Change the background of the center cell to blue, and display an "X" in it.
        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. Color 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% of the cell height

  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. Color getCellTextColor(int x, int y)- إرجاع لون محتويات (نص) الخلية بالإحداثيات (x، y):

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

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

  2. void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)- يضبط لون الخلفية (cellColor)، والمحتويات (value)، ولون النص (textColor) للخلية ذات الإحداثيات (x، y):

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

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

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

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

وهو Color enumالمسؤول عن الألوان في محرك اللعبة. لها قيم فريدة لـ 148 لونًا. كما أن لها قيمة خاصة (NONE) لا تمثل أي لون. فيما يلي مثال على العمل بالألوان:
Color myColor = Color.WHITE;  // The myColor variable is set to white.
Color redColor = Color.RED;  // The redColor variable is set to red.
Color blueColor = Color.BLUE;  // The blueColor variable is set to light blue.
في بعض الأحيان قد تحتاج إلى الحصول على مجموعة من جميع الألوان الموجودة. للقيام بذلك، استخدم values()الأسلوب. على سبيل المثال:
Color[] colors = Color.values();  // The colors variable is assigned an array containing all available colors.
من السهل جدًا الحصول على فهرس الألوان في اللوحة:
Color color = Color.RED;
int redIndex = color.ordinal();  // Index of red

int blueIndex = Color.BLUE.ordinal();  // Index of blue
يمكنك أيضًا الحصول على اللون من خلال فهرسه:
Color color = Color.values()[10];  // The color variable is assigned the color with index 10 in the Color enum.

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

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

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

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

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

هذا كل شئ حتى الان! إذا كنت تريد معرفة المزيد حول قسم "الألعاب"، فإليك بعض الوثائق المفيدة التي يمكن أن تساعدك:
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION