CodeMos 알고리즘에서 main loop는 아래와 같이 "newInterval"에 할당되어야 합니다.
"newInterval"에 할당하지 않고 setInterval을 호출할 시 초기화 오류가 발생할 수 있습니다.
interval 간격은 수정할 수 있습니다.
// TODO:
newInterval = setInterval(() => {
// TODO:
}, 1); // 1ms loop
// TODO:
// 잘못된 예시
setInterval(() => {
// 어쩌구 저쩌구
}, 1);
전역 스코프에서 함수와 변수를 정의할 수 있습니다.
아래는 착륙 알고리즘 예제 입니다.(고득점 불가)
var targetHeight = 0; // 착륙 고도
function engineCtrl() { // 고도에 따라 엔진 control
if (getVelocityY() * 5 >
(getHeight() - targetHeight))
engineOn();
else
engineOff();
}
newInterval = setInterval(() => { // main loop
if (getAngle() > 0) { // 우주선 각도 조정
stopRightRotation();
rotateLeft();
} else {
stopLeftRotation();
rotateRight();
}
engineCtrl();
}, 1);
// 비밀~
by 조영효
이 함수는 우주선의 현재 수평 속도를 실수형으로 반환합니다.
- 음수 : 우주선이 좌로 이동 중
- 양수 : 우주선이 우로 이동 중
getVelocityX()
이 함수는 우주선의 현재 수직 속도를 실수형으로 반환합니다.
- 음수 : 우주선이 위로 이동 중
- 양수 : 우주선이 아래로 이동 중
getVelocityY()
이 함수는 우주선의 현재 각도를 실수형으로 반환합니다.(-180.0 ~ +180.0)
getAngle()
이 함수는 우주선의 현재 고도(ft, 피트)를 정수형으로 반환합니다.
착륙지점의 고도는 0ft 입니다.
getHeight()
이 함수는 우주선의 현재 각속도를 실수형으로 반환합니다.
- 음수 : 우주선이 반시계 방향으로 회전 중
- 양수 : 우주선이 시계 방향으로 회전 중
getRotationVelocity()
이 함수를 호출하면 우주선의 주 엔진을 작동시킵니다.
engineOn()
이 함수를 호출하면 우주선의 주 엔진을 정지합니다.
engineOff()
이 함수를 호출하면 우주선의 좌측 추진체을 작동합니다.
(우주선의 각속도가 증가합니다.)
rotateLeft()
이 함수를 호출하면 우주선의 좌측 추진체을 정지합니다.
stopLeftRotation()
이 함수를 호출하면 우주선의 우측 추진체을 작동합니다.
(우주선의 각속도가 감소합니다.)
rotateRight()
이 함수를 호출하면 우주선의 우측 추진체을 정지합니다.
stopRightRotation()
이 함수는 Get Method 들의 반환값을 console에 표시합니다.
logging()
/*
f12 -> [console output]
getVelocityX() : 11.39214005489352
getVelocityY() : 27.95145243876781
getAngle() : -60.2
getHeight() : 239
getRotationVelocity() : 0.37505750000014804
*/