> 프로그래밍
이 알고리즘은 주어진 셀과 PM의 수에서 시작하여 리크가 도달할 수 있는 셀을 찾는 것을 목표로 합니다.
그 결과 셀과 숫자를 매개 변수로 사용하고 셀 배열을 반환하는 함수가 생성됩니다.
"getAccessibleCells" 또는 "getReachableCells" 함수 또는 기타 유사한 이름에 대해 들었다면 이제 그것이 무엇인지 알게 될 것입니다.
여행을 계획하는 순간부터 이 기능은 필수가 될 것입니다.
갈 수 있는 셀을 알면 예를 들어 잠재적 손상이 가장 적은 셀을 선택하거나 상대에게 피해를 입히기 위해 이동할 수 있는 위치를 확인할 수 있습니다.
이 알고리즘은 특히 Cache-cache 알고리즘(Le cache-cache)에서 사용됩니다.
그 자체로 셀에 액세스할 수 있는 방법을 구현하는 것은 매우 간단합니다. 가장 간단한 방법은 getPathLength를 사용하여 지도의 각 셀까지의 거리를 테스트하는 것입니다.
그러나 이 기능은 운영 비용이 높습니다. 따라서 맵의 모든 셀에서 사용하십시오... 작업 소비가 급증할 것입니다.
약간 더 똑똑한 솔루션은 먼저 PM 범위 내에서 셀을 찾은 다음 getPathLength를 통해 도달할 수 있는지 확인하는 것입니다.
이 두 가지 솔루션이 실현 가능한 경우 운영 비용이 빠르게 높아집니다.
초보자이고 다음에서 논의할 솔루션이 여전히 약간 복잡해 보인다면 처음에는 이러한 솔루션에 만족하십시오. 게임 초반에는 반드시 해야 할 계산이 많지 않을 것이고, 낮은 레벨에서는 MP의 양이 많지 않을 것입니다. 따라서 이러한 솔루션을 사용할 여유가 있습니다.
이러한 방법을 통해 세포에 접근하는 것은 번거롭지 않을 것입니다.
그러나 PM 수가 증가하면 첫 번째 문제가 발생합니다. 물론 그가 더 높이 올라갈수록 테스트할 사각형이 더 많아질 것입니다. 최악의 경우 getPathLength를 사용하여 전체 맵을 실행하면 약 400만 작업의 청구서가 "단지" 청구됩니다.
이렇게 하면 Combos 또는 Damage Map과 같은 다른 알고리즘에서 사용할 수 있는 작업이 크게 줄어듭니다.
그게 전부가 아닙니다! 또 다른 문제가 있습니다. 당신은 싸움에서 혼자가 아닙니다. 적의 공격으로부터 자신을 보호할 수 있도록 적의 접근 가능한 세포를 확보해야 합니다. 그리고 다양한 리크가 구근을 소환하기 시작하면 더 많은 세포를 계산해야 합니다.
요컨대, 이러한 방법을 사용하여 이 모든 작은 세계의 액세스 가능한 셀을 계산하기 시작하면 팔보다 훨씬 많은 비용이 듭니다.
따라서 우리는 훨씬 더 효과적인 다른 방법을 사용합니다. 이웃에서 이웃으로 이동하십시오!
먼저 "이웃"이란 무엇입니까? 셀의 이웃은 단순히 인접한 셀입니다. 그리고 우리는 분명히 공통 측면을 가진 세포, 즉 대각선이 아닌 바로 옆에 있는 세포에 대해 이야기하고 있습니다.
따라서 지도의 모서리에 있는 셀에는 단일 이웃이 있습니다. 가장자리의 셀에는 두 개가 있습니다. 나머지는 모두 4개입니다.
수행 방법을 알아야 할 첫 번째 일은 셀의 이웃을 검색하는 것입니다. getCellX, getCellY 및 getCellFromXY 함수를 사용하면 이러한 유명한 이웃을 쉽게 확인할 수 있습니다.
셀의 이웃을 검색할 수 있으면 해당 셀이 "통과 가능"한지 확인해야 합니다. 확실히, 세포가 장애물이거나 거기에 리크가 있으면 리크는 그 위로 이동할 수 없습니다.
이를 알기 위해서는 isObstacle, isEmptyCell, isLeek 또는 getCellContent 함수가 필요합니다.
원리는 사실 아주 간단합니다. 프로그래밍 초보자가 설정하기가 반드시 쉬운 것은 아니지만.
따라서 귀하의 부추는 셀에 있으며 이동할 특정 수의 MP가 있습니다. 현재 있는 셀은 0PM 거리에 있습니다. 여태까지는 그런대로 잘됐다...
부추에 1 MP가 있으면 어디로 이동할 수 있습니까? 글쎄, 그의 시작 셀의 무료 이웃에서.
그가 2 MP를 가지고 있다면? 따라서 시작 셀의 빈 이웃에서 1 PM 동안 이동할 수 있습니다. 그러나 또한 2 PM에 대해 시작 셀의 자유 이웃의 자유 이웃에 대해.
등등...
<img src="https://i.ibb.co/7jdzBZr/Tuto-Cell-Accessible-Iteration.gif" alt="Tuto-Cell-Accessible -반복" 보르
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.