Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <sys/types.h>
- #include <fcntl.h>
- #include <unistd.h>
- #include <sys/stat.h>
- #include <string.h>
- #include <stdlib.h>
- //PIN e POUT sono altri nomi delle pipe
- #define POUT "shotPipeOut"
- #define PIN "shotPipeIn"
- int main() {
- int fdin, fdout, i;
- char leggi;
- char message[100];
- //reset memoria
- memset(message,0,100);
- int bytesread;
- //actualx e actualy รจ la posizione salvata del nemico
- //pointx e pointy รจ la posizione del mio mirino (all'inizio in 0,0)
- int actualx,actualy,pointx,pointy;
- //apro le pipe!
- mkfifo(PIN,0666);
- mkfifo(POUT,0666);
- if ( (fdout = open (POUT,O_RDONLY)) < 0 ) { // apre la pipe in lettura
- perror("errore apertura pipe in lettura");
- exit(1);
- }
- if ( (fdin = open(PIN,O_WRONLY)) < 0 ) { // apre la pipe in scrittura
- perror("errore apertura pipe in scrittura");
- exit(1);
- }
- pointx=0; pointy=0;
- for (i=1; i<=15; i++){
- //leggo dalla pipe
- bytesread = read(fdout,message,100);
- printf("ho letto dalla pipe %d bytes: '%s' \n",bytesread,message);
- //parsing dei dati
- sscanf( message, "%d,%d#", &actualy, &actualx);
- printf("nemico in %d\t%d.\n",actualx,actualy);
- //calcolo lo shift del mirino
- sprintf(message,"%d,%d#",(actualy-pointy),(actualx-pointx));
- //scrivo sulla pipe
- write (fdin,message,strlen(message));
- //aggiorno la posizione del mirino
- pointx=actualx; pointy=actualy;
- printf("ho scritto nella pipe %d bytes: '%s' \n",(int)strlen(message)+1,message);
- //aspetto un secondo, non ho fretta...
- sleep(1);
- }
- //chiudo!
- close(fdin); close(fdout);
- unlink(PIN); unlink(POUT);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement