As mesas

As mesas

> Tutorial LeekScript

Você certamente conhece a analogia entre variáveis de computador e caixas: O nome da variável está no rótulo da caixa; quando você chama a variável, você apenas olha o que está na caixa.

Bem, podemos fazer uma analogia semelhante entre pinturas e uma cômoda. Uma cómoda é um móvel que contém várias gavetas... uma mesa é uma entidade que contém várias variáveis. Esquematicamente, isso é tudo.

Inicializa um array

Uma matriz é representada por colchetes. O exemplo abaixo cria um array vazio:

var foo = [];

Reconhecemos a palavra-chave var que já usamos para variáveis. foo é, portanto, uma variável do tipo array.

var fruta = ["pêra", "banana", "maçã"];

Aqui inicializamos o array com 3 valores. Basicamente, colocamos a corrente "pêra" na primeira gaveta, "banana" na segunda e "maçã" na terceira. Se tivéssemos invertido as 2 primeiras frutas, teríamos um quadro diferente.

É gostoso de arrumar, mas tem que saber usar... Bem, é simples se você souber contar a partir de 0 (porque na computação gostamos de contar a partir do zero!)

A primeira gaveta tem o número 0, a segunda o número 1 e a terceira o número 2. Se tivéssemos uma mesa com 100 células, a última teria portanto o número 99. Ok, e agora? É simples, para usar uma caixa, basta indicar seu número entre colchetes:

debug(fruta[1]);

Este exemplo, portanto, exibirá a caixa número 1 (a segunda caixa, portanto) da tabela chamada frutas. Aqui, portanto, exibirá a string "banana".

E se quisermos alterar o valor? Nada poderia ser mais simples, fazemos como para as variáveis, especificando sempre a caixa a modificar:

fruta[1] = "cereja"; depurar(fruta); // produzirá ["pêra", "cereja", "maçã"]

Simples, certo?

E se eu pedir uma caixa que não existe? Tipo no exemplo anterior, peço fruta[3]?

Bem visto! A terceira caixa é a número 2, então a caixa número 3 não existe! Neste caso, o valor ''null'' é retornado.

Bem, eu tentei o seu código abaixo e mostra coisas estranhas, parece que quebrei tudo!

var fruta = ["pêra", "banana", "maçã"]; depurar(fruta); // produzirá ["pêra", "banana", "maçã"] fruta[3] = "abacaxi"; depurar(fruta); // produzirá ["pêra", "banana", "apple", "abacaxi"] fruta[50] = "cereja"; depurar(fruta); // produzirá [0:"pêra", 1:"banana", 2:"apple", 3:"abacaxi, 50:"cereja"]

Não se preocupe, jovem Padawan, você não quebrou nada! Como as caixas entre o último elemento da matriz (número 3) e aquele que você deseja adicionar (número 50) não existem, o leekscript transformou sua matriz em uma matriz associativa. Vou explicar isso para você no final deste tutorial. Por enquanto, considere que é uma mesa normal onde há um furo na numeração das caixas.

Algumas funções leekwars nos fornecem diretamente um array. Este é, por exemplo, o caso da função getAliveEnemies.

Procurar uma tabela

Tudo muito bem. Agora, eu sei como criar tabelas, mas como faço, por exemplo, exibir os nomes de todos oponentes? Não sei quantos são e não vou fazer tudo na mão!

Efetivamente. A primeira ideia seria fazer

var inimigos = getAliveEnemies(); debug( getNome(inimigos[0]) ); debug( getNome(inimigos[1]) ); debug( getNome(inimigos[2]) ); debug( getNome(inimigos[3]) ); debug( getNome(inimigos[4]) );

Mas se houver mais de 5 inimigos, haverá escassez e, se houver menos, há linhas extras! Para descobrir quantos quadrados um array tem, a função é count.

var nbEnemies = count(inimigos); debug("há " + nbEnemies + " inimigos ainda vivos.");

Agora, como atravessar a mesa sem esforço? Por exemplo, se você quer saber onde estão os obstáculos no mapa, getObstacles é para você... Mas a mesa tem cerca de cem caixas... não é prático fazer uma a uma! É agora que os Les Boucles revelam todo o seu potencial!

var obstáculos = getObstacles(); var nbObstacles = count(obstáculos);

for (var k=0; k<nbObstáculos; k++) { debug("caixa " + obstáculos[k] + " é um obstáculo."); }

Para mais precisão, volte ao tutorial em The Loops.

Então, para o nome dos inimigos, todo o script seria

var inimigos = getAliveEnemies(); var nbEnemies = count(inimigos); for (var k=0; k<nbInimigos; k++) { var nomeNome = getNome( inimigos[k] ); debug(nomedoinimigo + "ainda está vivo."); }

Adicionando e removendo itens

Já vimos como adicionar um elemento em um array mas não é prático porque você tem que fazer constantemente apelar para o tamanho da matriz.

Para facilitar a vida, você pode simplesmente usar a função push.

var fruta = ["pêra", "banana", "maçã"]; push(f