Вы находитесь на странице: 1из 29

Lehanius

Aulas sobre Variveis: do Bsico ao Avanado


Este tutorial foi concludo em 15/11/2008, mas fiz pequenas modificaes em sua redao, desde ento, para que ficasse mais claro e correto. Agora eu tambm o trago para o Santurio RPG Maker e espero que ele lhes seja til. http://www.santuariorpgmaker.com/forum/tutoriais-e-guias/aulas-sobre-variaveis-dobasico-ao-avancado-aula-4/msg2793/#msg2793

Prefcio
A carter de motivao, eis um exemplo de uma entre vrias coisas que podem ser feitas com o auxlio de variveis: <a href="http://www.youtube.com/watch?v=kV37P_9ZMU4" target="_blank">http://www.youtube.com/watch?v=kV37P_9ZMU4</a>

J havia algum tempo que eu pretendia criar um tutorial sobre variveis, pois j fiz coisas bastante interessantes com elas e gostaria de compartilhar esse conhecimento com a comunidade para que vocs tambm faam coisas interessantes. possvel aprender, sozinho, tudo que este tutorial oferece, mas ele direciona o estudo de variveis, esclarecendo alguns pontos e auxiliando no aprendizado. S no tenha preguia de aprender: o resultado muito recompensador.

Variveis
Introduo:

Objetivo: Ol a todos! Este tutorial tem o objetivo de auxiliar no entendimento e no uso de variveis, tanto em nvel bem bsico como em nvel mais avanado. No sou o "Mestre das Variveis", mas sei fazer muita coisa legal com o auxlio delas. Espero que vocs aprendam a fazer coisas ainda mais interessantes, usando a criatividade e o empenho.

Requerimentos: Este tutorial destinado a usurios j familiarizados com boa parte das funes do Maker mas que ainda no dominam o uso de variveis. Portanto, se voc no entende nada sobre switches, condies e outros comandos bsicos de eventos, sugiro que voc aprenda isso antes de ler este tutorial. Para compreender variveis necessrio, acima de tudo, no ter preguia de pensar. Para quem for novo no RPG Maker e no entender sobre switches e condies, recomendo estes tpicos: O que so eventos? por D3V1L_M4y_Cry [Tutorial] Switchs - timo e Perfeito para Novatos por GuiRPG [Tutorial] .:Bsico sobre Switchs:. por tanatos Planejamento: Dividirei o tutorial em seis aulas, partindo do nvel mais bsico at o nvel mais avanado (nos limites de meus conhecimentos, claro). A primeira aula explica o bsico sobre variveis e apresenta um exemplo simples. Recomendo que todos leiam a aula. J o exemplo bem bsico. As aulas posteriores sero, basicamente, tutoriais sobre sistemas especficos, com uso de variveis. Se voc est comeando a aprender sobre variveis agora, leia uma aula de cada vez, faa os exerccios propostos e explore um pouco algumas possibilidades, no Maker, antes de ir aula seguinte. ndice das Aulas: Aula 1: Noes bsicas. Aula 2: Familiarizao com a operao resto e com eventos de batalha. Aula 3: Noes de incremento e contagem. Aula 4: Aplicao de variveis aleatrias em sistemas mais complexos e verificao de resultados. Aula 5: Determinando posies e distncias. Aula 6: Inteligncia Artificial

Download:
http://www.4shared.com/file/70168649/c3aa8494/Variveis_Aulas_por_Lehanius_03110 8.html Sintam-se vontade para comentar, fazer crticas, sugestes, tirar dvidas, etc. As demonstraes dos exemplos esto todas no mesmo arquivo anexo.

Agradecimentos: Gostaria de agradecer a todos aqueles que contriburam, de alguma forma, para o desenvolvimento deste tutorial. Agradeo a todos que comentaram este tutorial (aqui ou no chat), principalmente queles que acompanharam as aulas e me deram um retorno sobre seus progressos na programao; agradeo a quem ajudou com sugestes e opinies, especialmente ao maniaconfloor; agradeo ao Falco e equipe da RMB pelo excelente local para public-lo; agradeo ao Dalkhaus pelo excelente trabalho feito, com muita boa vontade: o ttulo da demo e o logo com meu nome; agradeo, tambm, queles que ajudaram de forma indireta no aprimoramento da demo, com seus trabalhos: Flavio84, que comps duas das msicas (excelentes) presentes na demo

