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

Slides:



Advertisements
Similar presentations
2D 게임 프로그래밍 프로젝트 학과 : 게임 공학과 학번 : 이름 : 최우진.
Advertisements

2D 게임 프로그래밍 1 차 프로젝트 배태민. 목 차목 차 ◎ 게임컨셉 ◎ 게임플레이 ◎ 개발범위 ◎ 개발일정.
로보코드 (Robocode) 한국 IBM developerWorks
 스킬  Q: 조준형 기본공격 강철 폭풍이 2 번성공하면 다 음에는 회오리 바람이 발 사되어 적들을 공중에 띄 웁니다.  W:4 초간 모든적의 투사 체를 막아주는 움직이는 벽을 생성합니다.  E: 유닛을 뚫고 돌진하여 매번 시전할 떄마다 점차 큰 피해를 입힙니다.
- 0 - 버그 내용  링크 안 걸려 있음 Screenshot 커뮤니 티 버그 내용 점선 처리 안되었음 ( 모든 링크 부분 ) Screenshot 커뮤니 티.
게임엔진 Term Project 학번 : 이름 : 오민형 2D 게임 프로그래밍 Project.
1 차시 : SW 코딩으로 배우는 3D 기초작품 및 톱니바퀴 만들기 1)SPL3D 프린팅 툴 설치하기 2) 도형 추가하기 3) 도형 연산 명령어 익히기 4)3D 프린터 출력을 위한 STL 파일 내보내기 5) 하트모양 만들기 6) 하트모양 열쇠고리 만들기 7) 변수와 수식.
Android 프로그램개발 환경. 학습 목표 ■ 교육 목표  JDK 설치  JDK 환경 설정  Eclipse 설치  Android SDK 설치  ADT Plug-in 설치  Android Virtual Device(AVD) 설치  Android 예제 프로그램.
난이도 : 초급 제1장 앱 인벤터 소개 및 준비.
어서와 Java는 처음이지! 제20장 실전프로젝트 #2.
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
게임 엔진 : 프로젝트 PPT_3 참참참 김 현 원.
Java 프로그래밍 - 팩맨(Pacman) -
Power Java 제3장 이클립스 사용하기.
Revenge of the Zombie:2차 발표
2d 게임 프로그래밍 기말 프로젝트 1차 발표 김대현.
Power Java 제2장 자바 개발 도구.
나민영 서경대학교 컴퓨터공학과 CGVR Lab 같이만들어보자 5주차 OpenCV 설정 및 기초.
openGL Project 제안서 - 해상 전투
임베디드 시스템 개론 크로스 플랫폼 설치 2일차 강의 자료 Embedded System Lab.
1. C++ 시작하기.
Outlook Addin 설치 방법 및 매뉴얼
ASP.NET AJAX 비동기 게시판 작성 2007 컴퓨터공학실험( I )
Microsoft Robotics Developer Studio 고급 프로그래밍 과정 [Part 3] VPL 로봇 프로그래밍
3차 발표: 프로젝트 발표 학번: 이름: 주창환.
Solar Tracking Parasol
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
자바응용.
강의 개요. 2014년 가을학기 손시운 지도 교수: 문양세 교수님.
Quiz #7 다음 수들을 합병 정렬과 퀵 정렬 알고리즘을 이용하여 오름 차순으로 정렬하였을 때, 데이터 이동 회수를 각각 구하라. 여러분은 정렬 과정을 단계별로 보이면서 이동 회수를 추적해야 한다. 단, 퀵 정렬시에 피봇으로 배열의 왼쪽 첫 번째 원소를 선택한다. 5.
2DGP 2차발표 유창민.
홍익대학교 메일 시스템 구축 그룹웨어 메일 이전 하기.
ASP.NET AJAX / AJAX Control Toolkit 응용 2008 컴퓨터공학실험( I )
2D Game Programming Project 1
1차시: 낮과 밤이 생기는 원리 지구과학
워드프로세서 실기 강 사 : 박영민.
인체 대 탐험 3D GAME ENGINE 게임 공학과 이성진.
자바 5.0 프로그래밍.
2D 게임 프로그래밍 BUBBLE BOBBLE 제민경.
20강 패턴을 통한 객체지향 언어의 이해 - II - 난이도 있는 패턴 예제 - I Lecturer Kim Myoung-Ho
9강. 클래스 실전 학사 관리 프로그램 만들기 프로그래밍이란 결국 데이터를 효율적으로 관리하기 위한 공구
2D 게임프로그래밍 프로젝트 스틱 파이터 Stick Fighter 박하은.
컴퓨터 프로그래밍 기초 [01] Visual Studio 설치 및 사용방법
컴퓨터 개론 및 실습 1주차 2015년 03월 05일.
CAD 실습 2013년 2학기.
Java , 안드로이드를 이용한 ‘사천성’ Game
18강. 인터페이스 – II - 인터페이스와 다중상속 - 인터페이스를 통한 로봇 장남감 만들기 프로그래밍
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
OpenCV 설정 2.21 만든이 딩딩.
1차 발표: 프로젝트 발표 안내 및 형식 학번: 이름: 김경우.
안녕하세요!.
3차 발표: 양궁 게임 학번: , 이름: 조형윤, 박지훈.
2D 게임프로그래밍 프로젝트 발 록 런 김대호.
[INA240] Web Programming Homework #2 [INA240] Web Programming
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
농구 로봇 따라해 보기.
2D game programing 게임공학과 임종현.
제12회 KHU 봄 프로그래밍 경시대회 경희대학교 학생들의 졸업 후 국내외 최고 수준의 소프트웨어 인재 양성의 비전 아래, 프로그래밍 실력 향상에 대한 동기를 부여하고자 프로그래밍 경시대회를 개최합니다. 본 대회는 경기남부 6개 대학 프로그래밍 경시대회(SHAKE)의 예선을.
2D 게임 프로그래밍 제안서 김보명.
2D 게임프로그래밍 프로젝트 - Air Clear 심석용.
7. 힘과 운동 속력이 변하지 않는 운동.
실습 UBLAB.
2D Game Programming 1차 발표 배강산.
김덕용 게임 엔진론 Project 2차발표.
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
어드민 로그인 ID : admin 비밀번호 : 서보테크 1. 제품소개 등록 - MISUBISHI
2019년 신청접수 3.11 ~ 4.22(월) 18시까지.
eBooks on EBSCOhost 이용매뉴얼
JAVA 프로그래밍 16장 JNLP.
1. 실습 시간에 수행한 avd 생성 및 실행, adb shell 접속 및 명령어 수행 결과를 제출한다.
Presentation transcript:

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

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

로보코드 홈페이지 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) 거리 단위 : 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

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

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

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

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

로보코드 - 점수항목 점 수 항 목 점 수 내 역 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% 를 추가로 획득

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