Comprender los errores de tiempo de ejecución

Comprender los errores de tiempo de ejecución

> Tutorial de LeekScript

Codificas tu IA como un bendito. Las líneas se desplazan y los nombres de... No, espera, ya lo hemos visto. Esta vez, no más mensajes rojos en el editor, el compilador no tiene más secretos para ti. ¡Es hora del duelo! Observas tus puerros en su entorno natural, como Steve Irwin en el huerto. ¡Pasean, juguetean, se ametrallan, se ven felices!

No sospechan que en las sombras acechan formidables enemigos...

Demasiadas operaciones realizadas para esta ronda

Ahhh un clasico!! No se trata necesariamente de un error de IA, sino de un exceso del número máximo de operaciones (OPERATIONS_LIMIT establecido en 20 millones de operaciones). Consulte los tutoriales de Operaciones para obtener un artículo detallado.

¡Mi IA es diminuta! Cómo es posible ?

En este caso, podemos apostar por un bucle sin condición de parada, que se llama bucle infinito (ver Los bucles).

¿Un pequeño ejemplo? Aquí hay un pequeño código para usar el arma en el oponente siempre que tengamos PT: ![](https://imgur.com/5dSsTJK.png)

Estúpido, ¿eh? Bueno no ! Aparece un error durante la ejecución: Básico, línea 13 ▶ Interrupción AI: Error de ejecución: Demasiadas operaciones ejecutadas para esta ronda

¿Cuál podría ser el problema? Bueno, simplemente, siempre que la condición getTP() sea > 0, el bucle se ejecutará. Pero, ¿qué pasará cuando no podamos usar el arma? ¡Bueno, no vamos a perder ningún PT! ¡Y la condición siempre será cierta! Así que tenemos un bucle que se ejecutará hasta el infinito.

Para corregir este caso, podemos probar el retorno de la función useWeapon y analizar el resultado.

Posible arreglo:

¡Mi IA no es tan pequeña!

¡No es el tamaño lo que importa!

Sin leer tu IA, me costaría mucho corregirte... Todavía podemos citar algunas posibilidades:

Función desconocida

Así que esta vez tuve cuidado, puse el número correcto de parámetros en mi función. Entonces, sí, pero no puede poner cualquier parámetro en las funciones nativas. Estas funciones requieren ciertos tipos de entrada. Si intenta usarlos con los parámetros incorrectos, obtendrá un resultado similar:

AI Basic, línea 14 ▶ Función desconocida: useWeapon(función) AI Basic, línea 14 ▶ Función desconocida: useWeapon(null)

Aquí, la función useWeapon toma un argumento numérico (una constante WEAPON_...) y tratamos de darle una función, o un null. Obviamente, el generador gime sobre nosotros.

AI Basic, línea 11 ▶ Función desconocida: ordenar (número, nulo) sort espera una matriz como primer parámetro, y tratamos de darle un número.

IA básica, línea 8 ▶ Función desconocida: getNearestEnemyTo(array) getNearestEnemyTo toma una identificación de entidad como parámetro, no una matriz.

Este error también puede ocurrir debido a la falta de paréntesis:

Aquí almacenamos la función getNearestEnemy en la variable enemy, en lugar de su resultado (ver Funciones. Corrección: var enemigo = getNearestEnemy();

--