Forstå Runtime Errors

Forstå Runtime Errors

> LeekScript-vejledning

Du koder din AI som en velsignet. Linjerne ruller, og navnene på... Nej vent, det har vi allerede set. Denne gang er der ikke flere røde beskeder i editoren, compileren har ikke flere hemmeligheder for dig. Det er duel tid! Du observerer dine porrer i deres naturlige omgivelser, som Steve Irwin i køkkenhaven. De går rundt, de boltrer sig, de maskinpistoler hinanden, de ser glade ud!

De har ikke mistanke om, at der i skyggerne lurer formidable fjender...

For mange operationer udført for denne runde

Ahhh en klassiker!! Dette er ikke nødvendigvis en AI-fejl, men en overskridelse af det maksimale antal operationer (OPERATIONS_LIMIT sat til 20 millioner operationer). Tjek Operations tutorials for en detaljeret artikel.

Min AI er lille! Hvordan er det muligt?

I dette tilfælde kan vi satse på en loop uden en standsningsbetingelse, som kaldes en uendelig loop (se The Loops).

Et lille eksempel? Her er en lille kode til at bruge våbnet på modstanderen, så længe vi har PT: ![](https://imgur.com/5dSsTJK.png)

Dumt hvad? Altså nej ! Der opstår en fejl under udførelsen: Grundlæggende, linje 13 ▶ AI-afbrydelse: Udførelsesfejl: For mange operationer udført for denne runde

Hvad kan problemet være... Tja ganske enkelt, så længe getTP()-betingelsen > 0, vil løkken køre. Men hvad vil der ske, når vi ikke kan bruge våbnet? Nå, vi kommer ikke til at miste nogen PT! Og betingelsen vil altid være sand! Så vi har en løkke, der vil køre ad infinitiiiiiiiiiiiiiiiiiiiiii.

For at rette op på dette tilfælde kan vi teste returneringen af 'useWeapon'-funktionen og analysere resultatet.

Mulig rettelse:

Min AI er ikke så lille!

Det er ikke størrelsen, der betyder noget!

Uden at læse din AI ville jeg have svært ved at rette dig... Vi kan stadig nævne et par muligheder:

Ukendt funktion

Så denne gang var jeg forsigtig, jeg satte det rigtige antal parametre i min funktion. Så ja, men du kan ikke sætte en hvilken som helst parameter i de oprindelige funktioner. Disse funktioner kræver visse inputtyper. Hvis du prøver at bruge dem med de forkerte parametre, får du et lignende resultat:

AI Basic, linje 14 ▶ Ukendt funktion: useWeapon(function) AI Basic, linje 14 ▶ Ukendt funktion: useWeapon(null)

Her tager funktionen useWeapon et tal-argument (en WEAPON_...-konstant), og vi forsøger at give den en funktion eller en nul. Det er klart, at generatoren stønner over os.

AI Basic, linje 11 ▶ Ukendt funktion: sort(antal, null) sort forventer et array som første parameter, og vi forsøger at give det et tal.

Basic AI, linje 8 ▶ Ukendt funktion: getNearestEnemyTo(array) getNearestEnemyTo tager et enheds-id som en parameter, ikke en matrix.

Denne fejl kan også opstå på grund af manglende parenteser:

Her gemmer vi 'getNearestEnemy'-funktionen i variablen 'enemy' i stedet for dens resultat (se Functions. Rette: var enemy = getNearestEnemy();

--