Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Ninja_Kyubi

#1
Java / Re: Pausar y reanudar hilos
20 Diciembre 2015, 16:43 PM
Cita de: Atry en 20 Diciembre 2015, 14:44 PM
:D Hola! Cuanto tiempo sin pasar por este foro ^^

A ver, igual te parece una tontería, pero si no te he entendido mal. Buscas que cuando un jugador encuentre el numero, este no pueda volver a introducir números, pero el resto sí.

¿Porque no usas una flag? Estableces un booleano llamado por ejemplo numEncontrado que por defecto en todos los jugadores sea "false" y cuando dé con el número lo estableces a true, así antes de solicitar introducir un numero pones un if(numEncontrado).


Gracias por responder.
Pero lo que más necesito es como he puesto ahí de ejemplo, tal y como tengo el programa me hace un jugador entero y pasa al siguiente, lo que necesito es que por así decirlo vayan por turnos y en cada turno digan un número; jugador 1 dice número, jugador 2 dice número, jugador 3 dice número y vuelven a empezar diciendo otro número y así hasta encontrar el número correcto...

He estado probando y quitando el Hil.join(); hace lo que pido pero con el problema de que me repiten el número:


Número generado: 36
Número de jugadores: 3

Thread-1 Numero:6
Thread-3 Numero:6
Thread-2 Numero:6
Thread-2 Numero:42
Thread-1 Numero:42
Thread-3 Numero:42
Thread-2 Numero:83
Thread-1 Numero:83
Thread-3 Numero:83
Thread-2 Numero:30
Thread-1 Numero:30
Thread-3 Numero:30
Thread-2 Numero:36
Thread-3 Numero:36
Thread-1 Numero:36
#2
Java / Pausar y reanudar hilos
20 Diciembre 2015, 03:07 AM
Muy buenas a todos. A ver si alguien me puede ayudar...

Voy a intentar a ver si me puedo explicar...

Según tengo el código:
1- Genera un número random a encontrar por los jugadores
2- Pide número de jugadores (que serán el número de hilos)
3- Los jugadores generan números aleatorios para encontrar el random del punto 1
4- Hace el jugador 1 entero y pasa al jugador 2 y lo hace entero, pasa al jugador 3 y lo hace entero...


package hilos_java;
import java.lang.Math;
import java.util.ArrayList;
import java.util.Scanner;


public class hilos_1 extends Thread{
    static Scanner teclado = new Scanner(System.in);
    static int numeroJugadores;
    static int numeroRandomFinal = (int) (Math.random()*100);;
    int numeroRandomJugador;
    int intentos;
    int a;
    int re=0;

     
    public static void main(String[] args) throws InterruptedException {           
                 
           System.out.println("Número generado: " + numeroRandomFinal);
           System.out.print("Número de jugadores: ");
           numeroJugadores = teclado.nextInt();
           System.out.print("\n");
           hilos_1 hilos = new hilos_1();
            Thread[] Hil = new Thread[numeroJugadores];
               for (int i = 0; i < Hil.length; i++){
                   System.out.println("***** Jugador-"+(i+1)+" *****");
                   Hil[i] = new Thread(hilos);           
                   Hil[i].start();
                   Hil[i].join();             
               }
               
        }//main
     
     
     
    public void run() {
        ArrayList<Integer> numeroRepeticion = new ArrayList<Integer>();
         
            try {               
                    for (a=0; a!=numeroRandomFinal;){
                        a =  (int) (Math.random()*100);
                         
                        while (numeroRepeticion.contains(a)){
                            a =  (int) (Math.random()*100);
                        }         
                    numeroRepeticion.add(a);

                            intentos++;
         
                        System.out.println("Intentos: " + intentos + " Numero:" + a);
                         
                        sleep(10);                       

                     
                    }//for                     

                    if(a == numeroRandomFinal){                         
                        System.out.println("\nEl jugador " + currentThread().getName() + " ha acertado el número.");
                        System.out.println("Numero de intentos: " + intentos + "\n");
                        intentos = 0;
                            //sleep(1000);                     
                    }
                                             
                } catch (InterruptedException e) {
                   e.printStackTrace();
               }             
       }//run                       
     
}//class


Lo que necesito es que el jugador 1 de un número y pase al jugador 2 diciendo otro número y el jugador 3 lo mismo y se vuelva a ir al jugador 1 para sacar otro número y así sucesivamente y cuando un jugador encuentre dicho número random se pare pero que los demás jugadores no paren hasta encontrar el número...

---Lo que me hace---

Número generado: 7
Número de jugadores: 3

***** Jugador-1 *****
Intentos: 1 Numero:77
Intentos: 2 Numero:81
Intentos: 3 Numero:22
Intentos: 44 Numero:67
Intentos: 48 Numero:7

El jugador Thread-1 ha acertado el número.
Numero de intentos: 5

***** Jugador-2 *****
Intentos: 1 Numero:42
Intentos: 2 Numero:33
Intentos: 3 Numero:81

El jugador Thread-2 ha acertado el número.
Numero de intentos: 3

***** Jugador-3 *****
Intentos: 1 Numero:8

El jugador Thread-3 ha acertado el número.
Numero de intentos: 1 

---Lo que necesito---

***** Jugador-1 *****
Intentos: 1 Numero:77
***** Jugador-2 *****
Intentos: 1 Numero:42
***** Jugador-3 *****
Intentos: 1 Numero:8

***** Jugador-1 *****
Intentos: 2 Numero:73
***** Jugador-2 *****
Intentos: 2 Numero:43
***** Jugador-3 *****
Intentos: 2 Numero:33