(Blues e Guerreiro, relativas ao bar e aos crditos, respectivamente) e ao Dark Chocobo, pelo script de remoo de ttulo. Por fim, agradeo, antecipadamente, queles que lerem este tutorial e comentarem e, tambm, queles que usarem o conhecimento adquirido aqui para aumentar o nvel de programao na comunidade maker brasileira.

Aula 1
Obviamente, a primeira coisa que devemos saber o que so as variveis. Se voc assistiu a todas suas aulas de matemtica atentamente, provavelmente j sabe o que elas so. Em todo caso, vou explicar: variveis so entidades matemticas que podem assumir valores numricos. "Eim?" De maneira mais simplificada, elas seriam como caixinhas onde voc pode colocar um nmero. Exemplificando: vamos supor uma caixa chamada X. Nessa caixa, colocarei o nmero 8. Agora, toda vez que eu escrever o nome da caixa, X, voc sabe que ela guarda o nmero 8. Porm, voc pode querer mudar o nmero que est dentro da caixa (varivel). Isso tambm possvel e, quando voc mudar o valor que a varivel armazena, ela retornar um nmero diferente quando voc perguntar o seu valor. Ento, vamos para o Maker! Voc j deve ter visto esta tela:

Bom, vamos entender suas funes:

Varivel: Aqui voc escolhe a varivel que ser usada na operao. Individual seleciona apenas uma varivel, enquanto Desde seleciona um intervalo de variveis, designadas por suas IDs. Operao: Aqui onde se escolhe a operao que ser realizada com a varivel. ela que indicar o que ser feito com a varivel (substituda, incrementada, subtrada, multiplicada, dividida ou dividida para retornar o resto). O valor da varivel operada (aquela escolhida acima) ser substitudo por um novo valor, de acordo com a operao e com o operando. Explicarei cada operao a seguir:

Substituir: Troca o valor da varivel pelo valor do operando. Ou seja: se nossa varivel guardava o valor 8 e nosso operando valia 5, a varivel passaria a guardar o valor 5. Incrementar: (+) Aumenta o valor da nossa varivel, somando o valor do operando a ela. Se nossa varivel valia 8 e incrementarmos a ela o operando de valor 5, o novo valor da varivel ser 8+5=13. Subtrair: (-) Subtrai-se o valor do operando de nossa varivel. Se nossa varivel valia 8 e nosso operando 5, a varivel passar a valer 8-5=3.

Multiplicar: (*) Multiplica a varivel pelo valor do operando. Para uma varivel valendo 8 e um operando valendo 5, temos que o novo valor da varivel 8*5=40. Dividir: (/) Divide o valor da varivel pelo valor do operando. Assim, para uma varivel valendo 8 e um operando valendo 5, teramos que o novo valor da varivel seria 8/5=1. "Ei, mas 8/5 d 1,6!" Sim, mas o Maker trabalha com valores inteiros, ento o resultado da diviso 1, com resto 3. s lembrar da tia da 4 srie! Resto: Retorna o resto da diviso pelo operando e o assossia varivel (guarda o resto na varivel). Assim, se dividirmos 8 por 5, temos o resto 3. Portanto, o novo valor da nossa varivel seria 3.

Operandos: Aqui voc colocar o valor a ser somado, subtrado, multiplicado, etc. Aperte com o boto direito do mouse sobre os operandos, para entend-los melhor. De qualquer forma, usaremos alguns em exemplos, deixando suas caractersticas mais claras.

Obs.: se voc no der valor a uma varivel, ela valer 0, at que voc mude isso. Certo, chega de bl bl bl e vamos praticar! Exemplo 1: Vamos fazer um evento simples: um fulano quer que voc adivinhe o nmero em que ele est pensando. Voc fala com ele e ele diz "Se voc adivinhar o nmero, de 1 a 5, que estou pensando, te dou 10G!". "Ah, voc fala como se fosse fcil, mas como vou fazer ele pensar em um nmero?" Vamos definir uma varivel (que chamarei de "Nmero Pensado") que nos dar um valor aleatrio, de 1 a 5, que ser o nmero pensado por ele. Depois, vamos definir uma segunda varivel, pedindo que o jogador insira um nmero nessa varivel. Vou dar o nome de "Nmero Chutado" a essa segunda varivel. Agora, faa a condio: se a varivel Nmero Chutado for igual varivel Nmero Pensado, aumente o dinheiro. Acompanhe as imagens abaixo para entender melhor:

