// 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++; } } }
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; }