강좌 #1편 보러 가기
벌써 두번 째 시간이다. 로봇을 만든다고 생각하니 벌써부터 긴장이 되는가? ㅎㅎ
로봇을 만드는 데에도 단계가 있다. 자 이제 하나씩 시작 해 보도록 하자.
먼저
바탕화면에 생성된 로보코드 아이콘을 실행하자
아이콘이 보다시피 탱크다. 눈치 빠른 사람은 벌써 눈치 챈 지도 모르겠다.
그렇다 우리가 만든 로봇은 탱크이다.
아이콘을 실행 하면, 대문짝 만하게 로보코드라고 찍힌 화면이 우리를 반길 것이다.
로보코드의 메인 화면이다.
상단의
Battle 메뉴는 작성된 로봇 끼리 전투를 벌이기 위한 메뉴이고,
Robot 메뉴는 새로운 로봇을 생성하거나 기존의 로봇을 수정하기 위한 Editor를 수행하는 일과 만들어진 로봇을 IBM으로 제출하거나 친구들 끼리 대전을 위해 Package 화 하는일 등을 수행한다.
Option 과 Help는 각종 옵션, 그리고 기타 정보들을 얻을 수 있게 구성되어 있으며,
하단에는 전투를 진행하는 동안 속도나 디버깅, 리플레이 등을 할 수 있게 구성되어 있다.
간단히 메뉴에 대한 설명을 마치고,
로봇 제작에 들어가 보자.
상단 메뉴 중,
Robot->Editor 를 실행한다. 그러면 아무것도 없는 새로운 창이 하나 뜰 것이다.
자 이제 나만의 로봇을 만들어 보자.
상단 메뉴 중
File -> New -> Robot 을 실행하자.
만들 로봇의 이름을 결정한다. 필자는 NICKNAME인 dolbbi로 설정했다.
[확인] 버튼 클릭.
또 다시, 뭔가를 입력하라고 나오는데 신경쓰지 않아도 무방하다. 전과 동일하게 입력하되,
첫 문자는 대문자로 입력해야 한다.
입력이 완료되면 [확인] 클릭!!
자꾸만 입력하라는게 많아서 짜증나지만 조금만 참자. 이제 다 왔다.
로봇의
제작자 이니셜을 입력하라고 나온다. 사실은 패키지 이름이지만, 필자는 풀네임을 적었다.
간단히 입력하고
[확인] 클릭!!그러면 모든 작업이 완료되고 갑자기 소스코드가 나타난다.
기본적인 로봇이 이미 만들어진 것이다 !! 놀랍지 않은가.
누구나 이 과정을 거쳐 지금 보고 있는 기본적인 로봇을 생성하고,
전투를 거듭하면서 보다 새로운 알고리즘을 적용시켜 최고의 로봇이 되어가는 과정을 거치게 되는 것이다. 소스 코드에 대한 상세한 설명은 잠시 미루고,
일단 로봇이 전투를 하는 모습을 지켜보자 !!
생성된 기본 소스코드가 펼쳐진 상태에서 상단 메뉴 중,
Compiler -> Compile 를 선택한다. (
단축키 F6)
저장할 것인지, 어디에 할 것인지 여부를 3번 물어 오는데,
모두 YES를 선택하고 기본으로 설정된 폴더에 소스코드를 저장한다.
컴파일이 시작되고, 소스코드에 손을 대지 않았으므로, 다음과 같은 화면을 볼 수 있을 것이다.
자동으로 생성된 로봇의 코드가 컴파일 되어,
이제 내가 이름을 붙인 로봇이 만들어 진 것이다.로보코드 프로그램 내에는 기본적인
Sample Robot 들이 존재한다.
Sample Robot들은 각각 특성을 지닌다. 이름에 걸맞게 Corner 라는 로봇은 시작하자 마자 경기장의 코너에 박혀, 총알만 날리는가 하면, Walls 라는 로봇은 벽에 붙어서 한쪽 방향으로 계속 이동하면서 Target에 총알을 쏴 댄다. 그 외에도 여러가지 기본 로봇들이 존재하는데, 이 중 하나의 로봇을 골라 방금 만든 내 로봇과 전투를 하자.
Editor 창을 불러온
ROBOCODE 메인 윈도우로 가서,
Battle -> New 를 선택한다.
그럼 다음과 같은 화면을 볼 수 있는데, 간단히 설명하면 다음과 같다.
먼저, 크게
3개의 리스트 박스로 구분이 되어 있는데,
가장 우측의 Box 이름이 Selected Robots 이다.
즉,
경기장에 투입될 로봇의 리스트라는 것이다.
그럼, 좌측에 있는
2개의 Box는 투입 가능한 로봇의 리스트가 아닌가? 물론이다. ㅎㅎ내 로봇은 어디에 있는지 찾아 보자. 우리가 최초에 로봇을 생성할 때, 로봇의 이름과 자신의 이니셜을 입력한 기억이 날 것이다.
가장 좌측의 박스에서 내가 입력했던 이니셜을 찾아보자. 그것이 내 로봇의 패키지 이름이다. 필자는 풀네임을 입력했으므로, 그것을 찾아
선택하면 우측 박스에 내 로봇 이름이 나온다.
하나밖에 만들지 않았으므로 로봇은 1개이다.
눈치 빠른 사람은 이런 의문이 들 것이다. 그럼 여러개도 만들수 있는것인가? 물론이다.
로봇을 여러대 만들어 팀을 구성하여 다른 팀과 배틀을 즐길 수도 있다.
일단은 1:1로 맞붙어 보자.
순서대로, kwonyongho를 선택하고, 내 로봇 이름(Dolbbi)을 클릭하고, 우측에 있는
Add를 클릭하면,
내 로봇이 준비 상태가 되는 것을 볼 수 있다.

