- Elkha - Blue
- 매크로
- 매크로 커뮤니티
바람의나라:연 특정몬스터 서치 기능
-
고수분들 도와주세요.. 저 특정맵 이동 스크립트 짜는 알고리즘을 모르겠습니다..
-
이미 위에 알고리즘이 있는데요 ...
-
그니까 이동 알고리즘 및 스크립트 말하는겁니다
본문 내용대로 저렇게 이동하면서 걸리는 지형물이나 유저 , 몬스터 일때 이동 스크립트요,, -
저게되면 정말 좋겠네요 ㅋㅋㅋ
-
너무 날로 먹으시려는거 같은데.. ㅋㅋ;
-
뭘 날로 먹어요? 알고리즘 알려달라는거지 만들어 달라했습니까?
-
ㅋㅋ 너무 예민하게 굴지 마시고손컨 말고 다 매크로로 하실려고 하니까날로 먹는다는 표현 쓰신거 같은데요 ㅋㅋㅋㅋㅋ
-
님도 그래서 여기있는거 아닙니까? ㅋ
-
빵글님 말이 맞아요 ㅋㅋ
-
바람의나라 쓰고있는데 힘드네요.. ㅜ
-
그런거 있으면 좋겠네요 진짜
-
그냥 상상으로 하자면..
모바일은 어떤지 모르겠지만, PC처럼 블록단위로 이동하고 몬스터나 장애물이 위치한다면,
모든 블록을 스캔하고 장애물이나 몬스터를 찾아서. 장애물은 블록들을 트리구조로 만들어서 최단경로(깊이우선탐색(DFS)같은..) 구하고, 그 블록대로 맵 이동. 몬스터는 비슷하게 최단경로 구해서 사냥. 코딩테스트들 보면 장애물있는 블록들 최단경로 구하는 알고리즘 있을거에요.
-
근데 굳이 안그래도
이동경로에서 2초 이상 좌표값 안바뀌면 랜덤함수로 이동 후 > 다시 본문 진행 으로 해도 되긴해요
근데 문제는 그 원하는 이동 동선 짜는 알고리즘이 궁금하다는거죠,,ㅠ -
https://stricky.tistory.com/213
그냥 이거 따라서 오토핫키로 구현하면 되는거아닌가요??
똑같이 배열있고, 딕셔너리 있고 반복문(for, while)도 있고... -
시험 삼아 해봤는데.. 2시간 넘게 걸렸네요.
단순히 장애물 피해서 경로 찾는 알고리즘이에요..
사전에 몬스터인지 그냥 텅빈 블럭인지 장애물이있는지 스캔을 해야하겠지만요..
덕분에 바람을 해야하나 싶네요 ㅋㅋ
global PathDict := ComObjCreate("Scripting.Dictionary")PathDict.item("1 1") := ["없음", ["1 2", "2 1"]] ; 1, 1에 인접한 블럭 좌표PathDict.item("2 1") := ["장애물", ["1 1", "3 1", "2 2"]] ; 2, 1에 인접한 블럭 좌표PathDict.item("3 1") := ["없음", ["2 1", "3 2"]]PathDict.item("1 2") := ["없음", ["1 1", "2 2", "1 3"]]PathDict.item("2 2") := ["장애물", ["2 1", "1 2", "3 2", "2 3"]]PathDict.item("3 2") := ["없음", ["3 1", "2 2", "3 3"]]PathDict.item("1 3") := ["없음", ["1 2", "2 3"]]PathDict.item("2 3") := ["없음", ["1 3", "2 2", "3 3"]]PathDict.item("3 3") := ["없음", ["3 2", "2 3"]]result := findPath()displayArray("결과", result)findPath(){start := "1 1"end := "3 1"qu := []done := set()qu.Push([start])addAtSet(done, start); while(True)while(qu.Length()){p := qu.pop()v := p[p.Length()]obj := PathDict.item(v)[1]if(obj == "장애물"){Continue}if(v == end){return p}for i, block in PathDict.item(v)[2]{if(!isInSet(done, block)){temp := p.Clone()temp.Push(block)qu.Push(temp)addAtSet(done, block)}}}msgbox, 경로 없음return}set(){return []}addAtSet(Byref done_set, element){if(!isInSet(done_set, element)){done_set.Push(element)}return}isInSet(done_set, element){for idx, value in done_set{if(value == element){return True}}return False}displayArray(msg, arr){str := ""for idx, v in arr{if(str == ""){str = %v%}else{str = %str% - %v%}}msgbox, %msg% = %str%} -
감사합니다 도움많이됐습니다 (--) (__)
-
음 먼지모르겠지만 감사해요
-
오 능력자분들 엄청나시다..
-
와 이런거 보면 세상은 참 넓고 능력자분들은 많네요
-
뭔가 엄청 프로페셔널한데;;
-
글쓰신분 말대로 저렇게 되면 도안 걱정없을거같은데요 ?