Clique para Expandir.

Exerccio: Tente fazer esse mesmo evento, sem copiar diretamente das imagens. Copie apenas se voc no estiver mesmo conseguindo fazer sozinho. Repita o exerccio at que voc no precise mais olhar essas imagens.

Aula 2
A partir desta aula, aprenderemos baseando-nos em exemplos. Exemplo 2: Desta vez, faremos com que, durante uma batalha, toda vez que o HP do Alex for divisvel por 3, ele dir "Eita! Meu HP divisvel por 3!". "Qual a utilidade disso?" Nenhuma! Hehe, este exemplo meramente didtico. Mas voc pode adapt-lo para coisas teis. Lembram-se do Calculator do Final Fantasy Tactics? Voc pode reproduzir vrias habilidades dele com essa idia. Por exemplo, voc pode fazer uma habilidade que faa com que todos os inimigos com HP divisvel por 5 percam toda a MP, morram, fiquem paralisados, etc.

Vamos ao exemplo: V ao Database. L, v em Grupos Inimigos. H um campo para programar eventos, ali. Veja:

A condio Fim do Turno faz com que o evento execute ao final do turno. O tipo Turno faz com que ele execute apenas uma vez por turno (no caso, uma vez por final de turno). Agora vamos inicializar uma varivel (dar valor a ela). Vamos em opes de varivel e criar uma chamada "HP de Alex", que guardar (ser substituda) o valor do HP atual do Alex. Agora, para essa mesma varivel, faa com que ela seja dividida por 3 e retorne o valor do resto. Assim, quando o valor retornado for 0, o HP ser divisvel por 3. "Mas... mas agora a varivel 'HP do Alex' vai valer um nmero de 0 a 2!" verdade mas, no prximo turno, ela ser substituda novamente pelo valor do seu HP. Ou seja, a operao funcionar corretamente todo turno.

Certo, agora precisamos que uma mensagem seja mostrada quando o HP for divisvel por 3. Ento, em Condies, coloque que a varivel HP do Alex deve ser igual a 0, pois agora ela vale o resto da diviso, j que o turno ainda no acabou novamente. Agora basta colocar a mensagem dele, quando a condio for satisfeita. Veja as imagens abaixo para entender melhor:

Para que voc se familiarize mais com os eventos de batalha e variveis, recomendo que tente reproduzir o sistema deste link: [Tutorial] Msicas de Batalha Aleatria por Silverr Exerccio: Faa uma habilidade que chame um evento comum e que mate todos os inimigos que tiverem o HP divisvel por 5. Dica: Voc precisar fazer uma varivel (e uma condio) para cada inimigo; para mat-lo, use o comando mudar status.

Aula 3
Citao de: alex1313;76587 Ol, eu adorei o tpico, tem como fazer uma evoluo de magias por variaveis, estilo chrono trigger, por exemplo; precisa de pontos techs para ganhar uma nova magia. Tem como eu guardar isto numa variavel?

Quando atingir a quantidade de pontos , pimba o personagem ganha a nova magia! Me ajuda, vai, por favor!:rmb_20: Gostei da idia. Por que no fazemos uma aula sobre isso?

Exemplo 3: Vamos aproveitar a aula 2 e nos aventurar um pouco mais nos eventos de batalha. Dessa vez, temos uma motivao bastante interessante: o sistema de aprendizado de habilidades por vezes que elas so usadas. Este exemplo visa transmitir noes de incremento (soma) a variveis, com o objetivo de contagem. Essa noo importantssima para vrios tipos de sistemas. Alm disso, esta aula ampliar seus conceitos sobre eventos de batalha. Aqui cabe um agradecimento ao ethos 183, que me ajudou a ampliar meus limites com esse tipo de eventos.

