JAVA: projeto de sorteio de número aleatório
Alguns estudantes de programação em JAVA me enviam muitos pedidos. Eu não sou programador JAVA. Eu sei o básico, comum e necessário para fazer alguns experimentos. Esta semana recebi o pedido de "fazer um programa" que fizesse o sorteio de 3 número e exibisse na tela o resultado". Deve ser feito como se o jogador estivesse jogando 3 dados, e, verificar quantas vezes acertava cada aposta.
Observação: Este texto não terá explicações detalhadas sobre criar projeto no Netbeans; não terá explicação de como criar formulário, jTextField, jLabel, Button.
– Os 3 primeiros campos, dentro do Painel: Área de Aposta, são 3 campos de textos onde o usuário irá digitar três números entre 1 até o 6 – que são os números de um dado comum. Estes três campos, quando acontece de um apostado ser igual a um dos números sorteados, ele muda a cor para verde
– Os 3 quadrados do painel: Área de Resultado exibirá os 3 números sorteados. São apenas objetos do tipo Label, com formatação de fonte tamanho 48, centralizado, e com bordas
– Na parte de baixo há três quadrados, também do tipo Label onde serão exibidos a contagem dos acertos.
– O último quadrado, outro Label, onde se vê a descrição: "Acertou os 3 números", apresentará o número de vezes em que se acertou os 3 números. Não é fácil acertar os 3 números. Em mais de 300 tentativas, acertei apenas duas vezes.
– Os três botões: APOSTAR, SAIR e LIMPAR. O Botão Apostar aciona os códigos que sorteia três números; exibe-os nos quadros de resultados; exibe também o Total de Acertos, Troca a cor de fundo dos Quadros de Aposta, quando ocorrem igualdade.
Primeiro eu criei o formulário conforme está na imagem.
Se você não sabe criar um projeto Java, não sabe inseri Painel, Campo de Texto, Label e fazer as configurações de fonte, centralizar, botões… não sou eu que vou explicar não!
Para cada item inserido no formulário, você tem que mudar as variáveis de cada um destes itens, conforme se vê na imagem abaixo.
Não confundi alterar Variável do item na tela com a criação e inicialização de variáveis (tipo primitivo) logo abaixo. Cada item do formulário eu nomeei da seguinte maneira:
– Os campos de texto (jFieldText): txtNumero1; txtNumero2; txtNumero3;
– Os Labels: lblNumero1; lblNumero2; lblNumero3;
– Os botões: btnApostar; btnSair; btnLimpar
– As variáveis são: numero1, numero2, numero3, contaN1, contaN2, contaN3 e contaTodos.
Segundo criei as seguintes variáveis do tipo primitivo.
Depois de criar/definir estas sete variáveis, todas do tipo inteiro, utilizando o recurso de duplo clique para acionar a codificação, eu cliquei duas vezes no botão APOSTAR e então escrevi o seguinte:
numero1 = 1 + (int)(Math.random() * 6);
Este código faz o seguinte: usa a variável que é do tipo inteiro, definida lá em cima, e então, utilizando a classe Math.random() sorteia um número. O *6 faz com que o número sorteado seja entre o valor 1e o valor 6. Não é necessário explicar os outros dois. Numero2 e numero3, pois, é a mesma coisa. Este código eu pesquisei na internet: "como obter um número aleatório em JAVA".
lblNumero1.setText(String.valueOf(numero1));
Este código faz o seguinte: usa o Label (lblNumero1) e então, por meio de ".setText(String.ValueOf(numero1)", exibe o valor da variável como String. Repito o código para exibir os valores das variáveis nos respectivo labels: lblNumero2 e lblNumero3.
Comparando e contando os acertos
Para efetuar as comparações entre os campos de texto de Aposta e os Labels de Resultado, utilizei os seguintes códigos. São apenas 3 ifs para comparar quando há igualdade entre:
– O txtNumero1 com a variável numero1;
– O txtNumero2 com a variável numero2;
– O txtNumero3 com a variável numero3;
Fiz a comparação entre o conteúdo digitado no campo de texto com o valor "convertido" em String existente na variável numero1, do tipo inteiro primitivo com o. equals. Em seguida, se, são iguais, o campo txtNumero1 recebe a cor verde pelo código: .setBackground(Color.GREEN). Na segunda linha, onde se tem "contaN1++" é onde a variável de contagem de acertos vai contando de 1 em 1.
Contando se acertou os 3 números
O item "Acertou os 3 números", somente contará se ocorrer uma igualdade entre os três campos.
– Somente quando, o número digitado no campo 1, for igual ao número sorteado na variável 1, e exibida no lblNumero1;
– Somente quando, o número digitado no campo 2, for igual ao número sorteado na variável 2, e exibida no lblNumero2;
– Somente quando, o número digitado no campo 3, for igual ao número sorteado na variável 3, e exibida no lblNumero3 é que, a variável contaTodos é incrementada.
Observe o uso do && e novamente do .equals para comparar se o conteúdo do .getText é igual à String convertida. E no fim, a lblContaTodos exibe o valor da variável contaTodos.
Após várias tentativas eis abaixo na imagem que acertei os três números. A marcação em verde dos campos de texto onde são digitados os números; a contagem de vezes em que houve igualdade entre os campos, e, apenas 1 em "Acertou os 3 números".