Eai galera, sou um iniciante em programação e gostaria de saber se o código que eu programei poderia ser refinado de alguma forma, tanto no código em si, como em organização dos métodos e etc. Gostaria de deixa-lo na forma mais prática possível.
Classe Dado
import java.util.Random;
public class Dados {
private int lados;
private Random random;
Dados(int a) {
random = new Random();
if (a < 3)
a = 3;
lados = a;
}
public int RodarSoma(int a) {
int soma = 0;
for (int i = 0; i < a; i++) {
soma += random.nextInt(lados - 1) + 1;
}
return soma;
}
}
Classe Main
import java.util.Scanner;
public class Main {
public static boolean ganhou;
public static int rodadas = 0;
public static void CrapsSemInteratividade() {
Dados dado = new Dados(6);
Scanner s = new Scanner(System.in);
int soma = dado.RodarSoma(2);
int pontuacao = 0;
rodadas = 1;
if (soma == 7 || soma == 11) {
ganhou = true;
return;
} else if (soma == 2 || soma == 3 || soma == 12) {
ganhou = false;
return;
} else {
pontuacao = soma;
}
while (true) {
rodadas++;
soma = dado.RodarSoma(2);
if (soma == pontuacao) {
ganhou = true;
return;
} else if (soma == 7) {
ganhou = false;
return;
}
}
}
public static void main(String[] args) {
// Craps();
int numeroTotalRodadas = 1000;
int vit[] = new int[21];
int der[] = new int[21];
float porcentagem = 0;
float comprimento = 0;
for (int i = 0; i < numeroTotalRodadas; i++) {
CrapsSemInteratividade();
comprimento += rodadas;
if (ganhou) {
if (rodadas < 21) {
vit[rodadas - 1]++;
} else {
vit[20]++;
}
porcentagem++;
} else {
if (rodadas < 21) {
der[rodadas - 1]++;
} else {
der[20]++;
}
}
}
for (int i = 0; i < 20; i++) {
System.out.println("Rodada " + (i + 1) + ": " + vit[i] + " Vitorias e " + der[i] + " Derrotas");
}
System.out.println("Rodada 21 ou superior: " + vit[20] + " Vitorias e " + der[20] + " Derrotas");
System.out.println("A porcentagem de vitoria foi de " + (porcentagem / numeroTotalRodadas * 100) + "%");
System.out.println("O numero de rodadas medio foi de " + (int) (comprimento / numeroTotalRodadas) + " Rodadas");
}
}