// 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());
}