1.
A 이벤트가 동작중일 때, A보다 우선순위가 높은 B 이벤트가 발생한다면,
A는 중지되고 B이벤트가 동작한다.
2.
A 이벤트가 동작중일 때, A보다 우선순위가 낮은 B 이벤트가 발생한다면, B는 동작하지 않는다.
3.
2개의 이벤트가 한 턴에 동시에 발생한다면, 우선순위가 높은 이벤트가 실행된다.
설명이 어려울 수 있지만, 직접 해본다면 쉽게 알 수 있을 것입니다.
1-5.좌표
로보코드에서 위치는 (x, y)로 표시됩니다. 전장의 가장 왼쪽 위가 (0, 0)이며, 오른쪽으로 갈수록 x값이 증가하며, 아래로 갈수록 y값이 증가합니다.
1-6.각도
로보코드에서 각도는 (0 <= 각도 < 360) 로 표시됩니다.
북쪽이 0도이며, 시계방향으로 증가합니다. 즉, 동쪽은 90도, 남쪽은 180도, 서쪽은 270도입니다.
1-7.이동
로봇은 이동함수(this.moveForwards, this.moveBackwards)에 의해 움직입니다.
속도가 증가할때는 최대 1씩 증가하며, 감소할때는 최대 2씩 감소합니다. 최대 속도는 8입니다.
만약 정지상태에서 this.moveForwards(100)의 함수로 100만큼 움직이게 했다면,
속도는 0부터 8까지 1씩 증가하여 8인상태 (1턴당 8만큼 움직임)로 움직이다가
정지할때쯤 2씩 감소하여 0의 속도가 되어 정지하게됩니다.
1-8.충돌
로봇은 벽이나 다른 로봇과 충돌할 때 피해를 입습니다.
벽에 부딪힌다면 체력이 0.2 감소하고, 다른 로봇과 부딪힌다면 체력이 0.6 감소합니다.
2. 이벤트 목록
2-1.대기중일때
위의 함수는 이벤트가 아닌 로봇의 기본 동작함수로서, 로봇이 다른 이벤트가 없을 때 기본적으로 계속 반복되는 함수입니다.
이곳에 코드를 작성하면 로봇이 대기중인 상태에서의 동작을 구현할 수 있습니다.
2-2.벽에 충돌했을때
위의 이벤트는 로봇이 벽에 충돌하는 상황에서 발생하는 이벤트입니다.
이곳에 코드를 작성하면 로봇이 벽에 충돌했을 때의 동작을 구현할 수 있습니다.
2-3.로봇과 충돌했을때
위의 이벤트는 로봇이 다른 로봇과 충돌하는 상황에서 발생하는 이벤트입니다.
이곳에 코드를 작성하면 로봇이 다른 로봇과 충돌했을 때의 동작을 구현할 수 있습니다.
2-4.미사일에 맞았을 때
위의 이벤트는 로봇이 미사일에 맞았을 때 발생하는 이벤트입니다.
이곳에 코드를 작성하면 로봇이 다른 로봇과 충돌했을 때의 동작을 구현할 수 있습니다.
2-5.적을 발견했을때
위의 이벤트는 로봇이 미사일에 맞았을 때 발생하는 이벤트입니다.
이곳에 코드를 작성하면 다른 로봇을 발견했을 때의 동작을 구현할 수 있습니다.
이 이벤트에서 사용 할 수 있는 함수가 추가적으로 있습니다.
자세히 알아보려면 하단 5번 항목을 참조하시기 바랍니다.
3. 로봇 제어 함수
this.moveForwards(입력값);
입력값(거리)만큼 로봇을 전진시키는 함수입니다.
this.moveBackwards(입력값);
입력값(거리)만큼 로봇을 후진시키는 함수입니다.
this.turnRight(입력값);
입력값(각도)만큼 로봇을 오른쪽으로 회전시키는 함수입니다. 만약 입력값이 0보다 작으면 왼쪽으로 회전합니다.
1턴에 회전할 수 있는 각도는 최대 10도입니다. (10 - 속도 * 0.75)
this.turnLeft(입력값);
입력값(각도)만큼 로봇을 왼쪽으로 회전시키는 함수입니다.
만약 입력값이 0보다 작으면 오른쪽으로 회전합니다.
1턴에 회전할 수 있는 각도는 최대 10도입니다. (10 - 속도 * 0.75)
this.turnTurretRight(입력값);
입력값(각도)만큼 대포를 오른쪽으로 회전시키는 함수입니다.
만약 입력값이 0보다 작으면 왼쪽으로 회전합니다.
1턴에 회전할 수 있는 각도는 최대 20도입니다.
this.turnTurretLeft(입력값);
입력값(각도)만큼 대포를 왼쪽으로 회전시키는 함수입니다.
만약 입력값이 0보다 작으면 오른쪽으로 회전합니다.
한번에 회전할 수 있는 각도는 최대 20도입니다.
this.turnRadarRight(입력값);
입력값(각도)만큼 레이더를 오른쪽으로 회전시키는 함수입니다.
만약 입력값이 0보다 작으면 왼쪽으로 회전합니다.
1턴에 회전할 수 있는 각도는 최대 45도입니다.
this.turnRadarLeft(입력값);
입력값(각도)만큼 레이더를 왼쪽으로 회전시키는 함수입니다.
만약 입력값이 0보다 작으면 오른쪽으로 회전합니다.