Juego Piedra,Papel y Tijera usando JOptionPane

Hola gente soy un estudiante de desarrollo de software y quisiera compartir con uds. algunos programas que he hecho. En este caso el juego piedra,papel y tijera; usando JOptionPane.
El programa es 100% funcional.
El programa, consta de 4 clases: Jugar, Presentacion, Intruccion, Principal(Contiene el metodo main).
Acá les dejo el código de cada una...

Clase: Principal

import javax.swing.*;

public class Principal {

public static void main (String args[])
{
int opt; // toma la opcion de seguir o no...
String inicial;
String menu;

int cont1 = 0;
int cont2 = 0;
int cont3 = 0;
String bestPlayer;

Intruccion objIntruccion = new Intruccion();
Presentacion objPresentacion = new Presentacion();
Jugar objJugar = new Jugar();

String string1 = "Claro, que SI!";
String string2 = "Claro, que NO!";
Object[] options = {string1,string2};

inicial = ("\t\tWWW.KUBUNTU-ES.ORG / WIKI\n"+
"\t\tJAVA\n"+"\n\n\t\t\t\tProyecto # 1\n\n"+
"\t\t\t\tJuego de Piedra, Papel y Tijera\n\n\n"+"Click en \"Aceptar\" para mostrar el menú.");

JOptionPane.showMessageDialog(null, inicial,"Proyecto # 1",JOptionPane.PLAIN_MESSAGE);

menu = ("\t\t\tMenu\t\t\t\n\n\n"+
   "1. Presentación\n"+("2. Jugar\n"+"3. Instrucciones\n\n\n"+
   "Por favor, tome una opción..."));

int keepgoing = 0;

do{
opt = Integer.parseInt(JOptionPane.showInputDialog(null, menu,"Proyecto # 1",JOptionPane.PLAIN_MESSAGE));

switch(opt)
{
case 1:
objPresentacion.showPresentacion();
break;
case 2:

if(objJugar.username1.equals("") && objJugar.username2.equals(""))
{
objJugar.getNames();
}

do{
objJugar.getOpt();
objJugar.desicion();

cont1 = objJugar.cont1;
cont2 = objJugar.cont2;
cont3 = objJugar.cont3;

keepgoing = JOptionPane.showOptionDialog(null, "¿Deseas seguir jugando...?","Proyecto # 1",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,options,string1);
}while (keepgoing == 0);
break;
case 3:
objIntruccion.showPresentacion();
break;
default:
JOptionPane.showMessageDialog(null, "Escogió una opción invalida, por favor ingrese una opción valida.", "Proyecto # 1", JOptionPane.PLAIN_MESSAGE);
break;
}

}while(keepgoing == 0);

bestPlayer = ("El jugador: "+objJugar.username1+", ha ganado "+cont1+" veces.\n"+
"El jugador: "+objJugar.username2+", ha ganado "+cont2+" veces.\n\n");

if(cont1 == cont2 && cont1 == cont3)
{
bestPlayer = ("El jugador: "+objJugar.username1+", ha ganado "+cont1+" veces.\n"+
"El jugador: "+objJugar.username2+", ha ganado "+cont2+" veces.\n"+
"La cantidad de empates ha sido de: "+cont3+" veces.\n\n"+
"                          EMPATE               ");
}

else
{
if(cont1 > cont2)
{
bestPlayer = ("El jugador: "+objJugar.username1+", ha ganado "+cont1+" veces.\n"+
"El jugador: "+objJugar.username2+", ha ganado "+cont2+" veces.\n"+
"La cantidad de empates ha sido de: "+cont3+" veces.\n\n"+
"               GANADOR "+objJugar.username1+"               ");
}
else
if(cont1 < cont2)
{
bestPlayer = ("El jugador: "+objJugar.username1+", ha ganado "+cont1+" veces.\n"+
"El jugador: "+objJugar.username2+", ha ganado "+cont2+" veces.\n\n"+
"La cantidad de empates ha sido de: "+cont3+" veces.\n\n"+
"               GANADOR "+objJugar.username2+"               ");

}
}

JOptionPane.showMessageDialog(null, bestPlayer,"Proyecto # 1",JOptionPane.PLAIN_MESSAGE);

}//fin de metodo
}//fin de clase

Clase: Presentacion

import javax.swing.JOptionPane;

public class Presentacion {
String presentacion;

public void showPresentacion()
{
presentacion = ("                WWW.KUBUNTU-ES.ORG / WIKI      \n"+
"                                                 JAVA                 \n"+
"                                      Programa No. 1                      \n\n\n"+
"Integrante:      mandrake0219                         \n");

JOptionPane.showMessageDialog(null, presentacion,"Proyecto # 1 - Presentación",JOptionPane.PLAIN_MESSAGE);
}
}

Clase: Jugar

import javax.swing.JOptionPane;
import javax.swing.*; 

