1. はじめに
開発者側のコンピューター ゲームの実装には 3 つの段階があります。- ゲームの初期化は準備アクションです。つまり、競技フィールドのサイズと描画の設定、初期位置へのゲーム オブジェクトの作成とインストール、およびゲームの開始時に実行する必要があるその他のアクションです。
- ゲームのプロセス。これには、ゲーム オブジェクトの移動、プレイヤーのアクション、獲得したポイントの計算、および特定の間隔で実行するかボタンを押す必要があるその他のアクションが含まれます。
- ゲームを終了します。これには、アニメーションの停止、勝敗の報告、およびゲーム終了時に実行する必要があるその他のアクションが含まれます。
2. ゲームの初期化
ゲームの初期化は、次の 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. 競争の場を作る
競技場の作成もわずか 2 つのステップで構成されます。ステップ 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, 文字列値, Color textColor, int textSize); — セルを座標 (x, y) の背景色 cellColor、コンテンツ値、コンテンツ カラー textColor、コンテンツ サイズ textSize で設定します。
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
6. 色を扱う
ゲーム エンジンの色は、148 色の一意の値を含むColor enumによって制御されます。また、特別な値 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 から (最大 – 1) までのランダムな整数を返します。
- int getRandomNumber(int min, int max) - 最小値から (最大値 – 1) までのランダムな整数を返します。
GO TO FULL VERSION