My version so far

// Fill out your copyright notice in the Description page of Project Settings.

#include “BullCowCartridge.h”

#include

using namespace std;

void UBullCowCartridge::BeginPlay() // When the game starts

{

Super::BeginPlay();

bNewGame = true;

SetupGame();

//PrintLine(TEXT("Le mot mystérieux est: %s. Il contient %i lettres!" ), *HiddenWord, HiddenWord.Len()); // Debug line

}

void UBullCowCartridge::OnInput(const FString& Input) // When the player hits enter

{

ClearScreen();

if (bGameOver)

{

    SetupGame();

}

else // Comparer le mot entré avec le mot mystérieux

{

    ProcessGuess(Input);        

}  

}

void UBullCowCartridge::SetupGame()

{

if (bNewGame)

{

    // Bienveunue au joueur

    PrintLine(TEXT("Meuuuhhh\n\nBonjour, veux-tu jouer avec nous ?\n"));

    bNewGame = false;

}



//PrintLine(TEXT("Comment t\'appelles-tu ?\n (Tapes ton prénom et appuies sur \"entrée\")")); TODO

bGameOver = false;

HiddenWord = TEXT("abcde");

Lives = HiddenWord.Len();

Essais = 1;

PrintLine(TEXT("Tapes un mot de %i lettres\net appuies sur\"entrée\".\n"), HiddenWord.Len());

PrintLine(TEXT("Tu disposes de %i essais, bonne chance!"), Lives);

}

bool UBullCowCartridge::IsIsogram(FString Word) // Vérifier que le mot est un isogramme ( toutes les lettres sont différentes !)

{

for (int32 i = 0; i < Word.Len(); i++)

{

    for (int32 j = i + 1; j < Word.Len(); j++)

    {

        if (Word[i] == Word[j])

        {

            return false;

        }

    }

}

return true;

}

void UBullCowCartridge::EndGame()

{

// play again or quit

bGameOver = true;     

PrintLine(TEXT("\nFin de partie\n"));

PrintLine(TEXT("Pour recommencer, tape \"entrée\"."));

PrintLine(TEXT("Sinon, tape \"échap\"\n"));  

}

void UBullCowCartridge::ProcessGuess(FString Guess) //

{

Lives--;

if(Guess == HiddenWord) // le mot à été trouvé !

{

    if (Essais != 1)

    {

        PrintLine(TEXT("\nParfait, tu as trouvé le mot \"%s\"\nen %i essais.\n"), *HiddenWord, Essais); // texte avec essai au singulier

    }

    else

    {

        PrintLine(TEXT("\nParfait, tu as trouvé le mot \"%s\"\nen %i essai.\n"), *HiddenWord, Essais); // texte avec essai au pluriel

    }        

    

    EndGame();

    return;

}

else

{

    Essais++;

    // Check the length of the input word

    if (Guess.Len() != HiddenWord.Len())

    {

        ClearScreen();

        PrintLine(TEXT("\nLe mot mystérieux doit contenir %i lettres!\n"), HiddenWord.Len());

    } 

    

    if (Lives <= 0)

    {

        // PrintLine(TEXT("Perdu !"));  

        PrintLine(TEXT("Perdu! \n\nLe mot mystérieux était %s "), *HiddenWord);

        EndGame();  

        return;          

    }   

}

if (!IsIsogram(Guess))

{

    PrintLine(TEXT("Le mot recherché est un isogramme !\n(Toutes les lettres doivent\n être différentes!)\n"));

}    

PrintLine(TEXT("Il te reste %i essais\nTapes un autre mot de %i lettres!\n"), Lives, HiddenWord.Len());   

}