> LeekScript-zelfstudie
Je codeert je AI als een gezegende. De regels scrollen, en de namen van... Nee wacht, dat hebben we al gezien. Deze keer geen rode berichten meer in de editor, de compiler heeft geen geheimen meer voor je. Het is dueltijd! Je observeert je prei in zijn natuurlijke omgeving, zoals Steve Irwin in de moestuin. Ze lopen rond, ze stoeien, ze machinegeweren elkaar, ze zien er gelukkig uit!
Ze vermoeden niet dat in de schaduw formidabele vijanden op de loer liggen...
Ahhh een klassieker!! Dit is niet noodzakelijkerwijs een AI-fout, maar een overschrijding van het maximale aantal bewerkingen (OPERATIONS_LIMIT ingesteld op 20 miljoen bewerkingen). Bekijk de Operations tutorials voor een gedetailleerd artikel.
In dit geval kunnen we wedden op een lus zonder stopvoorwaarde, wat een oneindige lus wordt genoemd (zie De lussen).
Een klein voorbeeld? Hier is een kleine code om het wapen op de tegenstander te gebruiken zolang we PT hebben: 
Stom hè? Welnee ! Er verschijnt een fout tijdens de uitvoering: Basic, regel 13 ▶ AI Interrupt: Uitvoeringsfout: te veel bewerkingen uitgevoerd voor deze ronde
Wat zou het probleem kunnen zijn... Simpel gezegd, zolang de getTP() voorwaarde > 0 is, zal de lus worden uitgevoerd. Maar wat gebeurt er als we het wapen niet kunnen gebruiken? Nou, we gaan geen PT verliezen! En de voorwaarde zal altijd waar zijn! Dus we hebben een lus die ad infinitiiiiiiiiiiiiiiiiiiiiii zal lopen.
Om dit geval te corrigeren, kunnen we de terugkeer van de useWeapon-functie testen en het resultaat analyseren.
Mogelijke oplossing:
Het gaat niet om de grootte!
Zonder je AI te lezen, zou ik je moeilijk kunnen corrigeren... We kunnen nog een paar mogelijkheden noemen:
lineOfSight-functie kost u 15 bewerkingen, gebruik ervan in 3 geneste lussen kost u!getCellToUseWeapon mogen niet worden misbruikt! Het is handig om het resultaat van functies die veel verbruiken op te slaan of te hercoderen.Dus deze keer was ik voorzichtig, ik plaatste het juiste aantal parameters in mijn functie. Dus ja, maar je kunt niet zomaar elke parameter in de native functies plaatsen. Deze functies vereisen bepaalde invoertypes. Als u ze met de verkeerde parameters probeert te gebruiken, krijgt u een vergelijkbaar resultaat:
AI Basic, regel 14 ▶ Onbekende functie: useWeapon(function) AI Basic, regel 14 ▶ Onbekende functie: useWeapon(null)
Hier neemt de useWeapon-functie een getalargument (een WEAPON_...-constante) en we proberen het een functie of een null te geven. Het is duidelijk dat de generator op ons kreunt.
AI Basic, regel 11 ▶ Onbekende functie: sort(getal, null) sort verwacht een array als eerste parameter, en we proberen er een nummer aan te geven.
Basic AI, regel 8 ▶ Onbekende functie: getNearestEnemyTo(array) getNearestEnemyTo neemt een entiteits-ID als parameter, niet als een array.
Deze fout kan ook optreden vanwege ontbrekende haakjes:
Hier slaan we de functie getNearestEnemy op in de variabele vijand, in plaats van het resultaat (zie Functies. Fix: var vijand = haalDichtstbijzijndevijand();
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.