4 de junho de 2015 13:32:40 ART
Aula 7: Boas Práticas Parte 1
www.mundorpgmaker.com This work is licensed under a Creative Commons Atribuição-Uso não-comercial-Compartilhamento pela mesma licença 3.0 Unported License .
Índice
7.0 - Os recuos
7.1 - Os comentários
7.2 - Estruturas de repetição e arrays
7.3 - Conclusão
7.4 - Dever de casa
7.0 - Os recuos
Nas aulas passadas, eu estava falando superficialmente das coisas.Quando se é scripter, existem boas práticas que podemos tomar.Essas práticas podem facilitar uma posterior modificação de um script seu, pode ajudar na correção de bugs e na próprio entendimento de um código.Não considero obrigatório executar essas práticas, porém é MUITO recomendável.Começarei falando então dos recuos.
Quando falo dos recuos, me refiro a usar espaços e tabulações no código: nós scripters podemos utilizar recuos para diferenciar definições, diferenciar estruturas de repetição e estruturar de decisão.Normamelmente para recuos usamos tabulações.Por exemplo, veja esse código com recuos ruins:
def somar soma = 5 + 6 p soma end
Uma regra muito importante: subimos um recuo toda vez que começamos um "def" e um "class" ou toda vez que usamos "if", "case", e todas aquelas estruturas.Em geral, subimos um recuo quando começamos qualquer coisa que usa o "end", e deixamos o "end" com a mesma quantidade de recuos dessa coisa. Quando digo recuos no RMXP, quero dizer uma tabulação, para usar o recuo pressione TAB uma vez.Se bem que, quando você começa uma nova linha, o editor de scripts já faz um recuo de uma tabulação para você.Vamos melhorar o código passado aos poucos.Primeiro, vamos deixar "soma = 5 + 6" com um recuo apenas, pois ele vem logo após o nosso "def":
def somar soma = 5 + 6 p soma end
Deixemos agora o "p soma" com um recuo apenas também:
def somar soma = 5 + 6 p soma end
Agora falta deixar o "end" com a mesma quantidade de recuos que "def somar".Nosso código ficará assim:
def somar soma = 5 + 6 p soma end
Affes, para que usar recuos Thiago, nem percebi diferença na hora de executar o código?!
Usar recuos enfatiza o fato de um código estar dentro de um def/classe/if/etc.No caso passado, para olhar o que estava dentro do "def somar", bastaria apenas observar os recuos, ou seja, os recuos facilitam na pesquisa dentro de um código, caso queira modificá-lo.Além disso,eles deixam nosso código muito mais bonito =D.
Mais um exemplo
def decisao num1 = 5 num2 = 5 if num1 == num2 if num1 == 5 p "Que coisa Idiota" end end end
Cons bons recuos, esse código ficaria assim:
def decisao num1 = 5 num2 = 5 if num1 == num2 if num1 == 5 p "Que coisa Idiota" end end end
Observe que subimos um recuo ao chegarmos em "def decisao", "if num1 == num2", "if num1 == 5", e depois voltamos um recuo para cada "end" que digitamos.
7.1 - Os comentários
Os comentários são recursos muito úteis ao se fazer scripts.Com eles, você pode deixar instruções no seu script, documentar ele, e muito mais. Eu já havia falado sobre eles na aula 4: aqui irei demonstrar como os comentários podem ser úteis.Lembrando, os comentários so servem para documentar um script, e eles não executam nenhuma ação.
Um comentário é a parte verde dos scripts.Podemos usar os comentários para explicar o que um método/classe faz, assim como nesse código da Window_Base:
#-------------------------------------------------------------------------- # Desenhar Gráfico # # actor : Herói # x : Desenhar a partir da coordenada x # y : Desenhar a partir da coordenada y #-------------------------------------------------------------------------- def draw_actor_graphic ( actor , x , y ) bitmap = RPG :: Cache . character ( actor . character_name , actor . character_hue ) cw = bitmap . width / 4 ch = bitmap . height / 4 src_rect = Rect . new ( 0 , 0 , cw , ch ) self . contents . blt ( x - cw / 2 , y - ch , bitmap , src_rect ) end
Observe que comentário interessante! Ele explica exatamente o que o método draw_actor_graphic faz, e explica também o que é necessário passar ao método ao executá-lo: o actor, a coordenada x e a coordenada y.Eu aprovo esse tipo de comentário, se bem que eu nem uso kkkkkkk, isso porque geralmente não quero explicar esse tipo de coisa para quem usa meus scripts.O que não justifica, já que esse tipo de comentário ajuda até você mesmo a se lembrar o que um método que você fez faz.Legal não é?O melhor de tudo é que os scripts do RPG Maker estão quase todos bem comentados, o que facilita até mesmo você aprender sozinho algumas coisa desses scripts.
Outro comentário interessante é esse que usei em um dos meus scripts:
# TSDA Cancel # Última atualização: 29/05/2010 # ----Créditos # thiago_d_d - por fazer o TSDA Cancel # #-------------------------------------------------------------- # * Características #-------------------------------------------------------------- # + Adiciona a possibilidade do cancelamento de habilidades,ou # seja,certas habilidades,dependendo da sorte,poderão não # funcionar caso o alvo da habilidade tenha uma # inteligência menor que o usuário da habilidade. # #-------------------------------------------------------------- # * Instalação #-------------------------------------------------------------- # Cole esse script acima de Main # #-------------------------------------------------------------- # * Configuração #-------------------------------------------------------------- # Para deixar mais maleável,é deve-se especificar as # habilidades que podem ser canceladas,mudando a linha # na qual está escrito CANCEL_IDS,no module TSDA. As IDS # das habilidades que podem ser canceladas devem ser separadas # com vírgula e devem estar entre []. #==============================================================
Observe que coloquei esse comentário no começo do meu script, pois ele contém as intruções do tal script.Essa é uma ÓTIMA prática e eu recomendo.
7.2 - Estruturas de repetição e arrays
Às vezes, podemos fazer códigos repetitivos, que poderiam ser resumidos em uma estrutura de repetição.Usar estruturas de repetição deixa o código mais modificável e legível.Talvez o único problema é pensar em como usar estruturas de repetição.Para ficar mais fácil, darei aqui um pequeno exemplo.Aqui vai um código repetitivo:
def somar soma = 0 soma += 1 soma += 5 soma += 10 soma += 16 soma += 20 soma += 30 soma += 40 p soma end
Observe como o código ficou repetitivo!Somamos números várias vezes a variável soma, quando poderíamos ter resumido tudo isso em poucas linhas.O código melhor poderia ficar assim(há várias outras formas):
def somar soma = 0 for i in [ 1 , 5 , 10 , 16 , 20 , 30 , 40 ] soma += i end p soma end
Usando uma array, ficaria melhor ainda, inclusive de modificar:
def somar array = [ 1 , 5 , 10 , 16 , 20 , 30 , 40 ] soma = 0 for i in array soma += i end p soma end
7.3 - Conclusão
Creio eu que essa aula foi bem simples, porém com ela creio que você poderá se tornar um/uma scripter bem melhor. Essa é apenas a primeira parte de "Boa Práticas", haverá mais aulas desse tipo.Na próxima aula iremos falar mais sobre scenes, talvez podemos fazer um script completo e útil pela primeira vez!Aguardem...Espero que tenham gostado!Não esqueçam do dever =D.
7.4 - Dever de Casa
É um dever bem chatinho, realmente. Peço que me entreguem esse dever por Mensagem Pessoal, pois não quero cola!É o seguinte, modifique os seguinte script corrigindo os recuos:
class TSDA FISH_ITENS =[ 31 , 32 , 33 ] def fish if @pesca == nil @pesca = false end return @pesca end def start_fishing @pesca = true @phase = 0 $game_temp . fish_time = 500 @is_fishing_now = false @to_finish = false @fish_string = "Esperando um peixe" end def set_fish_string ( f ) @fish_string = f end def is_fishing_now if @is_fishing_now == nil @is_fishing_now = false end return @is_fishing_now end def set_fishing ( f ) @is_fishing_now = f end def to_finish =( f ) @to_finish = f end end
[center]