アクセス可能なセル

アクセス可能なセル

> プログラミング

このアルゴリズムは、指定されたセルと PM の数から始めて、ネギが到達できるセルを見つけることを目的としています。

これにより、セルと数値をパラメーターとして受け取る関数が生成され、セルの配列が返されます。

「getAccessibleCells」または「getReachableCells」関数、またはその他の同様の名前について説明されている場合は、それが何であるかがわかります。

## 使用

旅行の計画を立てた瞬間から、この機能は欠かせません。

移動できるセルを知ることで、たとえば、潜在的なダメージが最も少ないセルを選択したり、敵にダメージを与えるためにどこに移動できるかを確認したりできます。

このアルゴリズムは、キャッシュ-キャッシュ アルゴリズム (Le cache-cache) で特に使用されます。

最初の方法

### 原理

それ自体で、セルにアクセスできるようにする方法を実装するのは非常に簡単です。最も簡単な方法は、getPathLength を使用してマップ上の各セルまでの距離をテストすることです。

しかし、この機能は運用コストが高くなります。したがって、マップのすべてのセルで使用してください...操作の消費が急増します。

少し賢い解決策は、最初に PM の範囲内のセルを見つけ、getPathLength を介して到達可能であることを確認することです。

これら 2 つのソリューションが実行可能である場合、運用コストはすぐに高くなります。

あなたが初心者で、これから説明する解決策がまだ少し複雑に思える場合は、最初はこれらの解決策で落ち着いてください。 ゲームの開始時には、必ずしも多くの計算を行う必要はありません。低レベルでは、大量の MP を持っているわけではありません。したがって、これらのソリューションを使用する余裕があります。

## 問題

これらの方法で細胞にアクセスできるようにするのは簡単です。

しかし、PM の数が増えると、最初の問題が発生します。もちろん、彼が登れば登るほど、テストする正方形が増えます。最悪の場合、getPathLength を使用してマップ全体を実行すると、400 万回の操作、「のみ」の請求が発生するはずです。

これにより、CombosDamage Map などの他のアルゴリズムで使用できる操作が大幅に減少することは言うまでもありません。

それだけではありません!もう 1 つの問題があります。喧嘩をしているのはあなただけではありません。 敵の攻撃から身を守るには、敵のアクセス可能なセルを取得する必要があります。 そして、さまざまなネギが球根を召喚し始めると、計算するセルがさらに増えます。

要するに、これらの方法でこの小さな世界すべてのアクセス可能なセルを計算したいと思うようになると、腕よりもはるかに多くの費用がかかります。

したがって、より効果的な別の方法を使用します。隣人から隣人に移動します。

ネイバー法

前提条件

まず、「隣人」とは? セルの隣接セルは、単にそれに隣接するセルです。 そして、明らかに、共通の側面を持つセル、それらのすぐ隣にあるセルについて話しているのであって、対角線上にあるセルについて話しているわけではありません。

したがって、マップの隅にあるセルには 1 つの隣接セルがあります。端のセルは 2 つです。そして他のすべては4つ持っています。

最初に知っておくべきことは、セルの隣接セルを取得することです。 関数 getCellXgetCellY、および getCellFromXY を使用することで、これらの有名な隣接セルを簡単に判別できます。

セルの隣接セルを取得できたら、そのセルが「通過可能」かどうかを判断する必要があります。 明らかに、セルが障害物であったり、ニラがそこにある場合、ニラはその上を移動できません。

これを知るには、関数 isObstacleisEmptyCellisLeek または getCellContent が必要です。

#### 原理

原理は実に単純です。プログラミングの初心者にとってセットアップが必ずしも簡単ではない場合でも.

したがって、ネギはセル上にあり、移動するために一定数の MP があります。 現在オンになっているセルの距離は 0 PM です。ここまでは順調ですね...

あなたのニラがMPを1つ持っている場合、どこに移動できますか?さて、彼の開始セルの自由な隣人について。

彼が 2 MP を持っている場合はどうなりますか?したがって、開始セルの空いている隣接セルで 1 PM 移動できます。また、2 PM については、開始セルの自由隣接の自由隣接について。

等々...

<img src="https://i.ibb.co/7jdzBZr/Tuto-Cell-Accessible-Iteration.gif" alt="Tuto-Cell-Accessible -反復" bor