Até agora, nós vimos como
criar um vetor e acessá-lo
Assim como em outras
variáveis, no entanto,
uma das coisas bem legais sobre vetores
é a maneira que podemos modificá-los
dinamicamente enquanto um programa roda.
Ok, deixe-me mostrar o que
eu quis dizer com isso.
Então aqui nós temos este programa que
mostra Hopper segurando
alguns balões, super fofo.
E então isso funciona da seguinte forma:
nós temos esse vetor xPositions
que possui dois números dentro que
dizem onde queremos colocar os balões.
E aqui embaixo nós temos
esse laço de repetição,
e esse laço passa por todos
os elementos desse vetor.
Para cada um deles, é desenhado uma linha
do "x" para baixo até o braço do Hooper,
e então desenha uma elipse em "x"
que é 30x40 pixels, e esse é nosso balão.
Ok, legal. Então agora que
sabemos como isso funciona,
sabemos que se quisermos
outro balão aparecendo,
podemos adicionar um número a este
vetor, certo? Como, por exemplo, 300.
Lindo. Agora nós possuímos
três balões para um Hopper feliz.
Mas digamos que nós queremos dar
a um usuário que não sabe programar
a habilidade de adicionar novos balões.
Então queremos dar o
programa a um usuário e falar:
"Ei, você pode clicar em qualquer
lugar, e o balão irá aparecer."
Isso não seria legal? Eu acho que seria.
Então, como faríamos isso?
Queremos nosso programa mudando
ao longo do tempo, certo?
Toda vez que o usuário clicar,
irá aparecer um balão lá.
Então vamos começar movendo
tudo para uma função desenhar
assim será fácil de mudar
ao longo do tempo.
Nós iremos mover isso para baixo
e colocar a indentação aqui. Ok, ótimo.
Agora nós queremos checar e ver,
o usuário está pressionando o mouse agora?
Bem, podemos fazer isso com o nosso "if".
Então if(mousePressionado), e
então nós faremos alguma coisa.
O que nós iremos fazer?
Se o mouse é pressionado,
então nós queremos de alguma forma
adicionar um número a este vetor.
E vamos deixar isso com apenas
dois elementos de novo. Ok.
Nós queremos adicionar um
número a este vetor de alguma forma.
Bem, eu irei mostrar uma
maneira que podemos fazer isso.
Então nós podemos dizer
xPositons[2] = mouseX;
Muito bem, e deixe-me
mostrar que isso funciona.
Eu cliquei, e eu tenho um balão.
Então, o que isso faz?
Isso disse, xPositons[2] disse ache esse
vetor e encontre o elemento na posição 2,
e lembre-se que este na
verdade é o terceiro elemento,
porque nossos vetores começam do zero.
E, se você olhar, não existe terceiro
elemento, certo? Não existe nada no lugar.
Então isso diz para achar isto, e
então coloque o mouseX nessa posição.
Bem, já que não existe nada lá, então
muda de nada para mouseX.
E agora nosso vetor possui
três itens de tamanho,
e esse laço "for" aqui embaixo
quando passa pelo vetor,
irá desenhar o terceiro balão.
Isso é bem legal, e deixe-me clicar mais
um pouco para te mostrar como funciona.
Você vê que toda vez que eu clico, ele
continua desenhando o terceiro balão
onde quer que eu clique com meu mouse.
E isso é porque estamos constantemente
sobrescrevendo a posição dois.
A coisa com o índice dois.
Estamos constantemente
sobrescrevendo com o atual mouseX.
Então nós sempre teremos três balões
porque temos esse aqui na posição zero,
esse na posição um e nós iremos
constantemente mudar a posição dois. Ok?
Então isso é legal, mas o
que nós realmente queremos
é deixar o usuário criar
vários balões, certo?
Para que toda vez que o usuário
clicar, apareça um novo balão.
Então isso significa que devemos
constantemente incrementar
o índice do elemento do vetor
em que estamos guardando.
Não queremos que seja
dois todas as vezes,
nós queremos que seja d\ois, e três,
e depois quatro, e cinco, e seis, etc.
Poderíamos fazer isso tendo uma
pequena variável de contagem.
Então digamos newInd=2;
Isso é como ela vai ser inicializada,
então iremos dizer newlnd em vez de dois.
E então o que nós realmente
queremos fazer é dizer newlnd++
Então cada vez adicionamos um a ela.
Iremos começar com dois,
então se torna três e depois quatro.
Assim, toda vez que é pressionado,
aparecem mais. Então vamos testar.
Ta-da! Vários balões.
Festa de balões. Woo!
Então isso é legal, não é? Mas essa
não é a melhor maneira de fazer isso
pois acontece que adicionar itens a um
vetor é algo que queremos fazer muito.
Então temos uma maneira
mais fácil de fazer do que essa.
Deixe-me deletar algumas
coisas que eu fiz.
Tudo bem, então nós não precisamos
disso. Vamos deixar isso comentado.
Então fazemos isso chamando
xPositions.push e então mouseX.
Então o que estamos fazendo aqui, estamos
chamando esse método no vetor xPositions.
Estamos chamando como
um comando em um vetor.
Estamos dizendo ao vetor,
"Olha, coloque esse novo valor, que
é mouseX, coloque isso no final do vetor."
Então toda vez que for chamado,
toda vez que pressionar o mouse,
irá olhar para o mouseX
e colocá-lo no final do vetor.
Assim, o vetor ficará maior e maior.
Então vamos recomeçar e tentar isto.
Ta-da, funcionou! E é bem menos código
do que nós tínhamos antes. Tudo bem?
Assim, a maior parte do tempo,
você vai querer usar o envio,
se for adicionar coisas
para seu vetor desse jeito.
E é elegante porque assim você pode ter
vetores que crescem durante o programa.
Como quando você tem uma animação
ou usuários fazendo coisas,
e então você pode fazer muito mais.
Então você viu 90% do que provavelmente
vai fazer com um vetor e jeitos de usá-los
Mas ainda existe muitas
utilidades para um vetor.
Então se você tiver dúvidas,
pergunte na conversa.
Mas tenha certeza de
dominar o básico primeiro.
Legendado por [Gabriel Mello Fernandes]
Revisado por [Alberto Oliveira]