#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{

  const int numcaselle=100;                   // numero di caselle  
  int caselle[numcaselle+1];                  // indice 0 non usato (per semplicità usiamo lo stesso riferimento)
  
  int i, pos1, pos2, turno, dadi;
  
  for(i=1; i<=numcaselle-1; i++){             // acquisizione salti da casella 1 a 99 (100 non può avere salti)
    printf("Inserire casella n. %d\n", i);
    do
      scanf("%d", &caselle[i]);
    while(i+caselle[i]< 1 || i+caselle[i]>numcaselle);
  }
  caselle[numcaselle]=0;                       // casella 100: salto nullo
  
  pos1=0;               //posizione corrente giocatore 1
  pos2=0;               //posizione corrente giocatore 2
  turno=1;              //giocatore in gioco corrente
  
  while(pos1!=numcaselle && pos2!=numcaselle){       //finchè nessuno dei due giocatori ha vinto
  if(turno==1){

   printf("Giocatore 1: inserire punteggio dadi\n"); //acquisizione punteggio giocatore 1
   do
     scanf("%d", &dadi);
   while(dadi<2 || dadi>12);

   pos1=pos1+dadi;                                   // aggiorna posizione giocatore 1
   
   if(pos1>numcaselle)                               // torna indietro eventualmente
     pos1=numcaselle-(pos1-numcaselle);   
   
   printf("Giocatore 1: posizione %d\n", pos1);
   while(caselle[pos1]!=0){                          //calcola la posizione finale rispetto ai salti
     pos1=pos1+caselle[pos1];
     printf("Giocatore 1: salta a posizione %d\n", pos1);
   }
   
   turno=2;                                          //passa a giocatore 2
  }
  
  else{
       
   printf("Giocatore 2: inserire punteggio dadi\n"); //acquisizione punteggio giocatore 2
   do
     scanf("%d", &dadi);
   while(dadi<2 || dadi>12);

   pos2=pos2+dadi;                                   // aggiorna posizione giocatore 2
   
   if(pos2>numcaselle)                               // torna indietro eventualmente
     pos2=numcaselle-(pos2-numcaselle);   
   
   printf("Giocatore 2: posizione %d\n", pos2);
   while(caselle[pos2]!=0){                          //calcola la posizione finale rispetto ai salti
     pos2=pos2+caselle[pos2];
     printf("Giocatore 2: salta a posizione %d\n", pos2);
   }
   
   turno=1;                                          //passa a giocatore 1
   
   }

  }


  if(pos1==numcaselle)
    printf("Complimenti giocatore 1, hai vinto!\n");
    else printf("Complimenti giocatore 2, hai vinto!\n");
  
  system("PAUSE");	
  return 0;
}

