Java - Dos procesos en C

   
Vista:
Imágen de perfil de Josh

Dos procesos en C

Publicado por Josh (1 intervención) el 26/11/2017 20:46:02
Hola.
Antes de nada, he posteado aquí mi duda debido a que no he encontrado ningún apartado de C, debido a su antigüedad supongo.

Mi problema es que no consigo hacer lo siguiente.
Estoy codificando "bank panic"(juego), en el cual son 3 puertas y si hay un bandido, se le dispara, en el caso de no disparar al bandido pierdes una vida.
El tema es que quiero controlar el tiempo, tener un tiempo limite de 5 segundos para dispararle. Para ello si no estoy muy equivocado habría que usar dos procesos, uno con el scanf(), y otro proceso que sea el contador del tiempo, que para simular un segundo se usa la función sleep(1).
He estado investigando y tendría que hacer uso de <pthread.h> el cual te permite hacer otro proceso simultáneamente. ¿Como se solucionaría?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <pthread.h>
 
void disparar(int disparo[]);
 
/************************************************************************
    Función main
*************************************************************************/
int main (int argc, char *argv[]) {
	int disparo[3] = {0,0,0};
 
	pthread_t tiempo;
	do{
 
		pthread_create(&tiempo,NULL,(void*)disparar,disparo);
 
	}while(!tiempoTranscurrido(5));
 
	pthread_exit;
 
	return 0;
}
 
 
int tiempoTranscurrido(int limite){
	int i;
	for(i=0;i<limite;){
		i++;
		sleep(1);
	}
	return 1;
}
 
/************************************************************************
    Función disparar

    Argumentos de entrada
        No existen
    Argumentos de salida
        int disparo - 
*************************************************************************/
void disparar(int disparo[]){
	int eleccion;
	do{
	 	scanf("%d",&eleccion);
 
	}while(eleccion <1|| eleccion >3);
	 disparo[eleccion-1] = 1;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Revisar política de publicidad