같은 방법으로 좌측에서
Sample 을 클릭하고 로봇 중에서 Corner을 선택하고 Add를 하자.
그러면 모든 준비가 완료된 것이다. 특정 로봇을 제거할 경우에는 해당 로봇을 선택하고 Remove를 클릭하면 되고, 선택된 로봇을 가지고
몇번의 Round를 진행할 것인가에 대한 설정은 Number of Rounds의 값을 수정하면 된다. (디폴트 값은 10) 여기 까지 설정이 완료되었다면,
거침없이 'Start Battle' !!!!!
보이는가? 내가 만든 로봇이 전투하는 장면을 !! 이미 샘플로 만들어진 로봇은 구석으로 이동하여 총포를 쏘고,
내 로봇은 기본적으로 앞 뒤로 움직이면서 적을 향해 총알을 발사하는 것을 볼 수 있다.
내 로봇이 적을 터트리고 승리하는 모습. 상단 타이틀을 보면 10라운드 중 2번째 라운드라는 것이 보인다.

지정된 라운드를 모두 수행하면 다음과 같이
랭킹이 나오며,
총점과 함께 세부 득점도 볼 수 있다.
자세히 보면,
단순히 상대방을 쓰러트리는 것이 능사가 아니라는 것을 알 수 있다. 각 부분별로 점수가 주어지며, 승리는 곧, 점수가 높은 로봇에게 돌아간다는 것. 사실 알고 보면
총알을 발사 할 때 마다 나의 체력포인트가 감소한다. 즉,
마음 놓고 총알을 휘갈길 수(?)는 없다는 것이다. 총알을 마구 난사하다 보면 나의 체력치는 바닥이 날 것이고, 결국에는 체력치가 0이 되어 탱크는 움직일 수 없게 된다.(Disabled)
그러나
발사된 총알이 상대편 로봇을 맞추었을 경우에는 적의 체력 포인트는 감소하는 반면, 그만큼의 체력 포인트를 얻게 된다. 즉 다시 말하면
정확도가 높아야 한다는 소리다.
그리고, 나중에 알게 되겠지만, 적이 총알을 발사했는지의 여부 또한, 상대방의 체력이 감소하는 것을 기초로 알아낼 수도 있다.
그러나 오늘은 너무 머리 아픈 것 까지 생각하지 말자. 필자의 결과와 다소 차이는 있겠지만, 이기기 쉬운 상대를 골랐으니 승리를 자축하도록 하자 ㅎㅎ

마치기 전에 마지막으로
전투장 하단에 위치한 메뉴를 간단히 알아보자.
Pause를 클릭하면, 전투를
일시중지 할 수 있으며,
Pause 상태에서는 Next Turn 버튼이 활성화 된다.
Next Turn을 한번 클릭 할 때마다, 1프레임씩 경기를 진행시키면서 볼 수 있다.내 로봇이 특정 순간에 어떻게 동작하는지 자세히 보고자 할 경우에 유용하다.
Stop 버튼과, Restart 버튼은 경기를 중단하거나, 새로 시작할 수 있으며, 경기가 끝나면 Replay할 수 있다.
마지막으로 옆에 보면
길다란 막대가 보이는데 해당 막대를 선택하여,
우측으로 드래그 하면, 전투 진행 속도가 빨라지며, 반대로 좌측으로 드래그 하면 진행 속도가 느려진다.여기 까지 기본적인 로봇을 만들고, 이 로봇으로 간단한 전투를 하는 방법에 대해 알아 보았다.
이것이 전부라고 생각하는 사람은 없으리라 생각한다. 아직도 갈길이 멀지만, 기본적으로 이러한 틀 속에서 작업을 해야 하며, 기본적으로 생성되는 로봇의 소스를 분석하여, 나만의 로봇을 만들어야 한다.
벽에 부딪힐 경우에는 뒤로 돌아 나오고, 적의 총알을 맞았을 경우에는 총알이 날라온 방향으로 총구를 틀어 발사한다. 적의 움직임을 포착하면, 이동 경로와 이동 속도를 고려햐여 예상 위치로 총알을 발사하는 등의 다양한 전략을 머리 속에서 구상하고 그것을 표현한다.
그리고 테스트 하고 또다시 발전시키는 일이, 바로 로보코드를 다루는 우리 로보코더의 숙명이다.
너무 재미있을 것 같지 않은가.
좀 더 자세히 알게 되면 왠만한 게임 저리가라 할 정도로 재미있다. 필자는 연구실 친구들과 매 식사 때가 되면 로봇을 서로 다양한 전투시켜, 식사 내기도 하고, 상품을 걸고 토너먼트 게임도 진행한다.
강좌가 허접하여 지금 까지 따라오는 데에도 많이 어려웠을 거라 생각한다.
앞으로는 로봇을 제어하는 부분인 만큼 더 자세히 설명하도록 노력할 것을 약속하면서.
2번째 강좌는 이것으로 마칠까 한다.
모두 즐거운 주말 되시길 빕니다 ^^ (진행 과정상 부득이 반말을 사용한 점, 양해 해 주시기 바라며...)