Código:
Lo que hace el programa, es que el usuario cliquea en cualquiera de las opciones existentes del juego (tijera, piedra o papel), mientras que la pc escoge aleatoriamente su opción (por medio de Math.random) y dependiendo de ambos resultados, gana el usuario o la pc, o sino queda el juego empate. import java.applet.*; import java.awt.*; import java.awt.event.*; public class papelpiedra extends Applet implements ActionListener { /** * */ private static final long serialVersionUID = 1L; private Button papel, piedra, tijera; private boolean scissor = false; private boolean paper = false; private boolean rock = false; private int pc; public void init() { tijera= new Button("Tijera"); add(tijera); tijera.addActionListener(this); papel= new Button("Papel"); add(papel); papel.addActionListener(this); piedra= new Button("Piedra"); add(piedra); piedra.addActionListener(this); } public void paint(Graphics g) { if ((scissor == true)) { pc = (int) (Math.random() * 3) + 1; g.drawString("Tijera", 105, 100); switch (pc) { case 1: g.drawString("Tijera", 170, 100); g.drawString("Jugadores Empatados", 100, 130); break; case 2: g.drawString("Papel", 170, 100); g.drawString("Gana el Usuario", 100, 130); break; case 3: g.drawString("Piedra", 170, 100); g.drawString("Gana la PC", 100, 130); break; } } if ((paper == true)) { pc = (int) (Math.random() * 3) + 1; g.drawString("Papel", 105, 100); switch (pc) { case 1: g.drawString("Tijera", 170, 100); g.drawString("Gana la PC", 100, 130); break; case 2: g.drawString("Papel", 170, 100); g.drawString("Jugadores Empatados", 100, 130); break; case 3: g.drawString("Piedra", 170, 100); g.drawString("Gana el Usuario", 100, 130); break; } } else if ((rock == true)) { pc = (int) (Math.random() * 3) + 1; g.drawString("Roca", 105, 100); switch (pc) { case 1: g.drawString("Tijera", 170, 100); g.drawString("Gana el Usuario", 100, 130); break; case 2: g.drawString("Papel", 170, 100); g.drawString("Gana la PC", 100, 130); break; case 3: g.drawString("Roca", 170, 100); g.drawString("Jugadores Empatados", 100, 130); break; } } } public void actionPerformed(ActionEvent event) { if (event.getSource() == tijera) scissor = true; repaint(); if (event.getSource() == papel) paper = true; repaint(); if (event.getSource() == piedra) rock = true; repaint(); } }
Se preguntaran ¿cual es el problema que tengo con mi programa? simple, es que como pueden ver estoy creando tres botones (Tijera, Papel, Piedra) y cuando pulso en tijera y luego en cualquier otra opción, el programa en vez de borrarme la jugada anterior como debería, lo que hace es que me sobrescribe encima de la jugada anterior, por ejemplo cliqueo en tijera primero y me muestra la ejecución como esta en su parte del código, cliqueo después en papel (por ejemplo) y en vez de borrarme la jugada que hice de tijera y poner la jugada de papel, me la coloca encima de esta . Esto me ocurre principalmente cuando utilizo el botón de tijera, porque cuando alterno jugadas entre papel y piedra, lo hace de forma correcta (borra la jugada anterior y coloca la que sigue).
Soy un usuario nuevo en java y no se cual pueda ser el problema que tengo, ya he intentado una y mil formas de corregir la falla y ninguna me ha dado resultados :-p.
Les agradezco de antemano toda su ayuda.
Saludos!!!
Lance_X