17
로로로로 (Robocode) 로로 IBM developerWorks ([email protected])

로보코드 (Robocode)

  • Upload
    herbst

  • View
    88

  • Download
    0

Embed Size (px)

DESCRIPTION

로보코드 (Robocode). 한국 IBM developerWorks ([email protected]). 로보코드 (Robocode) 란 ?. - PowerPoint PPT Presentation

Citation preview

Page 1: 로보코드 (Robocode)

로보코드 (Robocode)

한국 IBM developerWorks([email protected])

Page 2: 로보코드 (Robocode)

로보코드 (Robocode) 란 ?

로보코드란 ?– IBM alphaWorks 에서 개발한 Java 와 Game 을 접목시킨 프로그래밍 게임– 로봇 개발자는 자신이 만든 로봇이 이기도록 하기 위해 로봇의 기능을 향상 시키면서 Java Skill 또한 향상됨– 재미와 기술을 동시에 얻을 수 있는 기회를 제공해 주어 초보자도 쉽게 J

ava 를 배울 수 있음

로보코드 창시자 : Mat Nelson

"Robocode 를 개발한 동기 중 일부는 '자바는 느리다 ', ' 자바로는 게임을 작성할 수 없다 ' 와 같은 말이 더 이상 진실이 아니라는 것을 세상에 입증하는 것이었다 . 나는 목적을 달성했다고 생각한다 ."

25 년 게임을 해오면서 게임을 잘하는 방법을 배우기 위해 수많은 시간을 투자했습니다 . 매뉴얼을 읽고 , 도움말 항목을 보고 게임

레퍼런스도 꼼꼼히 살피고 웹에서 힌트와 팁을 검색했습니다 . 물론 다른 게임과 마찬가지로 여러분들도 로보코드 때문에 그런 일을 하게 될 것입니다 . 하지만 큰 차이가 있습니다 .

매뉴얼이 자바라는 것입니다 . 그리고 레퍼런스는 Javadoc 이고 , 도움말 메뉴는 자바 튜토리얼이 될 것입니다 . 로보코드

게임을 배우는 것은 자바를 배우는 것입니다 .

Page 3: 로보코드 (Robocode)

로보코드 홈페이지

http://www.ibm.com/developerworks/kr/robocode

Page 4: 로보코드 (Robocode)

로보코드의 특징

Feature is ...?– 자바 환경에서 작동하는 실시간 전투게임– 각 로봇은 인공지능으로 움직이며 전투함– 자신의 로봇을 직접 프로그래밍 할 수 있음– 자신의 로봇으로 다른 사람의 것과 대결할 수 있음– 전투 결과가 점수로 매겨짐– 캐릭터의 전투 능력은 프로그래밍 Skill 과 비례함– 자바를 쉽게 배울 수 있다 .– 즉 , 놀면서 공부한다 .

Page 5: 로보코드 (Robocode)

로보코드 설치

로보코드 설치– Robocode 홈페이지 에서 로보코드 설치 파일을 다운로드 (

http://robocode.sourceforge.net/) 반드시 jar 파일로 다운로드 ...– 로보코드 실행을 위해서는 JDK 가 사전에 설치 되어 있어야 함

(JDK v1.5 이상 권장 )– 설치 : “java -jar robocode-setup-1.2.6A.jar”

시스템 구성요소 – 전투장– 로봇 편집기

Page 6: 로보코드 (Robocode)

로보코드 - 데모

My Robot 작성 방법게임 진행 방법소스 설명

Page 7: 로보코드 (Robocode)

로보코드 로봇의 해부

로보코드 로봇 로보코드 기본 명령어[ 로봇 , 총 , 레이더의 움직임 ]

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 : 이 메소드는 내 로봇이 벽과 충돌했을 때 호출된다

Page 8: 로보코드 (Robocode)

로보코드 – 기본 정보

시간 단위 : 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

Page 9: 로보코드 (Robocode)

로보코드 – 기본 정보

총알– 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 이상

Page 10: 로보코드 (Robocode)

로보코드 – 기본 정보

Constant– getBattleFieldHeight() // 전투장 높이– getBattleFieldWidth() // 전투장 너비– getGunCoolingRate() // 총이 식는 속도– getHeight() // 로봇의 높이– getWidth() // 로봇의 너비– getName() // 로봇의 이름– getNumRounds() // 몇 라운드

Variable– getEnergy() // 현재 로봇의 에너지– getGunHeat() // 총의 온도– getGunHeading() // 총의 방향의 각– getRadarHeading() // 레이더의 각– getHeading() // 로봇이 향하고 있는 방향의 각– getVelocity() // 로봇의 속도– getOthers() // 남은 상대방의 수– getRoundNum() // 몇 번째 라운드– getTime() // 게임진행 시간– getX() // 로봇의 X 좌표– getY() // 로봇의 Y 좌표

Page 11: 로보코드 (Robocode)

로봇 만들기 실습

각자 PC 에 로보코드 설치

샘플 로보코드 작성 , 기본 알고리즘 적용 , 디버그 창의 활용

대전

로보코드 제출

Page 12: 로보코드 (Robocode)

무적 로봇 만들기 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)

Page 13: 로보코드 (Robocode)

2001 : alphaWorks 의 Mat Nelson 개발 2003 : 제 1 회 로보코드 코리안컵 개최 ( 우승 : 고려대 황준식 ) 2004 : 제 2 회 로보코드 코리안컵 개최 ( 우승 : 전주대 김형찬 ) 2006 : 제 3회 로보코드 코리안컵 개최 ( 우승 : 성균관대 김정훈 ) 2007 : 제 4회 로보코드 코리안컵 개최 (예정 )

로보코드 코리안컵 History

Page 14: 로보코드 (Robocode)

행사 일정 2007. 07. 15 : 로봇 접수 마감 ([email protected]) 2007. 07. 20 : 64 강 결과 발표 2007. 07. 27 : 16강 결과 발표 2007. 08. 01 : 챔피언쉽 결승대회 및 우승자 시상

상품

로보코드 코리아컵 2007

Page 15: 로보코드 (Robocode)

로보코드 - 경기 규칙

Battle Filed Size : 1000 * 800

Gun Cooling Rate : 0.1

Inactivity Time : 450

예선전 : 그룹전투 ( 그룹당 10 로봇 )

64 강부터 1 대 1 토너먼트 적용

Total Score 가 높은 로봇이 승리 ( 오래 살아남는 것이 아님 )

Page 16: 로보코드 (Robocode)

로보코드 - 점수항목

점 수 항 목

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% 를 추가로 획득

Page 17: 로보코드 (Robocode)

요약 및 질의 & 응답

로보코드란 IBM alphaWorks 에서 개발한 Java 와 Game 을 접목시킨 프로그래밍 게임

로보코드 게임을 배우는 것은 자바를 배우는 것 .

자바를 쉽게 배울 수 있다 . 즉 놀면서 공부한다 .