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]