void applyRound() { // Récupérer les inputs GameState oldState1 = GetGameState(GameState.PlayerNumber.PLAYER_1); GameState oldState2 = GetGameState(GameState.PlayerNumber.PLAYER_2); MyInput a1 = strategie1.GetInput(oldState1); MyInput a2 = strategie2.GetInput(oldState2); // Appliquer les inputs player1.ApplyInput(a1, player2.position); player2.ApplyInput(a2, player1.position); // Vérifier si un player a reçu un coup bool player1IsDammaged = player1.ApplyDammage(player2); bool player2IsDammaged = player2.ApplyDammage(player1); float r1 = computeReward(player1IsDammaged, player2IsDammaged); float r2 = -r1; // On défavorise les échanges de coups ! On veut que les deux joueurs ne prennent pas de coups ! if (player1IsDammaged && player2IsDammaged) { r1 -= 0.01f; r2 -= 0.01f; } // Récompenser les stratégies GameState newState1 = GetGameState(GameState.PlayerNumber.PLAYER_1); GameState newState2 = GetGameState(GameState.PlayerNumber.PLAYER_2); strategie1.Reward(oldState1, a1, newState1, r1); strategie2.Reward(oldState2, a2, newState2, r2); // Afficher les résultats s'il le faut if (isDisplayedOnScreen) { player1.Display(); player2.Display(); } }