<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Lucas Liuti</title>
    <description>The latest articles on DEV Community by Lucas Liuti (@lliuti).</description>
    <link>https://dev.to/lliuti</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1263623%2F679363fa-7c67-453a-b0fa-e02cc3f5da25.jpeg</url>
      <title>DEV Community: Lucas Liuti</title>
      <link>https://dev.to/lliuti</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lliuti"/>
    <language>en</language>
    <item>
      <title>Estruturas de repetição em GDScript</title>
      <dc:creator>Lucas Liuti</dc:creator>
      <pubDate>Mon, 20 May 2024 22:14:13 +0000</pubDate>
      <link>https://dev.to/lliuti/estruturas-de-repeticao-em-gdscript-59h1</link>
      <guid>https://dev.to/lliuti/estruturas-de-repeticao-em-gdscript-59h1</guid>
      <description>&lt;h2&gt;
  
  
  Introdução a Laços de Repetição em GDScript
&lt;/h2&gt;

&lt;p&gt;Os laços de repetição ou estruturas de repetição ou loops, são fundamentais em qualquer linguagem de programação. &lt;br&gt;
Eles servem para executar blocos de código repetidas vezes, com base em uma condição específica. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Por que usar laços de repetição?&lt;/strong&gt;&lt;br&gt;
Experimente printar na tela todos os números ímpares de 1 até 1 milhão. Talvez pareça cansativo, não é?&lt;br&gt;
Bom, os laços de repetição são essenciais justamente para automatizar códigos que precisam ser executados várias vezes. &lt;/p&gt;

&lt;p&gt;Em GDScript, existem principalmente dois tipos de laços: o &lt;strong&gt;for&lt;/strong&gt; loop e o &lt;strong&gt;while&lt;/strong&gt; loop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;For&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
O loop for é usado quando se sabe previamente quantas vezes um bloco de código precisa ser executado. Ele itera sobre uma sequência de elementos, como um array (lista) ou uma faixa de números.&lt;br&gt;
Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for i in range(10):
    print("O valor de i é:", i)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neste exemplo, o loop for executa o bloco de código 10 vezes, uma para cada valor de i na faixa de 0 a 9. &lt;strong&gt;Sim, o primeiro valor é zero.&lt;/strong&gt; Isso se chama "indexado por zero" ou "zero based indexing".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;While&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
O loop while é utilizado quando a condição para continuar executando o bloco de código não é conhecida antecipadamente, e é avaliada a cada iteração.&lt;br&gt;
Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var contador = 0
while contador &amp;lt; 5:
    print("Contagem:", contador)
    contador += 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neste exemplo, o bloco de código dentro do loop while é executado enquanto a variável contador for menor que 5. A cada iteração, o valor de contador é incrementado, garantindo que o loop eventualmente termine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ok, mas... &lt;em&gt;e daí?&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Com exemplos de números ímpares ou contar de zero à dez, laços de repetição realmente podem não parecer muito úteis. Mas imagine o seguinte cenário:&lt;br&gt;
Em seu jogo, você colocou todas as suas moedas de ouro em um grupo chamado "gold_coins". Agora que você sabe o que é um laço de repetição, você pode acessar cada uma dessas moedas de ouro e... fazer o que quiser com elas!&lt;/p&gt;

</description>
      <category>godot</category>
      <category>godotengine</category>
      <category>gdscript</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Estruturas condicionais em GDScript</title>
      <dc:creator>Lucas Liuti</dc:creator>
      <pubDate>Mon, 20 May 2024 21:51:02 +0000</pubDate>
      <link>https://dev.to/lliuti/estruturas-condicionais-em-gdscript-1e1n</link>
      <guid>https://dev.to/lliuti/estruturas-condicionais-em-gdscript-1e1n</guid>
      <description>&lt;p&gt;&lt;strong&gt;E se&lt;/strong&gt;... eu te explicar o que são... &lt;/p&gt;

&lt;h2&gt;
  
  
  estruturas condicionais
&lt;/h2&gt;

&lt;p&gt;As estruturas condicionais são fundamentais na programação. Elas permitem que um programa tome decisões com base em uma ou mais condições específicas. Elas não são menos importantes enquanto desenvolvendo jogos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O que são Estruturas Condicionais?&lt;/strong&gt;&lt;br&gt;
Estruturas condicionais são blocos de código que permitem que o programa execute diferentes ações com base em condições específicas. Elas avaliam &lt;em&gt;expressões booleanas&lt;/em&gt; e executam o código associado apenas se a condição for verdadeira. &lt;br&gt;
Ou seja: faremos uma pergunta que deve apenas ser respondida com &lt;strong&gt;verdadeiro&lt;/strong&gt; &lt;em&gt;ou&lt;/em&gt; &lt;strong&gt;falso&lt;/strong&gt; (isso é aquela tal de expressão booleana). Podemos então criar códigos que serão executados apenas se a resposta for verdadeira. Ou falsa. Ou ambos!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Estruturas Condicionais em GDScript:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;If&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
O if é a estrutura condicional mais básica em GDScript. &lt;br&gt;
Ele é quem fará a pergunta (expressão booleana) e executará o bloco de código associado se a condição for verdadeira. Se a condição for falsa, o bloco de código dentro do if não será executado.&lt;/p&gt;

&lt;p&gt;Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var health = 10

if health &amp;lt;= 0:
    print("Eu morri...")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note que o código &lt;code&gt;print("Eu morri...")&lt;/code&gt; só executará se a condição (a vida ser menor ou igual a zero) for &lt;strong&gt;verdadeira&lt;/strong&gt;. Senão, o código dentro do bloco if será ignorado.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Else&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
