🎲 Cap 02: Sorte e Decisão em Java (Variáveis, Operadores e Random)
🎯 Objetivo da Aula:
Ao final desta aula, você vai escrever sua primeira lógica em Java: declarar variáveis com tipo, usar operadores de comparação, tomar decisões com if/else e gerar números aleatórios com java.util.Random — a base da mecânica de sorteio que você vai usar no Projeto 1.
🏢 O Cenário Prático (Seu Desafio): Antes de ligar a tela do app, todo bom programador testa a lógica isolada. Seu desafio: em um compilador Java online, escrever um método que sorteia um número entre 1 e 20 (como um dado D20) e decide se o resultado é um “Acerto Crítico”.
🧠 Fundamentos: A Teoria Traduzida
📖 Dicionário do Programador
- Variável com tipo: Em Java, toda variável precisa declarar seu tipo antes do nome —
int numero,String mensagem,boolean ativo. - ; (ponto e vírgula): Em Java, toda instrução termina com
;. Esquecer é o erro mais comum de quem está começando. - Operadores aritméticos:
+ - * /fazem contas;%(módulo) devolve o resto de uma divisão. - Operadores de comparação:
== != > < >= <=comparam valores e resultam emtrueoufalse. - if / else: Estrutura de decisão — “se a condição for verdadeira, faça X; senão, faça Y”.
- java.util.Random: Classe do Java usada para gerar números pseudoaleatórios — a “mesa de dados” do programador.
🎨 Java vs. Kotlin: a Diferença de Sintaxe
Você vai notar que Java é mais “explícito” que o Kotlin que você verá a partir do Cap 04: o tipo vem antes do nome da variável, e toda linha termina com ;.
| Java | Kotlin (a partir do Cap 04) | |
|---|---|---|
| Declarar | int vida = 100; |
var vida = 100 |
| Fim de linha | ; obrigatório |
não usa |
| Tipo | sempre explícito, antes do nome | inferido (opcional) |
graph TD
A["Random gerador = new Random()"] --> B["int numero = gerador.nextInt(20) + 1"]
B --> C{numero == 20?}
C -->|Sim| D["CRÍTICO!"]
C -->|Não| E["Mostra o número normal"]
📖 Exemplo Passo a Passo: O Dado D20
Abra um compilador Java online (ex: replit.com ou onlinegdb.com) e crie um método:
import java.util.Random;
public class Main {
public static void main(String[] args) {
rolarD20();
}
public static void rolarD20() {
// 1. Declaramos o gerador de números aleatórios
Random gerador = new Random();
// 2. nextInt(20) sorteia de 0 a 19 — somamos 1 para o intervalo 1 a 20
int numero = gerador.nextInt(20) + 1;
// 3. Decisão: 20 é sempre um Acerto Crítico
if (numero == 20) {
System.out.println("Resultado: " + numero + " - CRÍTICO!");
} else {
System.out.println("Resultado: " + numero);
}
}
}
🛠️ Prática Obrigatória 1:
Crie o método rolarD6(). Ele deve sortear um número entre 1 e 6 (gerador.nextInt(6) + 1) e usar if/else para imprimir:
- Se o número for 6:
"Resultado: 6 - Crítico!" - Se o número for 1:
"Resultado: 1 - Falha Crítica!" - Para qualquer outro valor:
"Resultado: " + numero
🛠️ Prática Obrigatória 2:
Declare uma variável boolean temEscudo = true; e uma variável int dano = 15;. Use if/else para imprimir:
- Se
temEscudofortrue:"Dano bloqueado!" - Senão:
"Você sofreu " + dano + " de dano!"
🔑 Gabarito Passo a Passo:
Exercício 1:
public static void rolarD6() {
Random gerador = new Random();
int numero = gerador.nextInt(6) + 1;
if (numero == 6) {
System.out.println("Resultado: 6 - Crítico!");
} else if (numero == 1) {
System.out.println("Resultado: 1 - Falha Crítica!");
} else {
System.out.println("Resultado: " + numero);
}
}
Exercício 2:
boolean temEscudo = true;
int dano = 15;
if (temEscudo) {
System.out.println("Dano bloqueado!");
} else {
System.out.println("Você sofreu " + dano + " de dano!");
}
📤 Instruções de Entrega (Microsoft Teams):
- Salve seu código Java.
- Nomeie como:
Gamer_SeuNome_Cap02.java. - Envie também um print da tela do console mostrando o resultado dos seus testes.
- Submeta no canal de tarefas.
💡 Agora você já tem as duas peças do Projeto 1 (P01 — Dados RPG): a tela em XML/Java (Cap 01) e a lógica de sorteio em Java (este capítulo). No Cap 03 você revê variáveis — e no Cap 04, operadores — só que com a sintaxe mais compacta do Kotlin, a linguagem que você usará a partir daí.