Oi sou iniciante em Java e mesmo entendendo o uso de métodos na programação não consigo “transformar” esse programa que fiz de maneira estruturada dividindo-o em métodos.
Pelo que entendi, métodos servem para que haja um reaproveitamento de código evitando que os mesmos comandos sejam inseridos.
Bom esse é o programa:
import javax.swing.JOptionPane;
public class JogoArray
{
public static void main (String args[])
{
int jogador[] = new int[7];
int cpu[] = new int[7];
int ptJogador=0, ptCpu=0;
String cartasJogador="";
for (int c=0;c<7;c++)
{ jogador[c]=(int)((Math.random()*9)+1);//jogador recebe 7 valores de 1 a 10
cpu[c]=(int)((Math.random()*9)+1); } //cpu recebe 7 valores de 1 a 10
int menorCarta=cpu[0];
int maiorCarta=cpu[0];
//informa a menor e a maior carta que o CPU tem
for (int c=0;c<7;c++)
{ if (cpu[c]<menorCarta)
menorCarta=cpu[c];
if (cpu[c]>maiorCarta)
maiorCarta=cpu[c]; }
//jogada do CPU
for (int c=0;c<7;c++)
{ if (cpu[c]==menorCarta)
JOptionPane.showMessageDialog(null,
"CPU jogou. Saiu a menor carta.",(c+1)+"a. rodada",
JOptionPane.INFORMATION_MESSAGE);
else
if (cpu[c]==maiorCarta)
JOptionPane.showMessageDialog(null,
"CPU jogou. Saiu a maior carta.",(c+1)+"a. rodada",
JOptionPane.INFORMATION_MESSAGE);
else
JOptionPane.showMessageDialog(null,
"CPU jogou.",(c+1)+"a. rodada",JOptionPane.INFORMATION_MESSAGE);
//jogador
for (int i=0;i<7;i++) //exibicão dos valores do jogador
cartasJogador += (i+1)+"a. carta: "+jogador[i]+"\n";
int carta=Integer.parseInt(JOptionPane.showInputDialog(null,
"Qual carta vai usar ?\n"+cartasJogador,(c+1)+" a. rodada",
JOptionPane.QUESTION_MESSAGE))-1;
if ((carta>6) || (carta<0))
{ JOptionPane.showMessageDialog(null,"Essa carta não existe ...",
(c+1)+" a. rodada",
JOptionPane.INFORMATION_MESSAGE);
System.exit(0); } //caso o usuário digite uma carta inexistente
if (jogador[carta]==0) //evita que use a mesma carta + de uma vez
JOptionPane.showMessageDialog(null,
"Você já usou essa carta. Nessa rodada você jogou zero.",
(c+1)+" a. rodada",
JOptionPane.INFORMATION_MESSAGE);
if (jogador[carta]>cpu[c]) //se o usuário jogou uma carta maior
{ ptJogador++;
JOptionPane.showMessageDialog(null,
jogador[carta]+" a "+cpu[c]+". Você venceu a "+(c+1)+"a. rodada.",
(c+1)+" a. rodada",
JOptionPane.INFORMATION_MESSAGE); }
else
if (jogador[carta]<cpu[c]) //se o usuário jogou uma carta menor
{ ptCpu++;
JOptionPane.showMessageDialog(null,
jogador[carta]+" a "+cpu[c]+". Você perdeu a "+(c+1)+"a. rodada.",
(c+1)+" a. rodada",
JOptionPane.INFORMATION_MESSAGE); }
else
JOptionPane.showMessageDialog(null,
jogador[carta]+" a "+cpu[c]+". Empatou!",(c+1)+" a. rodada",
JOptionPane.INFORMATION_MESSAGE);
cartasJogador="";//apaga tudo que havia na string
jogador[carta]=0;//zera carta que já foi usada
}//fim do for
if (ptJogador>ptCpu)
JOptionPane.showMessageDialog(null,
"PLACAR FINAL:\n\nVocê: "+ptJogador+
"\nCPU: "+ptCpu+"\n\nVocê venceu !!","FINAL",
JOptionPane.INFORMATION_MESSAGE);
else
if (ptCpu>ptJogador)
JOptionPane.showMessageDialog(null,
"PLACAR FINAL:\n\nVocê: "+ptJogador+
"\nCPU: "+ptCpu+"\n\nVocê perdeu !!","FINAL",
JOptionPane.INFORMATION_MESSAGE);
else
JOptionPane.showMessageDialog(null,
"PLACAR FINAL:\n\nVocê: "+ptJogador+
"\nCPU: "+ptCpu+"\n\nEmpatou !!","FINAL",
JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}//fim do main
}
… ainda não cuidei de tratar os erros mas minha dúvida é se eu poderia dimuir esse o numero de linhas utilizando métodos … Se alguem pude me ajudar agradeço