Presentation is loading. Please wait.

Presentation is loading. Please wait.

한국 IBM developerWorks (dwkorea@kr.ibm.com) 로보코드(Robocode) 한국 IBM developerWorks (dwkorea@kr.ibm.com)

Similar presentations


Presentation on theme: "한국 IBM developerWorks (dwkorea@kr.ibm.com) 로보코드(Robocode) 한국 IBM developerWorks (dwkorea@kr.ibm.com)"— Presentation transcript:

1 한국 IBM developerWorks (dwkorea@kr.ibm.com)
로보코드(Robocode) 한국 IBM developerWorks

2 로보코드(Robocode)란 ? 로보코드란? 로보코드 창시자 : Mat Nelson
25년 게임을 해오면서 게임을 잘하는 방법을 배우기 위해 수많은 시간을 투자했습니다. 매뉴얼을 읽고, 도움말 항목을 보고 게임 레퍼런스도 꼼꼼히 살피고 웹에서 힌트와 팁을 검색했습니다. 물론 다른 게임과 마찬가지로 여러분들도 로보코드 때문에 그런 일을 하게 될 것입니다. 하지만 큰 차이가 있습니다. 매뉴얼이 자바라는 것입니다. 그리고 레퍼런스는 Javadoc이고, 도움말 메뉴는 자바 튜토리얼이 될 것입니다. 로보코드 게임을 배우는 것은 자바를 배우는 것입니다. 로보코드란? IBM alphaWorks 에서 개발한 Java 와 Game 을 접목시킨 프로그래밍 게임 로봇 개발자는 자신이 만든 로봇이 이기도록 하기 위해 로봇의 기능을 향상 시키면서 Java Skill 또한 향상됨 재미와 기술을 동시에 얻을 수 있는 기회를 제공해 주어 초보자도 쉽게 Java 를 배울 수 있음 로보코드 창시자 : Mat Nelson "Robocode를 개발한 동기 중 일부는 '자바는 느리다', '자바로는 게임을 작성할 수 없다'와 같은 말이 더 이상 진실이 아니라는 것을 세상에 입증하는 것이었다. 나는 목적을 달성했다고 생각한다."

3 로보코드 홈페이지

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

5 로보코드 설치 로보코드 설치 Robocode 홈페이지 에서 로보코드 설치 파일을 다운로드 ( 반드시 jar 파일로 다운로드... 로보코드 실행을 위해서는 JDK 가 사전에 설치 되어 있어야 함 (JDK v1.5 이상 권장) 설치 : “java -jar robocode-setup-1.2.6A.jar” 시스템 구성요소 전투장 로봇 편집기

6 로보코드 - 데모 My Robot 작성 방법 게임 진행 방법 소스 설명

7 로보코드 로봇의 해부 로보코드 기본 명령어 로보코드 로봇 [로봇, 총, 레이더의 움직임] [로봇의 정보 얻기]
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 : 이 메소드는 내 로봇이 벽과 충돌했을 때 호출된다

8 로보코드 – 기본 정보 시간 단위 : tick (= frame = turn) 거리 단위 : pixel 로봇의 움직임
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

9 로보코드 – 기본 정보 총알 총알 발사시 로봇의 에너지 소모 = 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 이상

10 로보코드 – 기본 정보 Constant Variable getBattleFieldHeight() // 전투장 높이
getBattleFieldWidth() // 전투장 너비 getGunCoolingRate() // 총이 식는 속도 getHeight() // 로봇의 높이 getWidth() // 로봇의 너비 getName() // 로봇의 이름 getNumRounds() // 몇 라운드 Variable getEnergy() // 현재 로봇의 에너지 getGunHeat() // 총의 온도 getGunHeading() // 총의 방향의 각 getRadarHeading() // 레이더의 각 getHeading() // 로봇이 향하고 있는 방향의 각 getVelocity() // 로봇의 속도 getOthers() // 남은 상대방의 수 getRoundNum() // 몇 번째 라운드 getTime() // 게임진행 시간 getX() // 로봇의 X 좌표 getY() // 로봇의 Y 좌표

11 로봇 만들기 실습 각자 PC 에 로보코드 설치 샘플 로보코드 작성, 기본 알고리즘 적용, 디버그 창의 활용 대전 로보코드 제출

12 무적 로봇 만들기 Tip! 아래 URL 에서 제공되는 로보코드 기본 알고리즘을 적용
developerWorks : Secrets from the Robocode masters ( Wikipedia Robocode (

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

14 로보코드 코리아컵 2007 행사 일정 상품 2007. 07. 15 : 로봇 접수 마감 (dwkorea@kr.ibm.com)
: 64강 결과 발표 : 16강 결과 발표 : 챔피언쉽 결승대회 및 우승자 시상 상품

15 로보코드 - 경기 규칙 Battle Filed Size : 1000 * 800 Gun Cooling Rate : 0.1
Inactivity Time : 450 예선전 : 그룹전투 (그룹당 10 로봇) 64강부터 1 대 1 토너먼트 적용 Total Score 가 높은 로봇이 승리 (오래 살아남는 것이 아님)

16 로보코드 - 점수항목 점 수 항 목 점 수 내 역 Total Score 점수의 총합. 순위의 기준 Survival 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% 를 추가로 획득

17 요약 및 질의 & 응답 로보코드란 IBM alphaWorks 에서 개발한 Java 와 Game 을 접목시킨 프로그래밍 게임
로보코드 게임을 배우는 것은 자바를 배우는 것. 자바를 쉽게 배울 수 있다. 즉 놀면서 공부한다.


Download ppt "한국 IBM developerWorks (dwkorea@kr.ibm.com) 로보코드(Robocode) 한국 IBM developerWorks (dwkorea@kr.ibm.com)"

Similar presentations


Ads by Google