CodeGym /Java Blog /무작위의 /CodeGym의 게임 섹션: 게임 엔진
John Squirrels
레벨 41
San Francisco

CodeGym의 게임 섹션: 게임 엔진

무작위의 그룹에 게시되었습니다
CodeGym의 "게임"은 인기 있는 컴퓨터 게임 작성과 관련된 큰 작업이 있는 새로운 섹션입니다. 보이는 것보다 만들기가 더 쉽습니다. 각 프로젝트는 20개의 하위 작업으로 나뉩니다. 단계별로 작업을 완료하면서 나만의 게임을 작성한 다음 고유한 기능을 추가하고 친구들과 공유할 수 있습니다. CodeGym의 "게임" 섹션: 게임 엔진 - 1게임은 간단한 CodeGym 게임 엔진을 사용합니다 . 이 기사에서는 주요 기능 과 게임 작성 프로세스에 대해 설명합니다 .

1. 소개

개발자의 경우 컴퓨터 게임 구현에는 세 단계가 있습니다.
  1. 게임 초기화 — 이 단계는 경기장 크기 설정, 경기장 그리기, 게임 개체 생성 및 초기 위치에 배치 및 게임 시작 시 수행해야 하는 기타 작업과 같은 준비 작업으로 구성됩니다.

  2. 게임 프로세스. 이 단계에는 게임 개체 이동, 플레이어 동작, 점수 유지 및 특정 빈도로 또는 버튼을 누를 때 수행해야 하는 기타 동작이 포함됩니다.

  3. 게임 완료. 이 단계에는 애니메이션 중지, 승패 보고 및 게임 종료 시 수행해야 하는 기타 작업이 포함됩니다.

2. 게임 초기화

게임 초기화는 두 단계로만 구성됩니다. 1단계: 게임의 기본 클래스를 만듭니다. CodeGym 게임 엔진을 이용하여 나만의 게임을 개발하기 위해서는 클래스(com.codegym.engine.cell.Game)를 상속받은 클래스를 생성해야 합니다 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. 경기장 만들기

경기장을 만드는 것도 두 단계로 구성됩니다. 1단계: 경기장을 셀로 나눕니다. 전체 경기장은 게임 엔진에 의해 셀로 나뉩니다. 최소 크기는 3x3입니다. 최대값은 100x100입니다. 게임 화면의 크기는 일정합니다. 그것은 다른 수의 셀로 나눌 수 있습니다. 예를 들어 너비 7개 셀 높이 9개: CodeGym의 "게임" 섹션: 게임 엔진 - 2셀은 왼쪽 위 모서리부터 시작하여 번호가 매겨집니다. 경기장의 크기를 설정하려면 void setScreenSize(int width, int height)방법을 사용하십시오. 경기장의 크기를 설정합니다. 해당 매개변수는 가로(너비) 및 세로(높이) 셀 수를 나타냅니다. 일반적으로 게임이 시작될 때 한 번 호출됩니다. 예를 들어:

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);
결과: CodeGym의 "게임" 섹션: 게임 엔진 - 3그리드를 다시 켜려면 다음을 호출하십시오.

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. 경기장의 셀 작업

경기장을 세포로 나눌 수 있다는 사실은 대단하지만 세포 자체로 무엇을 할 수 있습니까? 경기장의 각 셀에 대해 다음 속성을 설정할 수 있습니다.
  • 셀 색상(셀 배경색);
  • 텍스트(텍스트 또는 숫자);
  • 텍스트 색상;
  • 셀 크기의 백분율로 표시되는 텍스트 크기.
경기장의 세포로 작업하는 방법을 살펴보겠습니다 .
  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)를 사용하여 셀 내용의 크기를 설정합니다. 크기 매개변수는 셀 높이의 백분율로 표시되는 텍스트 높이입니다.

    
    setCellTextSize(2 , 0, 70); // 70% of the cell height
    

  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), 내용(value) 및 텍스트 색상(textColor)을 설정합니다.

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

  3. void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize)— 좌표(x, y)가 있는 셀의 배경색(cellColor), 내용(value), 텍스트 색상(textColor) 및 텍스트 크기(textSize)를 설정합니다.

    
    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. 활용 방법

게임을 작성할 때 난수를 많이 사용합니다. 난수를 더 쉽게 얻기 위해 게임 엔진에서 제공하는 다음과 같은 유틸리티 메서드를 사용할 수 있습니다.
  1. int getRandomNumber(int max)— 0에서 (max-1)까지의 임의의 정수를 반환합니다.

  2. int getRandomNumber(int min, int max)— min에서 (max-1)까지의 임의의 정수를 반환합니다.

지금은 여기까지입니다! "게임" 섹션에 대해 자세히 알아보려면 다음과 같은 유용한 문서를 참조하세요.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION