> Programmazione
Questo algoritmo mira a trovare le celle che un porro può raggiungere partendo da una data cella e numero di PM.
Ciò si traduce in una funzione che prende una cella e un numero come parametro e che restituirà un array di celle.
Se ti viene detto delle funzioni "getAccessibleCells" o "getReachableCells", o qualsiasi altro nome simile, ora saprai di cosa si tratta.
Dal momento in cui vorrai pianificare i tuoi viaggi, questa funzione sarà essenziale.
Conoscere le celle in cui puoi andare ti permette, ad esempio, di scegliere la cella in cui subirai il minor danno potenziale, oppure di vedere dove potresti spostarti per infliggere danni al tuo avversario.
Questo algoritmo è utilizzato in particolare nell'algoritmo Cache-cache (Le cache-cache).
Di per sé, è abbastanza semplice implementare un modo per rendere accessibili le celle. Il metodo più semplice consiste nel testare la distanza di ogni cella sulla mappa utilizzando getPathLength.
Ma questa funzione ha un costo operativo elevato. Quindi usalo su ogni cella della mappa... Il tuo consumo operativo salirebbe alle stelle.
Una soluzione leggermente più intelligente sarebbe quella di trovare prima le celle all'interno dell'intervallo di PM, quindi verificare che siano raggiungibili tramite getPathLength.
Se queste due soluzioni sono fattibili, hanno un costo di gestione che diventa rapidamente elevato.
Se sei un principiante e la soluzione che discuteremo di seguito sembra ancora un po' complicata, sentiti libero di accontentarti di queste soluzioni all'inizio. All'inizio del gioco, non avrai necessariamente molti calcoli da fare e, a un livello basso, non avrai una grande quantità di MP. Quindi, puoi permetterti di utilizzare queste soluzioni.
Ottenere le tue celle accessibili attraverso questi metodi sarà senza problemi.
Ma un primo problema sorge quando il numero di PM aumenta. Più in alto sale, più quadrati ci saranno da testare, ovviamente. Nel peggiore dei casi, se si esegue l'intera mappa con getPathLength, si dovrebbe finire con un conto di circa 4 milioni di operazioni, "solo".
Basti dire che questo riduce notevolmente le operazioni disponibili per altri algoritmi come Combos, o la Damage Map.
E non è tutto! C'è un altro problema: non sei solo in una lotta. Avrai sicuramente bisogno di rendere accessibili le celle dei tuoi avversari per poterti proteggere dai loro attacchi. E se i vari porri iniziano a richiamare i bulbi, ci sono ancora più celle da calcolare.
Insomma, se inizi a voler calcolare le celle accessibili di tutto questo piccolo mondo con questi metodi, ti costerà molto più di un braccio.
Quindi, usiamo un altro metodo, molto più efficace: Passa da vicino a vicino!
Innanzitutto, cos'è un "vicino"? I vicini di una cella sono semplicemente le celle ad essa adiacenti. E ovviamente stiamo parlando delle celle che hanno un lato comune, le celle che sono direttamente accanto ad esse, e non quelle in diagonale.
Pertanto, le celle che si trovano negli angoli della mappa hanno un solo vicino. Le celle sui bordi ne hanno due. E tutti gli altri ne hanno quattro.
La prima cosa che devi sapere come fare è recuperare i vicini di una cella. Usando le funzioni getCellX, getCellY e getCellFromXY, puoi facilmente determinare questi famosi vicini.
Una volta che puoi recuperare i vicini di una cella, devi determinare se quella cella è "passabile". Chiaramente, se la cella è un ostacolo o c'è un porro, il tuo porro non sarà in grado di muoversi su di essa.
Per saperlo, avrai bisogno delle funzioni isObstacle, isEmptyCell, isLeek o getCellContent.
Il principio è in realtà abbastanza semplice. Anche se non è necessariamente facile da configurare per un principiante nella programmazione.
Il tuo porro è quindi su una cella e ha un certo numero di MP da spostare. La cella su cui si trova attualmente è a una distanza di 0 PM; Fin qui tutto bene...
Se il tuo porro ha 1 MP, dove può muoversi? Bene, sui vicini liberi della sua cella di partenza.
E se ha 2 MP? Può quindi muoversi per 1 PM sui vicini liberi della sua cella di partenza. Ma anche, per 2 PM, sui vicini liberi dei vicini liberi della cella di partenza.
E così via...
<img src="https://i.ibb.co/7jdzBZr/Tuto-Cell-Accessible-Iteration.gif" alt="Tuto-Cell-Accessible -Iterazione" bor
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.