Upload
herbst
View
88
Download
0
Embed Size (px)
DESCRIPTION
로보코드 (Robocode). 한국 IBM developerWorks ([email protected]). 로보코드 (Robocode) 란 ?. - PowerPoint PPT Presentation
Citation preview
로보코드 (Robocode)
한국 IBM developerWorks([email protected])
로보코드 (Robocode) 란 ?
로보코드란 ?– IBM alphaWorks 에서 개발한 Java 와 Game 을 접목시킨 프로그래밍 게임– 로봇 개발자는 자신이 만든 로봇이 이기도록 하기 위해 로봇의 기능을 향상 시키면서 Java Skill 또한 향상됨– 재미와 기술을 동시에 얻을 수 있는 기회를 제공해 주어 초보자도 쉽게 J
ava 를 배울 수 있음
로보코드 창시자 : Mat Nelson
"Robocode 를 개발한 동기 중 일부는 '자바는 느리다 ', ' 자바로는 게임을 작성할 수 없다 ' 와 같은 말이 더 이상 진실이 아니라는 것을 세상에 입증하는 것이었다 . 나는 목적을 달성했다고 생각한다 ."
25 년 게임을 해오면서 게임을 잘하는 방법을 배우기 위해 수많은 시간을 투자했습니다 . 매뉴얼을 읽고 , 도움말 항목을 보고 게임
레퍼런스도 꼼꼼히 살피고 웹에서 힌트와 팁을 검색했습니다 . 물론 다른 게임과 마찬가지로 여러분들도 로보코드 때문에 그런 일을 하게 될 것입니다 . 하지만 큰 차이가 있습니다 .
매뉴얼이 자바라는 것입니다 . 그리고 레퍼런스는 Javadoc 이고 , 도움말 메뉴는 자바 튜토리얼이 될 것입니다 . 로보코드
게임을 배우는 것은 자바를 배우는 것입니다 .
로보코드 홈페이지
http://www.ibm.com/developerworks/kr/robocode
로보코드의 특징
Feature is ...?– 자바 환경에서 작동하는 실시간 전투게임– 각 로봇은 인공지능으로 움직이며 전투함– 자신의 로봇을 직접 프로그래밍 할 수 있음– 자신의 로봇으로 다른 사람의 것과 대결할 수 있음– 전투 결과가 점수로 매겨짐– 캐릭터의 전투 능력은 프로그래밍 Skill 과 비례함– 자바를 쉽게 배울 수 있다 .– 즉 , 놀면서 공부한다 .
로보코드 설치
로보코드 설치– Robocode 홈페이지 에서 로보코드 설치 파일을 다운로드 (
http://robocode.sourceforge.net/) 반드시 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내가 충돌시 = + 1.2벽과 충돌시 = 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(http://www.ibm.com/developerworks/java/library/j-robotips/) Wikipedia Robocode(http://en.wikipedia.org/wiki/Robocode)
2001 : alphaWorks 의 Mat Nelson 개발 2003 : 제 1 회 로보코드 코리안컵 개최 ( 우승 : 고려대 황준식 ) 2004 : 제 2 회 로보코드 코리안컵 개최 ( 우승 : 전주대 김형찬 ) 2006 : 제 3회 로보코드 코리안컵 개최 ( 우승 : 성균관대 김정훈 ) 2007 : 제 4회 로보코드 코리안컵 개최 (예정 )
로보코드 코리안컵 History
행사 일정 2007. 07. 15 : 로봇 접수 마감 ([email protected]) 2007. 07. 20 : 64 강 결과 발표 2007. 07. 27 : 16강 결과 발표 2007. 08. 01 : 챔피언쉽 결승대회 및 우승자 시상
상품
로보코드 코리아컵 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 DamageBonus
총알로 적을 죽였을 때 그 동안 적 로봇에 입힌 타격Point 의 20% 를 추가 획득
Ram Damage 적 로봇을 육탄으로 공격했을 때 2 점 획득
Ram Damage Bonus
육탄공격으로 적을 죽였을 때 그 동안 적 로봇에 입힌 타격 Point 의 30% 를 추가로 획득
요약 및 질의 & 응답
로보코드란 IBM alphaWorks 에서 개발한 Java 와 Game 을 접목시킨 프로그래밍 게임
로보코드 게임을 배우는 것은 자바를 배우는 것 .
자바를 쉽게 배울 수 있다 . 즉 놀면서 공부한다 .