Certo. No exemplo, faremos com que o nosso monge Clark evolua sua magia de cura de acordo com o nmero de vezes que ele a usa. Abra o database. Crie um evento comum chamado Magias Cura. Agora, v em Habilidades. Procure as magias cura, cura+ e cura divina. Faa com que essas 3 magias chamem o evento comum Magias Cura. Veja:

Agora sabemos que, toda vez que o Clark usar uma dessas 3 magias de cura, ele chamar o evento comum Magias Cura. "T, e da?" E a que podemos colocar esse evento pra contar quantas vezes ele foi chamado, ou seja: quantas vezes esse tipo de magia foi usada. Ento, criemos nosso contador, que chamaremos de Contador Cura: nesse evento comum, coloque opes de varivel: Contador Cura += 1 . Assim, cada vez que esse evento for ativado pelas magias, se somar 1 ao nosso contador. Agora que j conseguimos contar a quantidade de usos das magias, basta criar as condies para que o contador determine a evoluo das magias. Veja:

Perceba que, quando o Clark usar a magia Cura 2 vezes, ele a esquecer e aprender Cura +, evoluindo a sua primeira magia. Quando usar o mesmo tipo de magia mais 3 vezes (5 = 2 +3), ela evoluir denovo. Obviamente, esses nmeros esto pequenos, mas esta aula no sobre balanceamento de jogo. "Mas, se o Clark ficar usando a magia no menu, vai evoluir mais rpido." Bom, existe uma limitao pra isso: ele no pode usar uma magia de cura se estiver com a vida cheia. Mas possvel que o jogador explore outros tipos de habilidades, ento vamos mostrar como evitar isso: No database, mesmo, v na aba Status. Crie um status chamado Treinar Magias, que dever ser adicionado quando uma batalha comear e retirado apenas quando ela acabar. Veja:

Obviamente, voc no colocar um cone para esse status. No exemplo, colocarei apenas para que voc perceba quando o status adicionado. "Bom, mas e agora? Como fazemos pra adicionar esse status somente nas batalhas?" Ora, v aba Grupos Inimigos, que vocs j conhecem, e mande adicionar o status Treinar Magias, que ns criamos. importante que esse status seja adicionado logo no incio da batalha. Agora, basta voltar ao nosso evento comum Magias Cura e colocar o status como condio para que se aumente a contagem. Veja as imagens:

Note que nosso contador foi para dentro da condio. Pronto! Agora, sempre que o Clark estiver em batalhas, o status Treinar Magias ser adicionado e, quando ele usar magias de cura, ele vai acumulando pontos para que evolua para uma magia melhor.

Exerccio: Faa com que as habilidades de fogo da Sara tambm evoluam com o uso.

Aula 4
Exemplo 4: Certo, vocs j devem estar cansados desses exemplos bobos. Ento, vamos fazer algo mais interessante: uma corrida de cavalos. Vejam a pista de corrida e a configurao de um cavalo:

Note que coloquei uma switch condicional para a segunda pgina do evento, para que o

cavalo no comeasse a andar logo de incio. Depois, faremos um outro evento que ir ativar essa switch. No editar rota, coloquei o caminho que o cavalo deveria percorrer para chegar at o final. Pra isso, preciso contar os quadrados da pista. Observe que cada cavalo precisar de uma configurao de rota diferente. Selecione uma raia para cada um e conte os quadrados. Como queremos uma corrida justa, colocamos os 3 cavalos para percorrer a mesma distncia, no fim das contas. ", ficou to justa que at a velocidade igual!" Calma, calma... agora que entram as variveis. Como queremos que as velocidades variem, vamos criar 3 variveis chamadas Velocidade 1, Velocidade 2 e Velocidade 3. Queremos que essas variveis possam ter os valores 2, 3, 4, ou 5, que sero os valores correspondentes s velocidades dos cavalos. Vamos, ento, criar um evento, em processo paralelo, chamado "Controle de Velocidade". Agora, queremos que toda vez que a varivel Velocidade 1 for 2, ele tenha velocidade muito lenta; quando for 3, ter velocidade lenta; quando for 4 ter velocidade normal; quando for 5 ter velocidade rpida. Repita isso para cada cavalo. Veja como ficar o evento:

