Foros del Web » Programación para mayores de 30 ;) » Java »

problema con applet de juego piedra-papel-tijera

Estas en el tema de problema con applet de juego piedra-papel-tijera en el foro de Java en Foros del Web. Hola a todos los foristas, espero les valla bien en sus labores, estoy escribiendo este tema porque estoy teniendo un problema grande que me tiene ...
  #1 (permalink)  
Antiguo 26/11/2008, 17:13
Avatar de Lance_X  
Fecha de Ingreso: julio-2008
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
Pregunta problema con applet de juego piedra-papel-tijera

Hola a todos los foristas, espero les valla bien en sus labores, estoy escribiendo este tema porque estoy teniendo un problema grande que me tiene medio rayado en java, tengo el siguiente código que hice del juego piedra-papel-tijeras:

Código:
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();
	    
	}
	
}
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.

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

Última edición por Lance_X; 26/11/2008 a las 17:28
  #2 (permalink)  
Antiguo 26/11/2008, 20:00
 
Fecha de Ingreso: septiembre-2008
Ubicación: Córdoba
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: problema con applet de juego piedra-papel-tijera

Cuando pongas en true cualquiera de los booleanos, trata en poner false el resto. Por ej.

if (event.getSource() == tijera)
scissor = true;
rock=false;
paper=false;
repaint();

Como puede ser eso, como puede que no. De todas formas trata usando un debugger.

Saludos...
  #3 (permalink)  
Antiguo 26/11/2008, 20:02
 
Fecha de Ingreso: septiembre-2008
Ubicación: Córdoba
Mensajes: 67
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: problema con applet de juego piedra-papel-tijera

Perdon, pero ponele unas llaves

if (event.getSource() == tijera) {
scissor = true;
rock=false;
paper=false;
repaint();
}
  #4 (permalink)  
Antiguo 27/11/2008, 05:39
 
Fecha de Ingreso: septiembre-2003
Mensajes: 122
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: problema con applet de juego piedra-papel-tijera

El problema esta en el metodo: public void actionPerformed(ActionEvent event)

Reemplazalo por:

public void actionPerformed(ActionEvent event) {
if (event.getSource() == tijera){
scissor = true;
paper = false;
rock = false;
}else if(event.getSource() == papel){
paper = true;
scissor = false;
rock = false;
}else{
rock = true;
paper = false;
scissor = false;
}
repaint();
}

Saludos.-
  #5 (permalink)  
Antiguo 27/11/2008, 13:13
Avatar de Lance_X  
Fecha de Ingreso: julio-2008
Mensajes: 52
Antigüedad: 15 años, 9 meses
Puntos: 0
De acuerdo Respuesta: problema con applet de juego piedra-papel-tijera

Cita:
Iniciado por PachuG Ver Mensaje
Perdon, pero ponele unas llaves

if (event.getSource() == tijera) {
scissor = true;
rock=false;
paper=false;
repaint();
}
Muchas gracias por sus respuestas, ya logre corregir el problema con lo que me sugirieron, por cierto lo de las llaves fue un pequeño error de omisión , al tratar de buscar la solución al problema expuesto.

Saludos y gracias!!!


Lance_X
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:39.