로보코드 (Robocode) 한국 IBM developerWorks
로보코드 (Robocode) 란 ? 로보코드란 ? –IBM alphaWorks 에서 개발한 Java 와 Game 을 접목시킨 프로그래밍 게임 – 로봇 개발자는 자신이 만든 로봇이 이기도록 하기 위해 로봇의 기능을 향상 시키면서 Java Skill 또한 향상됨 – 재미와 기술을 동시에 얻을 수 있는 기회를 제공해 주어 초보자도 쉽게 Java 를 배울 수 있음 로보코드 창시자 : Mat Nelson "Robocode 를 개발한 동기 중 일부는 ' 자 바는 느리다 ', ' 자바로는 게임을 작성할 수 없다 ' 와 같은 말이 더 이상 진실이 아니라 는 것을 세상에 입증하는 것이었다. 나는 목적을 달성했다고 생각한다." 25 년 게임을 해오면서 게임을 잘하는 방법을 배우기 위해 수많은 시간을 투자했습니다. 매뉴 얼을 읽고, 도움말 항목을 보고 게임 레퍼런스 도 꼼꼼히 살피고 웹에서 힌트와 팁을 검색했습 니다. 물론 다른 게임과 마찬가지로 여러분들도 로보코드 때문에 그런 일을 하게 될 것입니다. 하지만 큰 차이가 있습니다. 매뉴얼이 자바라는 것입니다. 그리고 레퍼런스는 Javadoc 이고, 도움말 메뉴는 자바 튜토리얼이 될 것입니다. 로보코드 게임을 배우는 것은 자바를 배우는 것 입니다.
로보코드 홈페이지
로보코드의 특징 Feature is...? – 자바 환경에서 작동하는 실시간 전투게임 – 각 로봇은 인공지능으로 움직이며 전투함 – 자신의 로봇을 직접 프로그래밍 할 수 있음 – 자신의 로봇으로 다른 사람의 것과 대결할 수 있음 – 전투 결과가 점수로 매겨짐 – 캐릭터의 전투 능력은 프로그래밍 Skill 과 비례함 – 자바를 쉽게 배울 수 있다. – 즉, 놀면서 공부한다.
로보코드 설치 –Robocode 홈페이지 에서 로보코드 설치 파일을 다운로드 ( 반드시 jar 파일로 다운로드... – 로보코드 실행을 위해서는 JDK 가 사전에 설치 되어 있어야 함 (JDK v1.5 이상 권장 ) – 설치 : “ java -jar robocode-setup-1.2.6A.jar ” 시스템 구성요소 – 전투장 – 로봇 편집기
로보코드 - 데모 My Robot 작성 방법 게임 진행 방법 소스 설명
로보코드 로봇의 해부 로보코드 로봇 로보코드 기본 명령어 [ 로봇, 총, 레이더의 움직임 ] ahead(double distance) 와 back(double distance): 지정된 픽셀 거리로 로봇을 이동시킨다. turnRight(double degree) 와 turnLeft(double degree): 지정된 각도로 로봇을 돌린다. turnGunRight(double degree) 와 turnGunLeft(double degree): 로봇의 방향과 상관 없 이 총의 방향을 돌린다. turnRadarRight(double degree) 와 turnRadarLeft(double degree): 총과 로봇의 방향에 상관없이 총 위의 레이더를 돌린다. [ 로봇의 정보 얻기 ] getX() 와 getY() : 로봇의 현재 좌표를 보여 준다. getHeading(), getGunHeading() 과 getRadarHeading() : 로봇, 총, 레이더의 현재 방향 과 각도로 알려준다. [ 전투 중 이벤트 발생시 ] ScannedRobotEvent : 이 메소드는 레이더가 적 로봇을 스캔했을 때 호출된다. HitByBulletEvent : 이 메소드는 내 로봇이 총알을 맞았을 때 호출된다. HitRobotEvent : 이 메소드는 내 로봇이 적 로봇을 쏘았을 때 호출된다. HitWallEvent : 이 메소드는 내 로봇이 벽과 충돌했을 때 호출된다
로보코드 – 기본 정보 시간 단위 : tick (= frame = turn) –30 FPS ( 초당 30 Frame) 거리 단위 : pixel – 시작 위치 (0, 0) : 좌측 하단 로봇의 움직임 – 가속 a = 1 pixel/tick – 감속 a = 2 pixel/tick – 속도 v = a * t (Max 8) – 거리 d = v * t 로봇의 최대 회전율 = 10 – 0.75 * abs(v) degrees/tick 총의 최대 회전율 = 20 degrees/tick 레이더의 최대 회전율 = 45 degrees/tick
로보코드 – 기본 정보 총알 –firepower : 0.1~3 – 데미지 = 4 * firepower –firepower 가 1 이상이면 2 * (firepower -1) 추가 총알 발사시 로봇의 에너지 소모 = firepower 총알 속도 = 20 – 3 * firepower 로봇의 움직이는 방향이나 속도는 총알의 속도에 영향을 주지 않는다. 총의 가열 (gunHeat) = 1 + firepower / 5 명중시 돌려받는 에너지 = 3 * firepower 상대와 충돌시 = 둘 다 -0.6 내가 충돌시 = 벽과 충돌시 = abs(v) * 0.5 – 1 –AdvancedRobot 이상
로보코드 – 기본 정보 Constant –getBattleFieldHeight() // 전투장 높이 –getBattleFieldWidth() // 전투장 너비 –getGunCoolingRate() // 총이 식는 속도 –getHeight() // 로봇의 높이 –getWidth() // 로봇의 너비 –getName() // 로봇의 이름 –getNumRounds() // 몇 라운드 Variable –getEnergy() // 현재 로봇의 에너지 –getGunHeat() // 총의 온도 –getGunHeading() // 총의 방향의 각 –getRadarHeading() // 레이더의 각 –getHeading() // 로봇이 향하고 있는 방향의 각 –getVelocity() // 로봇의 속도 –getOthers() // 남은 상대방의 수 –getRoundNum() // 몇 번째 라운드 –getTime() // 게임진행 시간 –getX() // 로봇의 X 좌표 –getY() // 로봇의 Y 좌표
로봇 만들기 실습 각자 PC 에 로보코드 설치 샘플 로보코드 작성, 기본 알고리즘 적용, 디버그 창의 활용 대전 로보코드 제출
무적 로봇 만들기 Tip! 아래 URL 에서 제공되는 로보코드 기본 알고리즘을 적용 developerWorks : Secrets from the Robocode masters ( Wikipedia Robocode (
2001 : alphaWorks 의 Mat Nelson 개발 2003 : 제 1 회 로보코드 코리안컵 개최 ( 우승 : 고려대 황준식 ) 2004 : 제 2 회 로보코드 코리안컵 개최 ( 우승 : 전주대 김형찬 ) 2006 : 제 3 회 로보코드 코리안컵 개최 ( 우승 : 성균관대 김정훈 ) 2007 : 제 4 회 로보코드 코리안컵 개최 ( 예정 ) 로보코드 코리안컵 History
행사 일정 : 로봇 접수 마감 : 64 강 결과 발표 : 16 강 결과 발표 : 챔피언쉽 결승대회 및 우승자 시상 상품 로보코드 코리아컵 2007
로보코드 - 경기 규칙 Battle Filed Size : 1000 * 800 Gun Cooling Rate : 0.1 Inactivity Time : 450 예선전 : 그룹전투 ( 그룹당 10 로봇 ) 64 강부터 1 대 1 토너먼트 적용 Total Score 가 높은 로봇이 승리 ( 오래 살아남는 것이 아님 )
로보코드 - 점수항목 점 수 항 목점 수 항 목 Total Score 점 수 내 역점 수 내 역 점수의 총합. 순위의 기준 Survival Score 다른 로봇이 죽을 때 마다 살아남은 로봇은 50 점 획득 Last Survival Bonus 최후까지 살아남은 로봇은 이전 로봇이 죽을 때 마다 보너스로 10 점씩 추가 획득 (ex : 전투에 참여한 로봇이 5 개 일 경우 – 4 X 10 점 ) Bullet Damage 적에게 총알로 입힌 타격 Point 만큼 점수 획득 Bullet Damage Bonus 총알로 적을 죽였을 때 그 동안 적 로봇에 입힌 타격 Point 의 20% 를 추가 획득 Ram Damage 적 로봇을 육탄으로 공격했을 때 2 점 획득 Ram Damage Bonus 육탄공격으로 적을 죽였을 때 그 동안 적 로봇에 입힌 타격 Point 의 30% 를 추가로 획득
요약 및 질의 & 응답 로보코드란 IBM alphaWorks 에서 개발한 Java 와 Game 을 접목시킨 프로그래밍 게임 로보코드 게임을 배우는 것은 자바를 배우는 것. 자바를 쉽게 배울 수 있다. 즉 놀면서 공부한다.