
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?
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


0