#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/wait.h>
#include <sys/shm.h>
#include <sys/msg.h>
#include <signal.h>
#include <time.h>

//numero massimo di giocatori e
//quindi di celle nella coda
#define MAX 100

//permessi sulle risorse IPC: con 666
//ogni utente puo' leggere o scrivere
#define PERMESSI 0666

//chiave per i semafori
#define CHIAVE   1024

//chiave per la memoria condivisa
#define KEYSHM   2048

//chiave per i semafori MUTEX
#define KEYMTX   4096

//chiave per la coda di messaggi
#define KEYCODA  8192

//definizione dei tipi utilizzati

typedef enum {VERO = 1,FALSO = 0} bool;

typedef struct
        {
        int sem_id;
        int punti;
        int pid;
        } data;

typedef data notes[MAX];

typedef data smallnotes[2];

typedef struct
        {
        bool visitato;
        int punti;
        }casella;

typedef struct
        {
        int mesg_len;
        long mesg_type;
        char mesg_data[MAX];
        } sms;

typedef casella matrice[MAX][MAX];