一、簡介
開發者實作電腦遊戲分為三個階段:- 遊戲的初始化是準備動作:設定比賽場地的大小和繪製,在初始位置創建和安裝遊戲對象,以及遊戲開始時必須執行的其他動作。
- 遊戲過程。這包括遊戲物件的移動、玩家動作、賺取的分數,以及必須以一定時間間隔或透過按下按鈕執行的其他動作。
- 結束遊戲。這包括停止動畫、報告勝利或失敗以及其他需要在遊戲結束時執行的操作。
2. 遊戲初始化
初始化遊戲僅包含兩個步驟:第1步:創建主遊戲類。
要基於JavaRush遊戲引擎開發遊戲,您需要建立一個類別並從Game類別(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);
-
Color 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) 設定單元格中內容的大小。size – 文字高度佔儲存格高度的百分比:
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);
-
Color getCellTextColor(int x, int y) - 傳迴座標為 (x, y) 的儲存格中內容(文字)的顏色:
Color textColor = getCellTextColor(1, 3);
-
void setCellValueEx(int x, int y, Color cellColor, String value) — 設定座標為 (x, y) 的儲存格背景顏色 cellColor 與內容值:
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) 背景顏色 cellColor、內容值、內容顏色 textColor 和內容大小 textSize:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
6. 使用顏色
遊戲引擎中的顏色由Color 列舉控制,其中包含 148 種顏色的唯一值。還有特殊的價值「無」——沒有顏色。使用顏色的範例: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 — 對話框的背景顏色;
- message-訊息文字;
- textColor — 訊息文字顏色;
- textSize — 訊息文字大小。
8.實用方法
編寫遊戲時經常使用隨機數。為了更容易獲得隨機數,您可以使用廢料引擎方法:- int getRandomNumber(int max) - 傳回 0 到 (max–1)(含)之間的隨機整數。
- int getRandomNumber(int min, int max) - 傳回從 min 到 (max–1)(含)的隨機整數。
GO TO FULL VERSION