1. 소개
개발자 측에서 컴퓨터 게임을 구현하는 데에는 세 단계가 있습니다.- 게임 초기화는 준비 작업입니다. 경기장 크기 및 그리기 설정, 초기 위치에 게임 개체 생성 및 설치, 게임 시작 시 수행해야 하는 기타 작업 등이 있습니다.
- 게임 프로세스. 여기에는 게임 개체의 이동, 플레이어 작업, 획득한 포인트 계산, 특정 간격으로 수행하거나 버튼을 눌러 수행해야 하는 기타 작업이 포함됩니다.
- 게임을 종료합니다. 여기에는 애니메이션 중지, 승리 또는 패배 보고, 게임 종료 시 수행해야 하는 기타 작업이 포함됩니다.
2. 게임 초기화
게임 초기화는 다음 두 단계로 구성됩니다.1단계: 메인 게임 클래스를 생성합니다.
JavaRush 게임 엔진을 기반으로 게임을 개발하려면 클래스를 생성하고 Game 클래스(com.javarush.engine.cell.Game) 에서 상속해야 합니다 . 이렇게 하면 클래스에 게임 엔진의 메서드를 호출할 수 있는 기능과 엔진이 사용자의 메서드를 호출할 수 있는 기능이 제공됩니다. 예:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
...
}
2단계: 초기화() 메서드를 재정의합니다.
이 방법에서는 게임을 시작하는 데 필요한 모든 작업(플레이 필드 생성, 게임 개체 생성 등)이 수행됩니다. Game 클래스 에서 상속받은 클래스에서 이 메서드를 선언하기만 하면 됩니다 . 예:import com.javarush.engine.cell.Game;
public class MySuperGame extends Game {
@Override
public void initialize() {
// Тут выполняем все действия по инициализации игры и ее an objectов
}
}
초기화() 메서드는 main() 메서드 와 유사합니다 . 게임용으로 작성된 모든 코드가 실행되기 시작하는 곳입니다.
3. 경기장 만들기
경기장을 만드는 것도 단 두 단계로만 구성됩니다.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, String value, Color textColor, int textSize); — 좌표(x, y) 배경색 cellColor, 콘텐츠 값, 콘텐츠 색상 textColor 및 콘텐츠 크기 textSize로 셀을 설정합니다.
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
6. 색상 작업
게임 엔진의 색상은 148가지 색상에 대한 고유 값을 포함하는 Color 열거형 에 의해 제어됩니다 . 또한 특별한 값 NONE - 색상이 없습니다. 색상 작업의 예:Color myColor = Color.WHITE; // переменной myColor присваивается белый цвет.
Color redColor = Color.RED; // переменной redColor присваивается красный цвет.
Color blueColor = Color.BLUE; // переменной blueColor присваивается синий цвет.
때로는 기존의 모든 색상 배열을 얻고 싶을 수도 있습니다. 이를 수행하려면 value() 메소드를 사용하십시오 . 예를 들어:
// переменной 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부터 (max–1)까지의 임의의 정수를 반환합니다.
- int getRandomNumber(int min, int max) - min부터 (max–1)까지의 임의의 정수를 반환합니다.
GO TO FULL VERSION