// cBarco.cpp
// Frequência de 13 de Dezembro de 2000

#include "cBarco.h" 

cMargem::cMargem( int Miss, int Can)
{
	Missionarios = Miss;
	Canibais = Can;
}

void cMargem::AlteraNrMissionarios( int Variacao )
{
	Missionarios = Missionarios + Variacao;
}

void cMargem::AlteraNrCanibais( int Variacao )
{
	Canibais = Canibais + Variacao;
}


cRio::cRio( int MissEsq, int CanEsq, int MissDir, int CanDir ) : Esquerda( MissEsq, CanEsq ), Direita( MissDir, CanDir )
{

}

cMargem * cRio::OutraMargem( cMargem *pMargem )
{
	if ( pMargem == &Esquerda )
		return &Direita;
	else
		return &Esquerda;
}

cBarco::cBarco( cRio *pR )
{
	pMargem = &( pR->Esquerda );
	pRio = pR;
}


void cBarco::Viagem( int NrMiss, int NrCan )
{
	// Diminui o Nr de Missionários e Canibais na margem de onde parte o barco
	pMargem->AlteraNrMissionarios( -NrMiss );
	pMargem->AlteraNrCanibais( -NrCan );

	// O barco muda de margem
	pMargem = pRio->OutraMargem(pMargem);		

	// Aumenta o Nr de Missionários e Canibais na margem onde chega o barco
	pMargem->AlteraNrMissionarios( NrMiss );
	pMargem->AlteraNrCanibais( NrCan );

}



