onIdle
이라는 기본함수가 반복적으로 동작하면서,
특정 상황에 이벤트가 발생한다면 해당 이벤트를 우선으로 로보코드가 동작합니다. onEnemySpot
이라는 이벤트가 발생하여,
해당 이벤트의 함수들을 우선적으로 동작시킵니다.
만약 기본함수 내의 함수들과 이벤트 내의 함수가 동시에 실행할 수 있는 함수라면
(직진과 회전) 동시에 실행됩니다.onHit
(미사일에 맞았을 때) - 40onWallCollide
(벽에 충돌했을 때) - 30onRobotCollide
(다른 로봇과 충돌했을 때) - 20onEnemySpot
(다른 로봇을 발견했을 때) - 10
1. A 이벤트가 동작중일 때, A보다 우선순위가 높은 B 이벤트가 발생한다면, A는 중지되고 B이벤트가 동작한다. 2. A 이벤트가 동작중일 때, A보다 우선순위가 낮은 B 이벤트가 발생한다면, B는 동작하지 않는다. 3. 2개의 이벤트가 한 턴에 동시에 발생한다면, 우선순위가 높은 이벤트가 실행된다.
this.moveForwards
, this.moveBackwards
)에 의해 움직입니다.this.moveForwards(100)
의 함수로 100만큼 움직이게 했다면,
속도는 0부터 8까지 1씩 증가하여 8인상태 (1턴당 8만큼 움직임)로 움직이다가
정지할때쯤 2씩 감소하여 0의 속도가 되어 정지하게됩니다.this.moveForwards(입력값);
this.moveBackwards(입력값);
this.turnRight(입력값);
this.turnLeft(입력값);
this.turnTurretRight(입력값);
this.turnTurretLeft(입력값);
this.turnRadarRight(입력값);
this.turnRadarLeft(입력값);
this.shoot(입력값);
this.setMaxVelocity(입력값);
this.setMaxTurnRate(입력값);
this.setTurnRight(입력값);
this.setTurnRight(20);
을 호출하고 그 뒤에this.moveForwards(100);
을 호출한다면
로봇이 100을 이동함과 동시에 로봇을 20도만큼 오른쪽으로 회전시킵니다.this.setTurnLeft(입력값);
this.setTurnTurretRight(입력값);
this.setTurnTurretLeft(입력값);
this.setTurnRadarRight(입력값);
this.setTurnRadarLeft(입력값);
this.getBattleFieldWidth();
this.getBattleFieldHeight();
this.getHp();
this.getHeading();
this.getTurretHeading();
this.getRadarHeading();
this.getVelocity();
this.getX();
this.getY();
prototype.onEnemySpot = function(e) {};
와 같은 형태로 onEnemySpot 이벤트에
파라미터를 받아온다면 아래와 같은 함수를 쓸 수 있습니다.e.getDistance();
e.getHp();
e.getVelocity();
e.getHeading();
e.getBearing();
this.debug(내용);