런타임 오류 이해

런타임 오류 이해하기

> LeekScript 튜토리얼

당신은 축복받은 사람처럼 AI를 코딩합니다. 줄이 스크롤되고 이름이... 잠깐만요, 우리는 이미 그것을 보았습니다. 이번에는 편집기에 더 이상 빨간색 메시지가 없으며 컴파일러에 더 이상 비밀이 없습니다. 결투 시간입니다! 당신은 채소밭에 있는 Steve Irwin처럼 자연 환경에서 부추를 관찰합니다. 그들은 돌아다니고, 장난치며, 서로 기관총을 쏘고, 행복해 보입니다!

그들은 그림자 속에 강력한 적들이 도사리고 있다는 사실을 의심하지 않습니다...

이번 라운드에 수행된 작업이 너무 많습니다.

아 클래식!! 이것은 반드시 AI 오류는 아니지만 최대 작업 수(OPERATIONS_LIMIT가 2천만 작업으로 설정됨)의 오버런입니다. 자세한 내용은 Operations 튜토리얼을 확인하세요.

내 AI는 작습니다! 어떻게 가능합니까?

이 경우 정지 조건 없이 루프에 베팅할 수 있으며 이를 무한 루프라고 합니다(The Loops 참조).

작은 예? 다음은 PT가 있는 한 적에게 무기를 사용하는 작은 코드입니다. ![](https://imgur.com/5dSsTJK.png)

바보 응? 음 ... 아니 ! 실행 중 오류가 나타납니다. 기본 13행 ▶ AI 인터럽트: 실행 오류: 이번 라운드에 너무 많은 작업이 실행됨

문제가 될 수 있는 것은... 아주 간단하게, getTP() 조건 > 0인 한 루프가 실행됩니다. 하지만 무기를 사용할 수 없으면 어떻게 될까요? 글쎄, 우리는 PT를 잃지 않을 것입니다! 그리고 조건은 항상 참입니다! 그래서 우리는 ad infinitiiiiiiiiiiiiiiiiiii를 실행할 루프를 가지고 있습니다.

이 경우를 수정하기 위해 useWeapon 함수의 반환을 테스트하고 결과를 분석할 수 있습니다.

가능한 수정 사항:

내 AI는 그렇게 작지 않아!

중요한 것은 크기가 아닙니다!

AI를 읽지 않으면 수정하기가 어려울 것입니다... 여전히 몇 가지 가능성을 인용할 수 있습니다.

알 수 없는 기능

그래서 이번에는 조심스럽게 함수에 적절한 수의 매개변수를 넣었습니다. 그렇습니다. 하지만 기본 함수에 아무 매개변수나 넣을 수는 없습니다. 이러한 함수에는 특정 입력 유형이 필요합니다. 잘못된 매개변수와 함께 사용하려고 하면 비슷한 결과가 나타납니다.

AI 기본, 14행 ▶ 알 수 없는 함수: useWeapon(function) AI 기본, 14행 ▶ 알 수 없는 기능: useWeapon(null)

여기서 useWeapon 함수는 숫자 인수(WEAPON_... 상수)를 사용하고 함수 또는 null을 제공하려고 합니다. 분명히 발전기가 우리를 비웃고 있습니다.

AI 기본, 11행 ▶ 알 수 없는 함수: 정렬(숫자, null) sort는 첫 번째 매개변수로 배열을 예상하고 배열에 숫자를 지정하려고 합니다.

기본 AI, 8행 ▶ 알 수 없는 함수: getNearestEnemyTo(array) getNearestEnemyTo는 배열이 아닌 엔티티 ID를 매개변수로 사용합니다.

이 오류는 괄호 누락으로 인해 발생할 수도 있습니다.

여기서는 getNearestEnemy 함수를 결과가 아닌 enemy 변수에 저장합니다(Functions 참조). 고침: 적군 = getNearestEnemy();

--