JavaRush /Java Blog /Random-JA /JavaRush: ゲームエンジンの「ゲーム」セクション

JavaRush: ゲームエンジンの「ゲーム」セクション

Random-JA グループに公開済み
JavaRush の「ゲーム」は、人気のあるコンピュータ ゲームを作成するための大規模なタスク プロジェクトを含む新しいセクションです。作成は思ったよりも簡単です。各プロジェクトは 24 個のサブタスクに分割されています。タスクを段階的に完了することでゲームを作成し、それに独自の「機能」を追加して友人と共有することができます。章ゲームはシンプルな JavaRush ゲーム エンジンを使用します。この記事では、その主な機能と、ゲーム作成のプロセスがどのようなものであるかについて説明します。
  1. 導入
  2. ゲームの初期化
  3. 競技場の作成
  4. 原始的なプログラム
  5. 競技場のセルを操作する
  6. 色を扱う
  7. ダイアログボックス
  8. ユーティリティメソッド
  9. ゲームエンジンの制限事項

1. はじめに

開発者側のコンピューター ゲームの実装には 3 つの段階があります。
  1. ゲームの初期化は準備アクションです。つまり、競技フィールドのサイズと描画の設定、初期位置へのゲーム オブジェクトの作成とインストール、およびゲームの開始時に実行する必要があるその他のアクションです。

  2. ゲームのプロセス。これには、ゲーム オブジェクトの移動、プレイヤーのアクション、獲得したポイントの計算、および特定の間隔で実行するかボタンを押す必要があるその他のアクションが含まれます。

  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:
章
セルの番号は左上隅から始まることに注意してください。競技フィールドのサイズを設定するには、void setScreenSize(int width, int height)メソッドを使用します。競技場のサイズを設定します。パラメータとして水平方向 (幅) と垂直方向 (高さ) のセルの数を取ります。通常、ゲームの開始時に 1 回呼び出されます。例:
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. 競技場のセルを操作する

競技場をセルに分割できるのは素晴らしいことですが、セル自体には何ができるのでしょうか? 競技フィールドの各セルは次のように設定できます。
  • セルの色 (セルの背景色);
  • テキスト (テキストまたは数字);
  • テキストの色;
  • セル サイズに対するパーセントで表したテキスト サイズ。
競技場のセルを操作する方法を考えてみましょう。
  1. 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);

  2. Color getCellColor(int x, int y) - 座標 (x, y) のセルの色を返します。

    Color myColor = getCellColor(2, 0);

  3. 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, "");

  4. String getCellValue(int x, int y) - セルに含まれるテキストを座標 (x, y) で返します。

    String s = getCellValue(3, 3);
    System.out.println(getCellValue(4, 1));

  5. void setCellTextSize(int x, int y, int size) - セル内のコンテンツのサイズを座標 (x, y) で設定します。size – セルの高さに対するテキストの高さのパーセンテージ:

    setCellTextSize(2 , 0, 70); //  70% высоты клетки

  6. int getCellTextSize(int x, int y) - セル内のコンテンツのサイズを座標 (x, y) で返します。

    int size = getCellTextSize(2 , 0);

  7. 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);

  8. int getCellNumber(int x, int y) - 座標 (x, y) のセルに含まれる数値を返します。セルに数値が含まれていない場合は、0 を返します。

    int i = getCellNumber(3, 3);
    System.out.println(getCellNumber(4, 1));

  9. void setCellTextColor(int x, int y, Color color) — セル内のコンテンツ (テキスト) の色を座標 (x, y) で設定します。

    setCellTextColor(2, 1, Color.GREEN);
    setCellTextColor(0, 1, Color.NONE);

  10. Color getCellTextColor(int x, int y) - 座標 (x, y) のセル内のコンテンツ (テキスト) の色を返します。

    Color textColor = getCellTextColor(1, 3);
便宜上、異なるパラメーターのセットを持つ いくつかのsetCellValueEx()メソッドがあります。
  1. void setCellValueEx(int x, int y, Color cellColor, String value) — セルを座標 (x, y) の背景色 cellColor とコンテンツ値で設定します。

    setCellValueEx(0, 2, Color.BLUE, "56");

  2. void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor) — セルを座標 (x, y) の背景色 cellColor、コンテンツの値、およびコンテンツの色 textColor で設定します。

    setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);

  3. 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. ユーティリティメソッド

乱数はゲームを作成するときによく使用されます。乱数を取得しやすくするために、スクラップ エンジン メソッドを使用できます。
  1. int getRandomNumber(int max) - 0 から (最大 – 1) までのランダムな整数を返します。

  2. int getRandomNumber(int min, int max) - 最小値から (最大値 – 1) までのランダムな整数を返します。

9. ゲームエンジンの制限事項

サイト上でゲームを実行するには、サーバー上でゲームが JavaScript に変換されます。この点に関して、いくつかの制限が生じます。特に、JavaRush エンジンを使用してゲームを作成する場合、ファイルを操作したり、currentTimeMillis()setOut()setErr()arrayscopy()を除くSystemクラスのすべてのメソッドを使用したりすることはできません。err フィールドoutフィールドを使用することもできます。これらの制限に違反すると、もちろんゲームをコンパイルして実行することはできますが、公開することはできなくなります。また、無限ループのあるゲームを公開することもできません。それだけです!「ゲーム」セクションについてさらに詳しく知りたい場合は、次の役立つドキュメントを参照してください。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION