1. 마우스로 작업하기
게임 엔진에는 마우스로 작업하는 두 가지 방법이 있습니다.-
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. 키보드로 작업하기
게임 엔진에는 키보드 작업을 위한 두 가지 방법이 있습니다.-
void onKeyPress(Key key);
-
void onKeyReleased(Key key);
-
onKeyPress(Key key)
— 아무 키나 누를 때 호출됩니다. 키 매개변수는 누른 키(또는 Key.UNKNOWN)입니다. -
onKeyReleased(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개의 값으로 제한된 세트가 있습니다.값 | 사용자가 누른 키 |
---|---|
키.엔터 | 사용자가 Enter 키를 눌렀습니다. |
키.이스케이프 | 사용자가 Esc를 눌렀습니다. |
키.PAUSE | 사용자가 일시중지를 눌렀습니다. |
키.스페이스 | 사용자가 스페이스바를 눌렀습니다. |
키.왼쪽 | 사용자가 왼쪽 화살표 키를 눌렀습니다. |
키.오른쪽 | 사용자가 오른쪽 화살표 키를 눌렀습니다. |
키업 | 사용자가 위쪽 화살표 키를 눌렀습니다. |
키다운 | 사용자가 아래쪽 키를 눌렀습니다. |
키.알 수 없음 | 사용자가 위의 키 이외의 키를 눌렀습니다. |
3. 타이머 작업
많은 게임은 실시간으로 발생합니다. 즉, 사용자가 아무것도 하지 않아도 게임에서 이벤트가 계속 발생합니다. 이러한 게임을 구현할 수 있도록 게임 엔진에 타이머를 추가했습니다. 다음과 같이 작동합니다. 타이머를 켜고 타이머 간격을 설정합니다. 예를 들어 500밀리초입니다. 그런 다음 0.5초마다 게임 엔진이onTurnTimer()
메서드를 호출합니다. 계속해서 영원히 — 타이머가 꺼질 때까지. 그럼 타이머는 어떻게 사용하나요?
-
타이머를 켜십시오.
이를 위해 특별한 방법이 있습니다 . 이 메서드는 밀리초(1밀리초 = 1/1000초) 단위의 호출 간격을 인수로 사용합니다. 한 번만 호출하면 게임 엔진이 매 밀리초마다 메서드 호출을 시작합니다.
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