안녕하세요. 업무 자동화 RPA 매크로 엔지엠소프트웨어입니다.
오늘은 고객 요청으로 좌표 계산과 캐릭터 이동에 대해 알아보도록 하겠습니다.
우선, 게임 화면에 현재 위치의 좌표가 표시된다고 가정한 후 내용을 읽어보세요.
좌표는 메모장에 숫자로 처리하도록 하겠습니다.
메모장을 보면, X축의 현재 위치는 14고 Y축의 위치는 28입니다.
캐릭터가 이동해야 할 위치는 10, 10이기 때문에 왼쪽으로 4칸, 위쪽으로 18칸을 이동해야 합니다.
좌표를 계산할 때는 상하좌우를 모두 고려해야 합니다. 현재 위치에서 왼쪽은 마이너스고 오른쪽은 플러스 값입니다.
상하도 동일합니다. 위는 마이너스 그리고, 아래는 플러스 값입니다.
아래 그림을 0을 기준으로 생각해보면 쉽게 답을 얻을 수 있습니다.
자 그러면, 이제 어떻게 만들어야 하는지 알아볼까요?
인식해야 할 숫자는 X와 Y이므로 OCR 체크 액션을 2개 추가하고, 각각 영역을 잡아줍니다.
그리고, 숫자 사용을 True로 변경하세요.
정상적으로 숫자가 인식 되는지 확인하기 위해 매크로를 실행 해보세요.
그리고, 각각 판독 문자 결과 값을 확인해줍니다.
정상적으로 숫자 값을 읽어왔습니다.
참고로, 이런 숫자 값들은 메모리 기능을 이용해서 처리할수도 있습니다.
[ 메모리 읽기와 쓰기 기능을 이용해서 숫자값 가져오는 방법 ]
인공지능 욜로 딥러닝을 이용해서 거리도 계산할 수 있습니다.
[ 욜로 매치를 이용해서 캐릭터와 몬스터의 거리를 계산하는 방법 ]
화면에서 읽어온 숫자값을 변수에 각각 저장해야 합니다. 그래야 값을 재사용할 수 있기 때문입니다.
아래 그림과 같이 변수를 2개 추가하고, X와 Y로 아이디를 설정하세요.
OCR 체크에서 각각 변수 x와 y에 판독 문자를 저장하세요.
이제 좌우와 상하로 얼마나 이동해야 하는지 사칙연산으로 계산해볼께요.
숫자 사칙연산 액션을 2개 추가하고, 변수로부터 왼쪽 피연산자 값을 가져오세요.
그리고 연산은 마이너스로 변경해줍니다.
연산된 결과 값을 변수에 다시 넣어주세요.
이제 단순 산수를 해봅시다. 현재 위치가 15고 목표 위치가 10일 때 10 - 15하면 -5가 됩니다.
마이너스이기 때문에 왼쪽으로 5번 이동하면 되고, 만약 플러스 값이 나오면 오른쪽으로 이동하면 됩니다.
이 로직을 좌우 이동으로 하나 만들고 상하 이동도 이 로직을 복사해서 변수 값만 바꿔주면 됩니다.
일단 좌우 로직을 만들어봅시다. 조건은 크게 3가지로 생각할 수 있는데요.
0과 같으면 목표 위치에 도달한거라서 아무런 동작도 하지 않습니다.
그리고, 플러스와 마이너스 값에 따라 좌우 이동하면 됩니다.
먼저 0을 체크할 숫자 체크 액션을 추가하세요.
0과 비교해서 마지막 좌우처리끝 그룹으로 건너뛰도록 루틴을 설정합니다.
두번째 숫자 체크는 비교할 숫자에 0을 입력하고, 비교 대상 숫자는 변수 x로부터 값을 가져오세요.
그리고, 비교 조건을 GreaterThan(보다 크다)으로 설정합니다.
이제 사칙연산에서 14에서 10을 뺀 값이 들어있기 때문에 x 변수의 값은 4입니다.
4는 0보다 크기 때문에 결과는 True가 됩니다.
참과 거짓에 따라서 메세지 박스로 방향키 좌우를 결정합니다.
여기에서는 실제 방향키를 누르면 확인이 안되기 때문에 메세지 박스로 처리했습니다.
참 루트로 이동한 후 메세지 박스를 실행하고, 아래 액션 이동에서 마지막 그룹으로 이동하도록 처리합니다.
조건에서 거짓이면 마지막 그룹 위의 메세지 박스로 이동하도록 설정해야 합니다.
매크로를 실행해보면 실제로 좌표 값이 보정되지 않기 때문에 무한으로 실행될겁니다.
그래서, 테스트는 실제 환경에서 해봐야 하는데요. 그렇더라도 테스트는 아래와 같이 처리할 수 있습니다.
일단, 마지막에 끝 그룹을 추가하고, 숫자체크 0에서 여기로 이동하도록 해줍니다.
이 액션 위에서는 다시 체크할 수 있도록 액션 이동을 설정하세요.
여기서 그룹 좌우처리끝과 아래 액션이동 사이에 상하이동 로직을 비슷하게 만들어서 추가해야 합니다.
좌우 로직과 상하 로직을 분리해서 처리해야 정상 작동하게 됩니다.
글로 설명하는데는 한계가 있어서 잘 이해가 안되는 부분드롣 있을텐데요.
아래 동영상을 참고하시면 좀 더 자세한 설명과 설정들을 확인할 수 있습니다.
그리고, 이 예제에 사용된 스크립트는 아래 링크를 클릭해서 다운 받을 수 있습니다.
댓글