예제 #1
0
void AlgoEtude::testCaseOc (Case caseCliquee, AlgoRegle* algoRegle, Plateau* plateau)
{
	int cpt = algoRegle->getCptMemoOc();

	Case caseAuxDroite = algoRegle->getCaseMemoOcDroite();
	Case caseAuxGauche = algoRegle->getCaseMemoOcGauche();
	
	if ( cpt == 1 ) // On ne peut être que sur la case de droite
	{
		int iD = caseAuxDroite.getLigne();
		int jD = caseAuxDroite.getColonne();

		plateau->setCaseDuTableau(iD, jD, NOIR);
	}

	if ( cpt == 2 ) // On ne peut être que sur la case de gauche
	{
		int iG = caseAuxGauche.getLigne();
		int jG = caseAuxGauche.getColonne();

		plateau->setCaseDuTableau(iG, jG, NOIR);
	}

	if ( cpt == 3 ) // On peut être à droite ou à gauche
	{
		int iC = caseCliquee.getLigne();
		int jC = caseCliquee.getColonne();

		// CAS où on est à droite
		if (plateau->getCaseDuTableau(iC, jC - 4).getEtat() == NOIR_SEL)
		{
			int iD = caseAuxDroite.getLigne();
			int jD = caseAuxDroite.getColonne();

			plateau->setCaseDuTableau(iD, jD, NOIR);
		}
		// CAS où on est à gauche
		else
		{
			int iG = caseAuxGauche.getLigne();
			int jG = caseAuxGauche.getColonne();

			plateau->setCaseDuTableau(iG, jG, NOIR);
		}
	}
}
예제 #2
0
void AlgoEtude::appliquerAlgoEtude (Case caseCliquee)
{
	// On récupère le plateau, sa taille et le joueur en cours
	Plateau* plateau = ((CJeuDeDamesApp *)AfxGetApp( ))->getPlateau();
	int nbCases = ((CJeuDeDamesApp *)AfxGetApp( ))->getTaillePlateau();
	int joueurEnCours = ((CJeuDeDamesApp *)AfxGetApp( ))->getJoueurEnCours();
	AlgoRegle* algoRegle = ((CJeuDeDamesApp *)AfxGetApp( ))->getAlgoRegle();
	int nbPionsBlanc = ((CJeuDeDamesApp *)AfxGetApp( ))->getNbPionsBlanc();
	int nbPionsRouge = ((CJeuDeDamesApp *)AfxGetApp( ))->getNbPionsRouge();

	// CAS DU JOUEUR 1
	if (joueurEnCours == 1 )
	{
		// Il clique sur une case occupée par un de ses pions
		if(caseCliquee.getEtat() == NOIR_OC_BLANC)
		{
			// On désélectionne toutes les cases
			for(int i = 0; i < nbCases; i++) {
				for(int j = 0; j < nbCases; j++)
				{
					if (plateau->getCaseDuTableau(i, j).getEtat() == NOIR_SEL) plateau->setCaseDuTableau(i, j, NOIR);
				} 
			}

			caseMemo = algoRegle->deroulerAlgo(caseCliquee);	
		}

		// Il clique sur une case candidate au déplacement
		if(caseCliquee.getEtat() == NOIR_SEL)
		{
			int iMemo = caseMemo.getLigne();
			int jMemo = caseMemo.getColonne();

			int iClic = caseCliquee.getLigne();
			int jClic = caseCliquee.getColonne();

			// On déplace le pion
			plateau->setCaseDuTableau(iMemo, jMemo, NOIR);
			plateau->setCaseDuTableau(iClic, jClic, NOIR_OC_BLANC);

			// CAS où on saute un pion
			if ((iMemo - iClic) == 2)
			{
				testCaseOc(caseCliquee, algoRegle, plateau);
				nbPionsRouge -= 1;
				((CJeuDeDamesApp *)AfxGetApp( ))->setNbPionsRouge(nbPionsRouge);
			}
			
			// On désélectionne toutes les cases
			for(int i = 0; i < nbCases; i++) {
				for(int j = 0; j < nbCases; j++)
				{
					if (plateau->getCaseDuTableau(i, j).getEtat() == NOIR_SEL) plateau->setCaseDuTableau(i, j, NOIR);
				} 
			}

			// On change de joueur
			((CJeuDeDamesApp *)AfxGetApp( ))->setJoueurEnCours(2);
		}

	}

	// CAS DU JOUEUR 2
	if (joueurEnCours == 2 )
	{
		// Il clique sur une case occupée par un de ses pions
		if(caseCliquee.getEtat() == NOIR_OC_ROUGE)
		{
			// On désélectionne toutes les cases
			for(int i = 0; i < nbCases; i++) {
				for(int j = 0; j < nbCases; j++)
				{
					if (plateau->getCaseDuTableau(i, j).getEtat() == NOIR_SEL) plateau->setCaseDuTableau(i, j, NOIR);
				} 
			}

			caseMemo = algoRegle->deroulerAlgo(caseCliquee);
		}

		// Il clique sur une case candidate au déplacement
		if(caseCliquee.getEtat() == NOIR_SEL)
		{
			int iMemo = caseMemo.getLigne();
			int jMemo = caseMemo.getColonne();

			int iClic = caseCliquee.getLigne();
			int jClic = caseCliquee.getColonne();

			// On déplace le pion
			plateau->setCaseDuTableau(iMemo, jMemo, NOIR);
			plateau->setCaseDuTableau(iClic, jClic, NOIR_OC_ROUGE);

			// CAS où on saute un pion
			if ((iClic - iMemo) == 2)
			{
				testCaseOc(caseCliquee, algoRegle, plateau);
				nbPionsBlanc -= 1;
				((CJeuDeDamesApp *)AfxGetApp( ))->setNbPionsBlanc(nbPionsBlanc);
			}

			// On désélectionne toutes les cases
			for(int i = 0; i < nbCases; i++) {
				for(int j = 0; j < nbCases; j++)
				{
					if (plateau->getCaseDuTableau(i, j).getEtat() == NOIR_SEL) plateau->setCaseDuTableau(i, j, NOIR);
				} 
			}

			// On change de joueur
			((CJeuDeDamesApp *)AfxGetApp( ))->setJoueurEnCours(1);
		}

	}

}