InizioSpecificaStatiClasse Giocatore

	Stato: {Allenamento, InPartita}

	Variabili di stato ausiliarie:
		--
		
	Stato iniziale:
		stato = Allenamento
		
FineSpecificaStati

InizioSpecificaTransizioniClasse Giocatore

	Transizione: Allenamento --> InPartita
		inizio

	Evento: inizio
	Condizione: --
	Azione:
		pre: evento.dest = this
		post: --


	Transizione: InPartita --> InPartita
		lancio_del_dado/{lancio_del_dado{dest:succ} OR fine{dest:tutti}

	Evento: lancio_del_dado
	Condizione: --
	Azione:
		pre: evento.dest = this
		post: 
   ... < algoritmo di calcolo della nuova casella occupata dal giocatore -- vedere codice >

                      AND

                      if this.occupare.successore = null 
                      then nuovoevento = fine
                      else sia p tale che <this,p> in comprendere 
                           ip = (indexOf(comprendere(this,p))+1)%
                                                          size(comprendere) 
                           sia prossimo tale che Giocatore(comprendere(prossimo,p)) = ip
                           nuovoevento = lancio_del_dado(random){mitt = this, dest = prossimo}

            
	Transizione: InPartita --> Allenamento
		fine

	Evento: fine
	Condizione: --
	Azione:
		pre: evento.dest = this
		post: --

FineSpecificaTransizioni

FineSpecifica
