튜토리얼 1. 함선 움직여 보기 (1) - GameEgg/STARPOO-II GitHub Wiki

# 목차

  1. update 함수란
  2. 1. 직선으로 움직여보기
  3. 2. 함선 회전시켜 보기

# update 함수란?

움직여보기에 앞서서 STARPOO가 Javascript를 불러와 실행시키는 방식을 간단하게 짚고 가려합니다. STARPOO는 Script 내부의 update 함수를 매프레임마다 호출하게 됩니다. 즉, 각 프레임마다 주어진 정보를 분석해 자신의 함선의 행동을 결정하는 함수가 바로 update 함수입니다. 따라서 STARPOO에서 돌리고자 하는 AI Script는 내부적으로 반드시 update 함수를 가지고 있어야합니다.

Javascript Structure

1. 직선으로 움직여보기

자, 이제 함선을 직선으로 움직여 볼 것 입니다. 위에서 설명한 update 함수에서 하나의 함선에 이동 명령을 내려보려 합니다. 그러기 위해, 함선의 이동속도를 설정하는 setSpeed(number) 함수를 사용해야 합니다. (참고, Script API)

STARPOO는 AI Script에 자신의 함선 리스트 myShips를 제공합니다. 이때, 첫번째 함선은 myShips[0] 입니다. 자, 그럼 첫번째 함선의 속도를 100로 설정하려 합니다.

function update() {
    myShips[0].setSpeed(100);	
}

STARPOO 실행 방법을 참고하여 Script 폴더 내부에 tutorial.js 파일을 만들 뒤, 위의 코드를 작성합니다. 그리고 STARPOO에서 실행하여 작성한 Script를 돌려봅시다.

함선이 현재 바라보는 방향으로 일정한 속도로 움직이는 것을 볼 수 있습니다!! 쉽네요


### # Q. 그렇다면 `setSpeed` 함수의 인자값으로 준 100 값은 무엇을 의미할까요?

A. 인자로 전달된 값은 바로 함선이 1초당 움직이는 거리를 의미합니다. 즉 위에서 작성한 코드에서는 함선은 초당 100만큼의 거리를 이동하게 되는 것이죠.

인자로 준 값이 함선의 최대속력을 초과하는 경우, 최대 속력을 입력한 것으로 간주합니다. 또한, 음수 역시 0으로 간주됩니다.

결과 화면

# 함선 개수 1개

Move Straight

# 함선 개수 16개

Move Straight

2. 함선 회전시켜 보기

다음으로 함선을 회전시켜 볼겁니다. 위에서 작성한 script와 마찬가지로 update 함수안에서 하나의 함선에게 회전 명령을 주려합니다.
함선의 회전을 설정하는 함수는 setRotSpeed 함수입니다. 인자 값으로 -shipMaxRotSpeed 부터 shipMaxRotSpeed 값을 줄 수 있으며 범위를 초과하는 값을 줄시 범위상의 경계에 있는값(shipMaxRotSpeed 또는 -shipMaxRotSpeed)이 적용됩니다. 양수 값을 주게되면 함선은 반시계방향으로 회전하며, 음수값을 주게되면 함선은 시계방향으로 회전하게 됩니다.

우리는 초당 180도를 회전하는 함선을 작성해 보려합니다. 즉, 함선은 1초당 setRotSpeed에 전달한 인자 값만큼 회전하게 됩니다.

function update(){
    myShips[0].setRotSpeed(180);	
}

함선이 느리지만 반시계 방향으로 도는 것을 확인할 수 있습니다.

# 다음

  1. 튜토리얼 1. 함선 움직여 보기 (1)
  2. 튜토리얼 1. 함선 움직여 보기 (2)
  3. 튜토리얼-1. 함선 움직여 보기 (3)
⚠️ **GitHub.com Fallback** ⚠️