Lembrando que, para sistemas complexos, sempre importante comentar em seus eventos, para que fique bem organizado e voc saiba onde ajustar alguma coisa que no tenha ficado muito boa. Bom, agora j temos o controle de velocidade, mas as variveis ainda so iguais a 0. Acho que j hora de ajustar algumas coisas. Crie um evento: um personagem qualquer com quem voc dever falar para iniciar a corrida. Quando voc pedir para a corrida comear, ele dever inicializar as variveis de velocidade e ligar a switch de incio da corrida. Veja a primeira imagem abaixo:

Mas ainda temos um problema: as velocidades dos cavalos continuam iguais. Vamos, ento, criar um outro evento em processo paralelo, chamado Variao de Velocidade. Veja a segunda imagem acima. Note que, a cada 150 frames, ele somar um valor aleatrio entre -1 e 1 a cada uma das variveis, ou seja: ele pode diminuir a velocidade (-1), no modific-la (0) ou aumentla (1) de determinado cavalo. Pronto, agora j podemos dizer que isso uma corrida. Porm, podemos melhorar nosso sistema, ainda. Veja que, com o tempo, os valores de velocidade podem atingir valores que no pertencem ao intervalo [2;5], que so os valores possveis das nossas velocidades. Para isso, faremos com que a varivel Velocidade 1 (tambm a 2 e a 3) seja igual a 2 cada vez que ela ficar menor que 2; tambm, que seja igual a 5 cada vez que ficar maior que 5. Dessa forma, garantimos que as variveis sempre estaro entre 2 e 5. Isso foi feito no evento Controle de Velocidade Veja como ficou:

Mas ainda no estou satisfeito. "Nossa, voc nunca est satisfeito!" Bom, que ainda podemos melhorar um pouco. Da maneira como est, os cavalos mudam de velocidade sempre ao mesmo tempo. Isso fica um pouco estranho, no jogo. Ento, criaremos uma nova varivel chamada Cavalo Aleatrio, que armazenar o nmero do cavalo (escolhido aleatoriamente) que ir mudar sua velocidade. Se o nmero aleatrio for igual a 1, por exemplo, o cavalo 1 poder mudar sua velocidade. Isso tambm foi feito no evento Controle de Velocidade. Veja: Clique para Expandir.

Pronto, seus cavalos esto prontos para apostar uma corrida! Mas... "Mas o qu, agora?" Bom, que tal voc poder apostar em um dos cavalos? Vamos fazer com que aquele ano que pergunta se pode comear a corrida nos pea para apostar em um dos cavalos. Voc j aprendeu como armazenar valores em variveis, com armazenar nmero. Ento, veja como ficou o ano:

Agora precisamos de outra varivel, que se chamar Cavalo Vencedor, para que possamos comparar com o valor da varivel do cavalo apostado. Mas pra isso, precisamos de uma forma que determine qual foi o cavalo que ganhou a corrida. Acho que a programao do evento para determinar o cavalo vencedor renderia uma outra aula. Ento, vou fazer uma gambiarra, por enquanto. Em uma aula posterior, explicarei como fazer isso de maneira mais "correta". O que faremos o seguinte: adicionaremos rota dos cavalos (lembra que editamos suas rotas?), no final, um movimento de olhar para cima. Assim, quando cada cavalo chegar ao final da pista, ele olhar para cima, sendo essa a nica vez que ele estar olhando pra cima. Assim, poderemos determinar quem foi o primeiro cavalo a chegar "perguntando" quem foi o primeiro a olhar pra cima. Vamos criar uma condio para cada cavalo olhar para cima, com o efeito de substituir o valor da varivel Cavalo Vencedor pelo nmero desse cavalo. Alm disso, para que a "leitura" do cavalo vencedor s seja feita uma vez, vamos desligar esse nosso evento, depois que ele determinar quem venceu, ligando uma switch local que leva para a segunda pgina, em branco.

Agora, s para que possamos comprovar se est certo, v segunda pgina do nosso ano, que estava em branco, e compare as variveis Cavalo Apostado e Cavalo Vencedor. Se elas forem iguais, seu cavalo venceu!

Exerccio: Crie sua prpria corrida de cavalos e faa com que se possa apostar na posio de todos os cavalos. S ganha quem acertar a ordem de chegada de todos os cavalos!

Вам также может понравиться