Ejemplo n.º 1
0
// procedure interne a decideMoves
// evaluation globale des mouvements dupliqués et risqués 
void globalEvaluation(GroupMoves *priorityMoves, GroupMoves riskedMoves, const SGameState * const gameState)
{
	// movement copie dans priorityMoves une seule fois avec son taux de risque non plus local mais global plus besoin d'avoir 2 taux
	// a faire
	int i, j = 0; /* compteurs */
	GroupMoves buffer; /* tableau temporel utile pour le classement des mouvements */

	priorityMoves->length_list=0;

	for(i = 0; i < riskedMoves.length_list; i++)
	{	
		/* si on s'occupe du tableau de mouvement pour la première fois */
		if(i == 0)
		{
			findOccurences(riskedMoves.listMoves[i].move, riskedMoves,&buffer);
			if (buffer.length_list == 1)
				priorityMoves->listMoves[j].caution = buffer.listMoves[0].caution;
			else
				priorityMoves->listMoves[j].caution = globalProbability(buffer);

			/* Rajout de probabilité si on est un scout et qu'on peut bouger en haut */
			
			if ((gameState->board[riskedMoves.listMoves[i].move.end.line][riskedMoves.listMoves[i].move.end.col].content == m_enemyColor)
			&&(gameState->board[riskedMoves.listMoves[i].move.start.line][riskedMoves.listMoves[i].move.start.col].piece == EPscout)
			&&((riskedMoves.listMoves[i].move.end.line - riskedMoves.listMoves[i].move.start.line) > 0))
				priorityMoves->listMoves[j].caution -= 10.f;

			priorityMoves->listMoves[j].move = riskedMoves.listMoves[i].move;
			priorityMoves->length_list++;
			j++;
		}
		/* si le mouvement actuel n'a pas été pris en compte par le traitement précédent */
		else if (!isMovePresent(riskedMoves.listMoves[i].move,buffer))
		{
			emptyList(&buffer);
			findOccurences(riskedMoves.listMoves[i].move, riskedMoves, &buffer);
			if (buffer.length_list == 1)
				priorityMoves->listMoves[j].caution = buffer.listMoves[0].caution;
			else
				priorityMoves->listMoves[j].caution = globalProbability(buffer);

			/* Rajout de probabilité si on est un scout et qu'on peut bouger en haut */
			
			if ((gameState->board[riskedMoves.listMoves[i].move.end.line][riskedMoves.listMoves[i].move.end.col].content == m_enemyColor)
			&&(gameState->board[riskedMoves.listMoves[i].move.start.line][riskedMoves.listMoves[i].move.start.col].piece == EPscout)
			&&((riskedMoves.listMoves[i].move.end.line - riskedMoves.listMoves[i].move.start.line) > 0))
				priorityMoves->listMoves[j].caution -= 10.f;

			priorityMoves->listMoves[j].move = riskedMoves.listMoves[i].move;
			priorityMoves->length_list++;
			j++;
		}
	}
}
Ejemplo n.º 2
0
int main()
{
   // Final Question 1
   int arraySize = 5;
   int unsortedArray[5] = {15, 20, 30, 7, 8};
   LinkedList myList;

   std::cout << "Inserting Array into LinkedList" << std::endl;
   insertArrayToLinkedList(unsortedArray, arraySize, myList);

   myList.display(std::cout);
   std::cout << std::endl;
   myList.BubbleSort();

   myList.display(std::cout);

   // Final question 2

   arraySize = 17;
   int binArray[] = {1, 1, 2, 2, 5, 5, 5, 5, 5, 5, 5, 8, 8, 9, 10, 11, 11 };
   int value = 5;


   std::cout << std::endl << findOccurences(binArray, arraySize, value);
   std::cout << std::endl;


   return 0;

}