As listas

As listas

> Tutorial

Uma lista é usada para armazenar diversos valores em uma ordem específica.

Criando e usando uma lista

Você pode criar uma lista com a seguinte sintaxe:

A primeira posição em uma lista é a posição 0. Você acessa um elemento específico da lista com:

Muitas funções estão disponíveis para manipulação de listas, na parte "Listas" da Documentação. Os mais notáveis são:

Iterando sobre uma lista com o loop for in

Você pode iterar sobre cada um dos valores em uma lista usando um loop for simples, como este:

Mas existe uma variante do loop for que torna possível iterar sobre cada um dos valores de uma lista de forma mais simples, o loop for in. O código a seguir é equivalente ao anterior, mas é mais conciso:

Classificação de dano da arma e condição do finalizador

Nossa IA atual tem um problema que você deve ter notado: quando o inimigo está quase morto, nosso alho-poró usará seus reforços, curas, escudos antes de usar sua arma, enquanto ele poderia acabar com o inimigo!

Para melhorar esta situação no final da luta, estimaremos o dano que podemos infligir ao inimigo para saber se podemos finalizá-lo.

Começamos usando a função getWeaponEffects que lista os efeitos de uma arma:

Um efeito é em si uma lista contendo os seguintes 6 elementos: [tipo, min, max, turnos, alvos, modificadores]. O dano final para este efeito é calculado:

Adicione o dano ao total:

Terminamos com uma condição: se o dano total for maior que a vida do inimigo, vamos matá-lo: atacamos! Caso contrário, esperamos com marcadores:

> Dica: você pode acessar um intervalo de uma lista usando a sintaxe list[2:8].

> Dica: você pode aninhar listas: lista em uma lista [ [1, 2, 3] ] e acesso a uma lista em uma lista: liste[0][0]

❓ Questionário

Para que serve uma lista?

Armazenar vários valores Classificar valores Execute instruções em paralelo Realize vários cálculos

Quais códigos são válidos?

var a = [1, 2, 3] a[0] + a[2] var [a] = [1, 2] var[1, 2, 3] count([1, 2, 3]) [ [1, 2], [3, 4], [5, 6] ] lista[5][10]

IA completa

```leekscript // Pegamos a arma se não estiver equipada if (getWeapon() == nulo) { setWeapon(WEAPON_PISTOL) }

// Pegamos o inimigo mais próximo var inimigo = getNearestEnemy ()

// Saudamos nosso oponente if (getTurn() == 1) { say("Oi " + getNome(inimigo) + "!") }

// Avançamos em direção ao inimigo moveToward(inimigo)

var efeitos = getWeaponEffects() // lista de efeitos var total = 0 // Contaremos todos os danos for (var efeito em efeitos) { // itera sobre todos os efeitos if (efeito[0] == EFFECT_DAMAGE) { // se o efeito for dano var minDamage = effect[1] // dano mínimo da arma var BoostedDamage = minDamage * (1 + getStrength() / 100) // aumentado em força var Finaldamage = Boosteddamage * (1 - getRelativeShield(enemy) / 100) - getAbsoluteShield(enemy) // reduzido por escudos