> Programmering
Denne algoritme har til formål at finde de celler, som en porre kan nå ud fra en given celle og antallet af PM.
Dette resulterer i, at en funktion tager en celle og et tal som en parameter, og som returnerer en matrix af celler.
Hvis du bliver fortalt om funktionerne "getAccessibleCells" eller "getReachableCells" eller et andet lignende navn, vil du nu vide, hvad det er.
Fra det øjeblik du ønsker at planlægge dine ture, vil denne funktion være afgørende.
At kende cellerne, hvor du kan gå, giver dig for eksempel mulighed for at vælge den celle, hvor du vil lide mindst mulig skade, eller at se, hvor du kan flytte for at påføre din modstander skade.
Denne algoritme bruges især i Cache-cache-algoritmen (Le cache-cache).
I sig selv er det ganske enkelt at implementere en måde at få cellerne tilgængelige på. Den enkleste metode er at teste afstanden til hver celle på kortet ved hjælp af getPathLength.
Men denne funktion har en høj driftsomkostning. Så brug det på hver celle på kortet... Dit driftsforbrug ville stige i vejret.
En lidt smartere løsning ville være først at finde cellerne inden for rækkevidde af PM, og derefter kontrollere, at de er tilgængelige via getPathLength.
Hvis disse to løsninger er gennemførlige, har de en driftsomkostning, der hurtigt bliver høj.
Hvis du er nybegynder, og den løsning, vi skal diskutere i det følgende, stadig virker en smule kompliceret, er du velkommen til at nøjes med disse løsninger i starten. I begyndelsen af spillet vil du ikke nødvendigvis have en masse beregninger at lave, og på lavt niveau vil du ikke have en stor mængde MP. Så du har råd til at bruge disse løsninger.
At få dine celler tilgængelige via disse metoder vil være problemfrit.
Men et første problem opstår, når dit antal PM stiger. Jo højere han klatrer, jo flere felter vil der selvfølgelig være at teste. I værste fald, hvis du løber gennem hele kortet med getPathLength, skulle du ende med en regning på ca. 4 millioner operationer, "kun".
Det er tilstrækkeligt at sige, at dette i høj grad reducerer de tilgængelige operationer for andre algoritmer, såsom Combos, eller Damage Map.
Og det er ikke alt! Der er et andet problem: Du er ikke alene i en kamp. Du skal helt sikkert have dine modstanderes tilgængelige celler for at kunne beskytte dig mod deres angreb. Og hvis de forskellige porrer begynder at fremkalde løg, er det endnu flere celler at beregne.
Kort sagt, hvis du begynder at ville beregne de tilgængelige celler i hele denne lille verden med disse metoder, vil det koste dig meget mere end en arm.
Således bruger vi en anden metode, meget mere effektiv: Gå fra nabo til nabo!
For det første, hvad er en "nabo"? Naboerne til en celle er simpelthen de celler, der støder op til den. Og vi taler åbenbart om de celler, der har en fælles side, de celler, der er direkte ved siden af dem, og ikke dem diagonalt.
De celler, der er i hjørnerne af kortet, har således en enkelt nabo. Celler på kanterne har to. Og alle de andre har fire.
Den første ting, du skal vide, hvordan du gør, er at hente naboerne til en celle. Ved at bruge funktionerne getCellX, getCellY og getCellFromXY, kan du nemt bestemme disse berømte naboer.
Når du kan hente en celles naboer, skal du afgøre, om den celle er "acceptabel". Det er klart, at hvis cellen er en hindring eller en porre er der, vil din porre ikke være i stand til at bevæge sig på den.
For at vide dette skal du bruge funktionerne isObstacle, isEmptyCell, isLeek eller getCellContent.
Princippet er faktisk ret simpelt. Også selvom det ikke nødvendigvis er nemt at sætte op for en begynder i programmering.
Din porre er derfor på en celle, og den har et vist antal MP at flytte. Den celle, den i øjeblikket er på, er i en afstand på 0 PM; Så langt så godt...
Hvis din porre har 1 MP, hvor kan den flytte sig? Nå, på de frie naboer til hans startcelle.
Hvad hvis han har 2 MP? Den kan derfor bevæge sig i 1 PM på de frie naboer til dens startcelle. Men også, for 2 PM, på de frie naboer til de frie naboer til startcellen.
Og så videre...
<img src="https://i.ibb.co/7jdzBZr/Tuto-Cell-Accessible-Iteration.gif" alt="Tuto-Cell-Accessible -Iteration" bor
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.