1. マウスの操作
ゲーム エンジンには、マウスを操作するための 2 つの方法があります。-
void onMouseLeftClick(int x, int y);
-
void onMouseRightClick(int x, int y);
Game
、必要なコードをメソッドに追加するだけです。ユーザーがマウス ボタンをクリックすると、ゲーム エンジンがこれらを呼び出します。
-
onMouseLeftClick(int x, int y)
— マウスの左ボタンがクリックされたときにエンジンによって呼び出されます。そのパラメータは、クリックが発生した競技フィールドのセルの座標です。左上のセルの座標は (0, 0) です。このメソッドを使用するには、オーバーライドする必要があります。 -
onMouseRightClick(int x, int y)
— マウスの右ボタンがクリックされたときに呼び出されます。このメソッドはonMouseLeftClick(int x, int y)
メソッドと同様に機能します。
import com.codegym.engine.cell.Color;
import com.codegym.engine.cell.Game;
import com.codegym.engine.cell.Key;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Set the size of the playing field to 3x3
setScreenSize(3, 3);
// Paint the playing field white
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 3; y++) {
setCellColor(x, y, Color.WHITE);
}
}
}
@Override
public void onMouseLeftClick(int x, int y) {
// Set "X" in the cell where the left mouse click occurred
setCellValue(x, y, "X");
}
@Override
public void onMouseRightClick(int x, int y) {
// Clear the cell where the right mouse click occurred
setCellValue(x, y, "");
}
}
2. キーボードの操作
ゲーム エンジンには、キーボードを操作するための 2 つの方法があります。-
void onKeyPress(Key key);
-
void onKeyReleased(Key key);
-
onKeyPress(Key key)
— 任意のキーが押されたときに呼び出されます。key パラメータは押されたキー (または Key.UNKNOWN) です。 -
onKeyReleased(Key key)
— キーが放されたときに呼び出されます。key パラメータは、対応するキー (または Key.UNKNOWN) です。
import com.codegym.engine.cell.Color;
import com.codegym.engine.cell.Game;
import com.codegym.engine.cell.Key;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Set the size of the playing field to 3x3
setScreenSize(3, 3);
// Paint the playing field white
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 3; y++) {
setCellColor(x, y, Color.WHITE);
}
}
}
@Override
public void onKeyPress(Key key) {
// When the space bar is pressed, the center cell turns yellow
if (key == Key.SPACE) {
setCellColor(1, 1, Color.YELLOW);
}
}
@Override
public void onKeyReleased(Key key) {
// When the space bar is released, the center cell changes back to white
if (key == Key.SPACE) {
setCellColor(1, 1, Color.WHITE);
}
}
}
重要! ゲーム エンジンの現在のバージョンでは、キー タイプには次の 9 つの値の限られたセットがあります。価値 | ユーザーが押したキー |
---|---|
Key.ENTER | ユーザーが Enter を押しました |
Key.ESCAPE | ユーザーが Esc を押した |
キー.一時停止 | ユーザーが一時停止を押しました |
キー.スペース | ユーザーがスペースを押した |
Key.LEFT | ユーザーが左矢印キーを押した |
Key.RIGHT | ユーザーが右矢印キーを押した |
キー.UP | ユーザーが上矢印キーを押した |
キーダウン | ユーザーが下キーを押しました |
キー.不明 | ユーザーが上記以外のキーを押した |
3. タイマーの操作
多くのゲームはリアルタイムで発生します。つまり、ユーザーが何もしなくても、ゲーム内でイベントが発生します。このようなゲームを実装できるようにするために、ゲーム エンジンにタイマーを追加しました。これは次のように機能します。タイマーをオンにしてタイマー間隔を設定します。たとえば、500 ミリ秒です。その後、ゲーム エンジンは 0.5 秒ごとにonTurnTimer()
メソッドを呼び出します。タイマーがオフになるまで、何度も何度も永遠に。では、タイマーはどうやって使うのでしょうか?
-
タイマーをオンにします。
これを行うには、特別な方法があります。このメソッドは引数として呼び出し間の間隔をミリ秒単位で受け取ります (1 ミリ秒 = 1/1000 秒)。これを呼び出す必要があるのは 1 回だけで、ゲーム エンジンはtimeMs ミリ秒ごとにメソッドの呼び出しを開始します。
void setTurnTimer(int timeMs)
onTurn()
-
onTurn(int) メソッドをオーバーライドします。
これを行うには、を継承するクラスでメソッドを宣言する必要があります。このメソッドはゲーム エンジンによって呼び出されます。さらに、呼び出しごとに、ゲーム エンジンは呼び出しの連続した識別子 (1、2、3、…) をメソッドに渡します。
void onTurn(int step)
Game
-
タイマーをオフにします。
ユーザーがゲームを完了したときなど、タイマーが不要になった場合は、タイマーをオフにすることができます。これを行うには、メソッドを呼び出すだけです。
stopTurnTimer()
-
タイマーを加速するか変更します。
一部のゲームでは、イベントの発生速度が常に加速しているため、タイマーを速くする (呼び出し間の時間を短縮する) と便利です。
setTurnTimer(int timeMs)
これほど簡単なことはありません。新しい値を指定してもう一度呼び出すと、onTurn()
呼び出し間の時間が変わります。
import com.codegym.engine.cell.Color;
import com.codegym.engine.cell.Game;
public class MySuperGame extends Game {
…
@Override
public void initialize() {
// Create a playing field that is 3 cells x 3 cells
setScreenSize(3, 3);
showGrid(false);
setCellValueEx(1, 1, Color.BLUE, "X", Color.ORANGE, 50);
setTurnTimer(500); // Turn on the timer, the interval between calls is 500ms.
}
@Override
public void onTurn(int step) {
if(step == 100) {
stopTurnTimer(); // If 100 calls have been made, turn off the timer
}
if (step % 2 == 1) {
// If this call is odd, set the cell background to red
setCellColor(1, 1, Color.RED);
}
else {
// If this call is even, set the cell background to blue
setCellColor(1, 1, Color.BLUE);
}
}
…
}
この簡単な例では、3 セル x 3 セルのフィールドを作成しました。onTurn()
次に、 0.5 秒ごとにメソッドを呼び出すタイマーを開始しました。0.5 秒ごとにセルの色が変わりますが、その内容は変わりません。50秒経過すると色は変化しなくなります。それは今のところすべてです!「ゲーム」セクションについて詳しく知りたい場合は、次の役立つドキュメントを参照してください。
GO TO FULL VERSION