package test;
import robocode.*;
public class Teleport extends Robot {
public void run() {
turnLeft(getHeading() + 90);
ahead(getX() - 18);
turnRight(90);
ahead(100);
}
}
http://robowiki.net/perl/robowiki?Teleport
로보코드에 버그가 있다.
이 코드는 왼쪽 벽으로 가서, 오른쪽으로 돌고 난후, 전진하는 코드이다. 이 코드를 통해 로보코드 버그를 알 수 있다.
모든 동작을 마치고 전진하는 순간 갑자기 앞으로 나갈 때 로봇이 사라지면서 맨 왼쪽 밑으로 말 그대로 Teleport 하는 현상이 일어난다.
로보코드 위키에 따르면, 맨 오른쪽과 맨 아래에사 이런 현상이 일어 난다고 한다.
18이라는 수와의 관련성 때문에 벌어지는 현상이라고 분석하고 있다. 나 또한 그 생각에 동의한다. 맨 왼쪽 아래는 원점(0,0) 이 위치해 있다. 또, 로봇의 크기ㅏ는 움직이지 않을 때 36*36이 된다. 따라서 맨 왼쪽, 맨 아래 벽에 붙어 있다면 (18,18) 아래 또는 왼쪽 좌표를 가질 수 없다.
어째든 꽤 나 골치 아픈 현상이다.
-----------------------
1.2.1A 버전 부터 고쳐졌다고 합니다.
o Bugfixes
-- Teleportation when hitting wall and abs(sin(heading)) > 0.00001 or
abs(cos(heading)) > 0.00001
이 말인 것 같은데...