public class Jugar {

String username1 = "";
String username2 = "";
String usernames;

String opt1;
String opt2;

int verif1;
int verif2;

int cont1 = 0; //contador de ganadas jugador 1
int cont2 = 0; // contador de ganadas jugador 2
int cont3 = 0; // contador de empates.

JPasswordField pwdopt1 = new JPasswordField(2);
JPasswordField pwdopt2 = new JPasswordField(2);

public void getNames()
{
username1 = JOptionPane.showInputDialog(null, "Ingrese el nombre del jugador # 1","Proyecto # 1 - Juego",JOptionPane.PLAIN_MESSAGE);
username2 = JOptionPane.showInputDialog(null, "Ingrese el nombre del jugador # 2","Proyecto # 1 - Juego",JOptionPane.PLAIN_MESSAGE);

usernames = "Los jugadores son: "+username1+" y "+username2+".\nMucha Suerte.";

JOptionPane.showMessageDialog(null, usernames,"Proyecto # 1 - Juego",JOptionPane.PLAIN_MESSAGE);
}

public void getOpt()
{
do{
verif1 = JOptionPane.showConfirmDialog(null, pwdopt1,username1+" Ingrese su opción a jugar.",JOptionPane.OK_CANCEL_OPTION); 
verif2 = JOptionPane.showConfirmDialog(null, pwdopt2,username2+" Ingrese su opción a jugar.",JOptionPane.OK_CANCEL_OPTION);

if(verif1 > 0 || verif2 > 0 )
{JOptionPane.showMessageDialog(null,"No ha introducido ninguna opción o ha hecho click en \"Cancelar\"");
}
else
opt1 = new String(pwdopt1.getPassword());
opt2 = new String(pwdopt2.getPassword());
}while(verif1 > 0 || verif2 > 0  || opt1.length() == 0 || opt2.length() == 0);
}

public void desicion()
{
if((opt1.equals("R") || opt1.equals("r") || opt1.equals("piedra") || opt1.equals("PIEDRA")) && (opt2.equals("T") || opt2.equals("t") || opt2.equals("tijera") || opt2.equals("TIJERA")))
{
JOptionPane.showMessageDialog(null, username1+" ha ganado","Proyecto # 1 - Juego",JOptionPane.PLAIN_MESSAGE);
cont1 = cont1 + 1;
}
else
{
if((opt1.equals("R") || opt1.equals("r") || opt1.equals("piedra") || opt1.equals("PIEDRA")) && (opt2.equals("P") || opt2.equals("p") || opt2.equals("papel") || opt2.equals("PAPEL")))
{
JOptionPane.showMessageDialog(null, username2+" ha ganado","Proyecto # 1 - Juego",JOptionPane.PLAIN_MESSAGE);
cont2 = cont2 + 1;
}
else
{
if((opt1.equals("T") || opt1.equals("t") || opt1.equals("tijera") || opt1.equals("TIJERA")) && (opt2.equals("R") || opt2.equals("r") || opt2.equals("piedra") || opt2.equals("PIEDRA")))
{
JOptionPane.showMessageDialog(null, username2+" ha ganado","Proyecto # 1 - Juego",JOptionPane.PLAIN_MESSAGE);
cont2 = cont2 + 1;
}
else
{
if((opt1.equals("T") || opt1.equals("t") || opt1.equals("tijera") || opt1.equals("TIJERA")) && (opt2.equals("P") || opt2.equals("p") || opt2.equals("papel") || opt2.equals("PAPEL")))
{
JOptionPane.showMessageDialog(null, username1+" ha ganado","Proyecto # 1 - Juego",JOptionPane.PLAIN_MESSAGE);
cont1 = cont1 + 1;
}
else
{
if((opt1.equals("P") || opt1.equals("p") || opt1.equals("papel") || opt1.equals("PAPEL")) && (opt2.equals("T") || opt2.equals("t") || opt2.equals("tijera") || opt2.equals("TIJERA")))
{
JOptionPane.showMessageDialog(null, username2+" ha ganado","Proyecto # 1 - Juego",JOptionPane.PLAIN_MESSAGE);
cont2 = cont2 + 1;
}
else
{
if((opt1.equals("P") || opt1.equals("p") || opt1.equals("papel") || opt1.equals("PAPEL")) && (opt2.equals("R") || opt2.equals("r") || opt2.equals("piedra") || opt2.equals("PIEDRA")))
{
JOptionPane.showMessageDialog(null, username1+" ha ganado","Proyecto # 1 - Juego",JOptionPane.PLAIN_MESSAGE);
cont1 = cont1 +1;
}
else
if(opt1.equals(opt2))
{
JOptionPane.showMessageDialog(null, "Han Empatado","Proyecto # 1 - Juego",JOptionPane.PLAIN_MESSAGE);
cont3 = cont3 + 1;
}
}
}
}
}
}
}//fin del metodo
}//cierra clase

Clase: Intruccion

import javax.swing.JOptionPane;

public class Intruccion {
String intrucciones;

public void showPresentacion()
{
intrucciones = ("\n                                    INSTRUCCIONES               \n\n\n"
+"Al escoger la opcion numero 2 (Jugar), se le(s) pedirá los nombres"
+"\nde los jugadores." +
"\n\n      Opciones:"+
"\nIngrese R para Piedra"+
"\nIngrese P para Papel"+
"\nIngrese T para Tijera"+
"\n\n      ¿Como se gana?"+
"\nLa Piedra le gana a la Tijera"+
"\nLa Tijera le gana al Papel"+
"\nEl Papel le gana a la Piedra."+
"\n\nLa ultima opción escogida se mantiene, aunque se cambie los nombres de los jugadores"+
"\nSe puede ingresar: R, piedra, PIEDRA o r; en caso de querer escoger ROCA"+
"\nSe puede ingresar: P, papel, PAPEL, o p; en caso de querer escoger PAPEL"+
"\nSe puede ingresar: T, tijera, TIJERA o t; en caso de querer escoger TIJERA"+
"\n\n\n                       SUERTE!!!");

JOptionPane.showMessageDialog(null, intrucciones,"Proyecto # 1 - Instruccines",JOptionPane.PLAIN_MESSAGE);
}
}

Aportado por : mandrake0219
Fecha aporte: 28/10/2009