출처 : http://www.ibm.com/developerworks/kr/library/j-tipstrats.html Gladiatorial League의 기원에 대해 알아보고, 다양한 움직임 전략 레벨, 슈팅, 정보 모으기 등을 설명합니다. 본 자료는 2002년 5월 IBM developerWorks journal에 실린 기술자료, "Cloak and turret: Learn secrets from the Robocode masters"의 내용입니다. Gladiatorial League 필자가 Robocode를 알게 되었을 때, 어떤 로봇이 가장 으뜸인지를 가려내는 공식적인 대회는 없었다. 그나마 존재했던 토너먼트도 새로운 버전의 로봇들이 속출하면서 바로 구식이 되어버렸다. 필자가 로봇을 개발하는 동..
출처 : http://www.ibm.com/developerworks/kr/library/j-movement/index.html 타겟팅(targeting) 알고리즘에는 한계가 있습니다. 예견하기 어려운 움직임 패턴이 언제나 있기 때문입니다. 자신의 로봇이 상대편에 맞게 최상의 움직임 알고리즘을 선택하도록 하는 방법을 설명합니다. 이 글에서는 과거의 성능의 기반으로 움직임 상태를 선택하는 기술을 설명한다. 가능한 간략한 예제가 될 수 있도록, 본 예제에서는 장기적인 데이터의 영속성은 무시하기로 했다. 이 글에서는 코드에 대한 개요만 제공한다. 클래스나 메소드에 대한 상세한 설명이 필요하다면 소스 코드 문서를 참조하라. 전체 소스 코드는 참고자료 섹션을 참조하기 바란다. 수학 유틸리티 클래스 일반적으로, 로..
출처 : http://www.ibm.com/developerworks/kr/library/j-robotips/index.html 로보코드 전문가들이 자신들이 로봇 전투에서의 성공의 비밀을 나눕니다. Factored wall avoidance (한글) 코너에 갇히거나 원하는 이동 방향에서 너무 많이 벗어나지 않으면서, 로봇과 벽 사이의 간격을 유지하는 알고리즘을 만드는 것은 어려운 일입니다. 이에 대한 한 가지 간단한 솔루션으로, factored wall avoidance가 있습니다. 이 글에서, David McCoy가 이 기술을 구현하는 방법을 설명합니다. 반 중력 움직임 (한글) 반 중력 움직임(Anti-gravity movement)은, 여러 가지 변형된 형태들 중에, 대부분의 로보코더(Robocod..
출처 : http://www.ibm.com/developerworks/kr/library/j-fwa/index.html 코너에 갇히거나 원하는 이동 방향에서 너무 많이 벗어나지 않으면서, 로봇과 벽 사이의 간격을 유지하는 알고리즘은 간단히 만들 수 없는 것 같습니다. 한 가지 간단한 솔루션으로, Factored wall avoidance가 있습니다. 이 글에서, David McCoy가 이를 구현하는 방법을 설명합니다. With a few additions to the bot we built in "상대편의 움직임 추적하기"에서 구현했던 로봇에 몇 가지를 더 추가하여, 기존의 움직임 알고리즘 또는 문제가 많은 움직임 알고리즘에 Factored Wall Avoidance를 추가할 수 있다. Factored ..
Real-time Java, Part 2: 컴파일 기술 비교 Real-time Java ™ 시리즈, 두 번째 글에서는 자바 언어의 네이티브 컴파일과 관련한 문제점들을 설명합니다. 동적 (Just-in-time) 또는 정적 (Ahead-of-time) 컴파일 단독으로는 모든 자바 애플리케이션들의 요구 사항들을 맞출 수 없습니다. 필자는 다양한 실행 환경에서 이 두 개의 컴파일 기술들을 비교하고 서로 어떻게 보완되는지를 설명합니다. 자바 애플리케이션 성능 문제는 개발 커뮤니티에서 가끔씩 뜨거운 논쟁을 불러 일으킨다. 이 언어는 애플리케이션 이식성(portability)이라는 중요한 목표를 지원하도록 인터프리팅 되었기 때문에 초기 자바 런타임은 C와 C++ 같은 컴파일 된 언어 보다 훨씬 낮은 성능 레벨을 제..
Real-time Java, Part 1: 실시간 시스템에 자바 사용하기 Real-time Java™ 시리즈 첫 번째 기술자료에서는, 자바를 사용하여 실시간 성능 요구 사항들에 부합하는 시스템을 개발하는 주요 문제점들을 다룹니다. 실시간 애플리케이션 개발이 의미하는 바가 무엇인지, 실시간 애플리케이션의 요구 사항을 맞추기 위해 런타임 시스템들이 어떻게 다루어져야 하는지를 설명합니다. 필자는 표준 기반 기술들을 결합하여 실시간 자바의 문제점들을 해결하는 방법을 여러분에게 소개합니다. 실시간 시스템에서 자바는 여러 가지 이유로 인해 보급되지 못했다. 여기에는 동적 클래스 로딩 같은 본질적인 자바 언어의 디자인에 내재한 성능 문제, 가비지 컬렉터와 네이티브 코드 컴파일 같은 Java Runtime Enviro..
출처 DefineJava 정적 변수를 선언하는 방법 static을 이용하여 정적 변수를 선언할 떄 대부분 어떻게 사용하는가? public class StaticTest { private static int SIZE= 10; private static int[] myStatic = new int[SIZE]; } 대부분 이렇게 사용할 것이다. myStatic이라는 배열을 만들었다. 그렇다면 이 myStatic에 값을 할 당할때 어떻게들 사용하는가? myStatic은 배열이다. 배열에 값을 할당 할때 과연 어떻게 할 수 있을까?(반복문을 이용하는 방법중) 생성자를 만드는 방법도 있을것이고 메인메소드나 기타메소드에서 값을 할당 받는경우도 있다. 가장 쉽게 생각한 방법이 다음과 같은 두가지 방법일 것이다. ex1..
출처 : www.DefineJava.net Public 같은 클래스, 하위클래스, 또는 같은 패키지 내에 있는 어떤 클래스에서도 접근할 수 있습니다. 이 접근 권한은 클래스 또는 객체의 외부 인터페이스를 제공해 줄 때 주로 사용합니다. Private 같은 클래스 내에서만 접근가능 합니다. 다시 말해서, 이 접근 권한으로 지정된 변수 또는 메소드를 다른 객체에서 참조하거나 사용하는 것이 불가능하고, 자신의 클래스 내에 있는 메소드에서만 참조하거나 사용할 수 있습니다. 클래스가 제공하는 기능을 내부적으로 구현할 때 주로 사용하고, 이렇게 함으로써 완벽한 정보은닉이 가능합니다. Protected 자바에서 정의된 클래스들은 기본적으로 하나의 그룹 단위 또는 묶음단위로써 유지되는데, 이를 패키지라 합니다. 다시 ..