
1. はじめに
開発者にとって、コンピューター ゲームの実装には 3 つの段階があります。-
ゲームの初期化— このステージは準備アクションで構成されます。つまり、競技フィールドのサイズの設定、競技フィールドの描画、ゲーム オブジェクトの作成と初期位置への配置、およびゲームの開始時に実行する必要があるその他のアクションです。
-
ゲームのプロセス。このステージには、ゲーム オブジェクトの移動、プレーヤーのアクション、スコアの維持、および特定の頻度またはボタンが押されたときに実行する必要があるその他のアクションが含まれます。
-
ゲームクリア。この段階には、アニメーションの停止、勝敗の報告、およびゲーム終了時に実行する必要があるその他のアクションが含まれます。
2. ゲームの初期化
ゲームの初期化は 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. 競争の場を作る
競技場の作成もわずか 2 つのステップで構成されます。 ステップ 1: 競技場をセルに分割します。 プレイフィールド全体は、ゲーム エンジンによってセルに分割されます。最小サイズは 3x3 です。最大値は 100x100 です。ゲーム画面の寸法は一定です。さまざまな数のセルに分割できます。たとえば、幅 7 セル、高さ 9 セルの場合、
void setScreenSize(int width, int height)
メソッドを使用します。競技場のサイズを設定します。そのパラメータは、水平方向 (幅) と垂直方向 (高さ) のセルの数を表します。通常、ゲームの開始時に 1 回呼び出されます。例えば:
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()
およびint getScreenHeight()
メソッドが役に立ちます。 ステップ 2: グリッドをオンまたはオフにします (オプション)。 競技フィールド上のセルを区切る黒いグリッドが気に入らない場合は、オフにすることができます。このvoid showGrid(boolean isShow)
メソッドはグリッドのオンとオフを切り替えます。デフォルトでは、グリッドが表示されます。これをオフにするには、引数として false を指定してこのメソッドを呼び出します。
showGrid(false);
結果: 
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. 競技場のセルを操作する
競技場をセルに分割できるのは素晴らしいことですが、セル自体で何ができるのでしょうか? 競技フィールドの各セルに対して次のプロパティを設定できます。- セルの色 (セルの背景色);
- テキスト (テキストまたは数字);
- テキストの色;
- セル サイズのパーセンテージとしてのテキスト サイズ。
-
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)
— 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% of the cell height
-
int getCellTextSize(int x, int y)
— セルの内容のサイズを座標 (x, y) で返します。int size = getCellTextSize(2 , 0);
-
void setCellNumber(int x, int y, int value)
— 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);
setCellValueEx()
異なるパラメーターのセットを備えたメソッドがいくつかあります。
-
void setCellValueEx(int x, int y, Color cellColor, String value)
— 背景色 (cellColor) とセルの内容 (値) を座標 (x, y) で設定します。setCellValueEx(0, 2, Color.BLUE, "56");
-
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);
-
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize)
— セルの背景色 (cellColor)、内容 (value)、テキストの色 (textColor)、およびテキスト サイズ (textSize) を座標 (x, y) で設定します。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. ユーティリティメソッド
ゲームを書くときは乱数がよく使われます。乱数を簡単に取得するには、ゲーム エンジンが提供する次のユーティリティ メソッドを使用できます。-
int getRandomNumber(int max)
— 0 から (max-1) までのランダムな整数を返します。 -
int getRandomNumber(int min, int max)
— 最小値から (最大値-1) までのランダムな整数を返します。
GO TO FULL VERSION