- مقدمة
- تهيئة اللعبة
- إنشاء ملعب
- برنامج بدائي
- العمل مع خلايا الملعب
- العمل مع اللون
- مربعات الحوار
- طرق المنفعة
- قيود محرك اللعبة
1 المقدمة
هناك ثلاث مراحل في تنفيذ لعبة الكمبيوتر من جانب المطور:- تهيئة اللعبة هي إجراءات تحضيرية: تحديد حجم الملعب ورسمه، وإنشاء كائنات اللعبة وتثبيتها في الموضع الأولي، بالإضافة إلى الإجراءات الأخرى التي يجب تنفيذها في بداية اللعبة.
- عملية اللعبة. يتضمن ذلك حركة كائنات اللعبة، وإجراءات اللاعب، وحساب النقاط المكتسبة، بالإضافة إلى الإجراءات الأخرى التي يجب تنفيذها على فترات زمنية معينة أو عن طريق الضغط على الأزرار.
- إنهاء اللعبة. يتضمن ذلك إيقاف الرسوم المتحركة والإبلاغ عن النصر أو الهزيمة والإجراءات الأخرى التي يجب تنفيذها في نهاية اللعبة.
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: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. العمل مع خلايا الملعب
إن حقيقة قدرتنا على تقسيم الملعب إلى خلايا أمر عظيم، ولكن ماذا يمكننا أن نفعل بالخلايا نفسها؟ يمكن ضبط كل خلية في الملعب:- لون الخلية (لون خلفية الخلية)؛
- نص (نص أو رقم)؛
- لون الخط؛
- حجم النص كنسبة مئوية بالنسبة لحجم الخلية.
-
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);
-
اللون getCellColor(int x, int y) - يُرجع لون الخلية ذات الإحداثيات (x, y):
Color myColor = getCellColor(2, 0);
-
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, "");
-
String getCellValue(int x, int y) - تقوم بإرجاع النص الموجود في الخلية بالإحداثيات (x, y):
String s = getCellValue(3, 3); System.out.println(getCellValue(4, 1));
-
void setCellTextSize(int x, int y, int size) - يضبط حجم المحتوى في الخلية بالإحداثيات (x, y). الحجم - ارتفاع النص كنسبة مئوية من ارتفاع الخلية:
setCellTextSize(2 , 0, 70); // 70% высоты клетки
-
int getCellTextSize(int x, int y) - يُرجع حجم المحتوى في الخلية بالإحداثيات (x, y):
int size = getCellTextSize(2 , 0);
-
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);
-
int getCellNumber(int x, int y) - يُرجع الرقم الموجود في الخلية بالإحداثيات (x, y). إذا كانت الخلية لا تحتوي على رقم، فسيتم إرجاع 0:
int i = getCellNumber(3, 3); System.out.println(getCellNumber(4, 1));
-
void setCellTextColor(int x, int y, Color color) - يضبط لون المحتوى (النص) في الخلية بالإحداثيات (x, y):
setCellTextColor(2, 1, Color.GREEN); setCellTextColor(0, 1, Color.NONE);
-
اللون getCellTextColor(int x, int y) - يُرجع لون المحتوى (النص) في خلية ذات إحداثيات (x, y):
Color textColor = getCellTextColor(1, 3);
-
void setCellValueEx(int x, int y, Color cellColor, String value) - يضبط الخلية بإحداثيات (x, y) ولون الخلفية وقيمة المحتوى:
setCellValueEx(0, 2, Color.BLUE, "56");
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor) - قم بتعيين الخلية بإحداثيات (x, y) ولون الخلفية cellColor وقيمة المحتوى ولون المحتوى textColor:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
-
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. طرق المنفعة
غالبًا ما تستخدم الأرقام العشوائية عند كتابة الألعاب. لتسهيل الحصول على أرقام عشوائية، يمكنك استخدام أساليب محرك الخردة:- int getRandomNumber(int max) - يُرجع عددًا صحيحًا عشوائيًا من 0 إلى (max–1) ضمنًا.
- int getRandomNumber(int min, int max) - يُرجع عددًا صحيحًا عشوائيًا من min إلى (max–1) شاملاً.
GO TO FULL VERSION