O else permite que você execute um bloco de código se a condição for verdadeira e outro bloco de código se a condição for falsa. Isso é útil quando temos duas possibilidades.&lt;/p&gt;

&lt;p&gt;Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var health = 10

if health &amp;lt;= 0:
    print("Eu morri...")
else:
    print("Estou vivo!")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note que o código &lt;code&gt;print("Estou vivo!")&lt;/code&gt; só executará se a condição (a vida ser menor ou igual a zero) for &lt;strong&gt;falsa&lt;/strong&gt;. Else literalmente significa "senão".&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Elif&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
O elif é utilizado quando há múltiplas condições. Ele permite uma sequência de verificações.&lt;/p&gt;

&lt;p&gt;Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var health = 10

if health &amp;lt; 0:
    print("Eu morri...")
elif health == 0:
    print("Eu morri... mas foi por pouco!")
else:
    print("Estou vivo!")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note que agora verificamos se a vida é menor do que zero e além disso também verificamos se ela é exatamente zero. Cada &lt;em&gt;print statement&lt;/em&gt; será executado de acordo com o resultado das expressões booleanas.&lt;br&gt;
É importante notar que assim que a primeira condição for verdadeira, todas as outras verificações serão &lt;strong&gt;ignoradas&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;Entender como utilizar corretamente o if, elif e else permite que você controle o fluxo de execução do seu jogo de maneira eficiente e criar múltiplos comportamentos.&lt;/p&gt;

</description>
      <category>godotengine</category>
      <category>godot</category>
      <category>gdscript</category>
      <category>gamedev</category>
    </item>
    <item>
      <title>Boas Práticas nomeando variáveis e funções em GDScript</title>
      <dc:creator>Lucas Liuti</dc:creator>
      <pubDate>Mon, 20 May 2024 21:29:17 +0000</pubDate>
      <link>https://dev.to/lliuti/boas-praticas-ao-nomear-variaveis-e-funcoes-3k4l</link>
      <guid>https://dev.to/lliuti/boas-praticas-ao-nomear-variaveis-e-funcoes-3k4l</guid>
      <description>&lt;h2&gt;
  
  
  Nomeando variáveis e funções - GDScript
&lt;/h2&gt;

&lt;p&gt;Na hora de nomear &lt;em&gt;variáveis&lt;/em&gt; e &lt;em&gt;funções&lt;/em&gt; em &lt;strong&gt;GDScript&lt;/strong&gt;, adotar boas práticas não só torna o código mais legível, mas também facilita a &lt;strong&gt;manutenção&lt;/strong&gt; e colaboração com outros desenvolvedores. A escolha de nomes claros e descritivos pode fazer toda a diferença na compreensão do propósito de cada elemento do código. &lt;br&gt;
Deixarei aqui algumas dicas que costumo seguir ao escrever meus códigos:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Clareza e &lt;em&gt;(principalmente)&lt;/em&gt; Descritividade:&lt;/strong&gt;&lt;br&gt;
Os nomes devem ser claros e descritivos, refletindo o propósito e o contexto da variável ou função.&lt;br&gt;
Sem abreviações obscuras, como &lt;em&gt;"pHealth"&lt;/em&gt; ou siglas pouco intuitivas, como &lt;em&gt;"x"&lt;/em&gt; ou &lt;em&gt;"y"&lt;/em&gt;. &lt;br&gt;
Opte por nomes completos que transmitam claramente a intenção, como: &lt;em&gt;"player_health"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Convenções de Nomenclatura:&lt;/strong&gt;&lt;br&gt;
Use o padrão &lt;em&gt;snake_case&lt;/em&gt; para nomes de &lt;em&gt;variáveis&lt;/em&gt; e &lt;em&gt;funções&lt;/em&gt;, onde as palavras são separadas por underline (como no exemplo de &lt;em&gt;"player_health"&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consistência:&lt;/strong&gt;&lt;br&gt;
Mantenha todo o código consistente. Isso torna mais fácil para os desenvolvedores entenderem o projeto.&lt;br&gt;
Seja consistente com a escolha de nomes para tipos semelhantes de variáveis ou funções. &lt;br&gt;
Por exemplo, a variável de vida do inimigo não deve ser chamada de &lt;em&gt;"enemy_life_points"&lt;/em&gt; enquanto a do jogador é &lt;em&gt;"player_health"&lt;/em&gt;.&lt;br&gt;
Bom, idealmente nem precisaríamos do prefixo &lt;em&gt;"player"&lt;/em&gt; ou &lt;em&gt;"enemy"&lt;/em&gt;...&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Evite Nomes Genéricos:&lt;/strong&gt;&lt;br&gt;
Nomes genéricos como "temp", "data", "index" etc. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Não comente:&lt;/strong&gt;&lt;br&gt;
Sim. É isso mesmo. Mas não me refiro a todo tipo de comentário. &lt;br&gt;
É claro que há bons comentários e péssimos comentários. Geralmente, não precisamos de uma explicação do que a função _physics_process faz.&lt;br&gt;
Um bom comentário explica efeitos colaterais de uma função. O nome da função já deve ser suficiente para explicar sua responsabilidade.&lt;/p&gt;

</description>
      <category>godot</category>
      <category>gdscript</category>
      <category>godotengine</category>
      <category>gamedev</category>
    </item>
  </channel>
</rss>
