- מבוא
- אתחול המשחק
- יצירת מגרש משחקים
- תוכנית פרימיטיבית
- עבודה עם התאים של מגרש המשחקים
- עבודה עם צבע
- תיבת דיאלוג
- שיטות שירות
- מגבלות מנוע המשחק
1. הקדמה
ישנם שלושה שלבים בהטמעת משחק מחשב מצד המפתח:- אתחול המשחק הוא פעולות הכנה: קביעת גודל ושרטוט מגרש המשחקים, יצירה והתקנת חפצי משחק בעמדה ההתחלתית וכן פעולות נוספות שיש לבצע בתחילת המשחק.
- תהליך משחק. זה כולל תנועה של חפצי משחק, פעולות שחקן, התחשבות בנקודות שנצברו, כמו גם פעולות אחרות שיש לבצע במרווחי זמן מסוימים או על ידי לחיצה על כפתורים.
- מסיים את המשחק. זה כולל עצירת אנימציות, הכרזת ניצחון או תבוסה ופעולות אחרות שצריך לבצע בסוף המשחק.
2. אתחול המשחק
אתחול המשחק מורכב משני שלבים בלבד:שלב 1: צור את מחלקת המשחק הראשית.
כדי לפתח את המשחק שלך על בסיס מנוע המשחק JavaRush, עליך ליצור מחלקה ולרשת אותה ממחלקת המשחק (com.javarush.engine.cell.Game). זה ייתן לכיתה שלך את היכולת לקרוא לשיטות במנוע המשחק, ואת היכולת למנוע לקרוא לשיטות שלך. דוגמא:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
...
}
שלב 2: עוקף את שיטת initialize() .
בשיטה זו יתקיימו כל הפעולות הנחוצות להפעלת המשחק: יצירת מגרש המשחקים, יצירת חפצי משחק וכו'. אתה רק צריך להכריז על שיטה זו במחלקה שיורשת מהמחלקה Game . דוגמא:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Тут выполняем все действия по инициализации игры и ее an objectов
}
}
שיטת initialize() היא אנלוגי לשיטת main() : זה המקום שבו מתחילים להפעיל את כל הקוד שנכתב למשחק.
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: הפעל או כבה את הרשת (אופציונלי).
אם אתה לא אוהב את הרשת השחורה שמפרידה בין התאים במגרש המשחקים, אתה יכול לכבות אותה. השיטה void 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, "");
-
מחרוזת 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, מחרוזת ערך) - מגדיר את התא עם קואורדינטות (x, y) צבע רקע תא צבע וערך תוכן:
setCellValueEx(0, 2, Color.BLUE, "56");
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor) - מגדיר את התא עם קואורדינטות (x, y) צבע רקע תא צבע, ערך תוכן וטקסט צבע תוכן:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
-
void setCellValueEx(int x, int y, Color cellColor, ערך מחרוזת, Color textColor, int textSize); - מגדיר את התא עם קואורדינטות (x, y) צבע רקע תא צבע, ערך תוכן, צבע תוכן טקסט צבע וגודל תוכן טקסט גודל:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
6. עבודה עם צבע
הצבעים במנוע המשחק נשלטים על ידי ה-Color enum , המכיל ערכים ייחודיים ל-148 צבעים. וגם הערך המיוחד NONE - היעדר צבע. דוגמה לעבודה עם צבע:Color myColor = Color.WHITE; // переменной myColor присваивается белый цвет.
Color redColor = Color.RED; // переменной redColor присваивается красный цвет.
Color blueColor = Color.BLUE; // переменной blueColor присваивается синий цвет.
לפעמים ייתכן שתרצה לקבל מערך של כל הצבעים הקיימים. לשם כך, השתמש בשיטת values() . לדוגמה:
// переменной 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