.cpp file
// Fill out your copyright notice in the Description page of Project Settings.
#include "BullCowCartridge.h"
#include"HiddenWordList.h"
void UBullCowCartridge::BeginPlay() // When the game starts
{
Super::BeginPlay();
Isograms = GetValidWords(HWords); //Getting validWords from ValidWord func.
SetupGame(); //Setiing up the game
//PrintLine(TEXT("Hidden word is : %s"), *HiddenWord); //Debug Line
}
void UBullCowCartridge::OnInput(const FString& PlayerInput) // When the player hits enter
{
//Process of player guess
if (bGameOver){ // If the gane finished
ClearScreen();
SetupGame();//Setting up the game
}
else{ //If the player guess is not correct
ProcessGuess(PlayerInput);
}
}
void UBullCowCartridge::SetupGame(){
//---------------------------------------
//Setting function and varibles that needed
//Setting up the Hidden words
int32 GenRandomNum = FMath::RandRange(0,Isograms.Num() - 1);
HiddenWord = Isograms[GenRandomNum];
//Lives that player has at the start
Lives = HiddenWord.Len();
bGameOver = false;
//------------------------------------------
//----------------------------------------------------------------------------------------------------------------------------
//Text area to show to player some stuff
//Welcoming the game
PrintLine(TEXT("Oyuna hoşgeldin!"));
PrintLine(TEXT("%i adet sihirli kelime bulunmaktadir."), HWords.Num());
PrintLine(TEXT("%i adet geçerli sihirli kelime bulunmaktadir"), GetValidWords(HWords).Num());
//Showing what they got(Lives and the lenght of the hiddenword to guess)
PrintLine(TEXT("Canin: %i"), Lives);
PrintLine(TEXT("\nDevam etmek için %i karakter uzulugundaki\nsihirli"), HiddenWord.Len());
//-------------------------------------------------------------------------------------------------------------------------------
}
void UBullCowCartridge::EndGame(){// If the player win the game or lose the game this func. will pop up
bGameOver = true;
PrintLine(TEXT("\nTekrar oynamak için enter'a bas..."));
}
void UBullCowCartridge::ProcessGuess(const FString& Guess){
if (Guess == HiddenWord){// If the player guess is correct
PrintLine(TEXT("Kazandin"));
EndGame();
return;
}
if(Guess.Len() != HiddenWord.Len()){// if is the Pleyer input lenght not equal to hiddenword
//PrintLine(TEXT("Canin: %i"), Lives);
PrintLine(TEXT("Sihirli kelime %i karakter uzunlugunda."), HiddenWord.Len());
}
if(!IsIsogram(Guess)){
PrintLine("Ayni karakterler arka arkaya\ntekrarlanamaz!");
return;
}
//Remove Lives
PrintLine(TEXT("\nCanini Yedim!"));
--Lives;
if(Lives <= 0){// If player out of lives
ClearScreen();
PrintLine(TEXT("Canin bitti."));
PrintLine(TEXT("Bilemedigin sihirli kelime: %s"), *HiddenWord);
EndGame();
return;
}
int32 Bulls, Cows;
GetBullCows(Guess, Bulls, Cows);
PrintLine(TEXT("Bulls : %i, Cows : %i"),Bulls, Cows);
PrintLine(TEXT("Canin: %i"), Lives);
}
bool UBullCowCartridge::IsIsogram(const FString& Word) const{//Checking the Isogram of thr player input
for(int32 Index = 0; Index < Word.Len(); Index++){
for(int32 Comparison = Index + 1; Comparison < Word.Len(); Comparison++){
if(Word[Index] == Word[Comparison]){
return false;
}
}
}
return true;
}
TArray<FString> UBullCowCartridge::GetValidWords(const TArray<FString>& WordList) const{//Checking the wordlist.h file for the words are valid for the game.
TArray<FString> RightLengthWords;
//Range based for loop.| for(type TempVar : Data)
for(FString Word: WordList){//Looking trough the words
int32 CheckLen = Word.Len();
if(CheckLen >=4 && CheckLen <= 8){//Checking every word Lenght one by one
if(IsIsogram(Word)){// Is words maintain isogram then there are not valid for the game
RightLengthWords.Emplace(Word);
}
//PrintLine(TEXT("%s"), *HWords[i]);
}
}
return RightLengthWords;
}
void GetBullCows(const FString& Guess, int32& BullCount, int32& CowCount) const{
BullCount = 0;
CowCount = 0;
for (int32 i = 0; i < Guess.Len(); i++)
{
if (Guess[i] == HiddenWord[i]){
BullCount ++;
}
for (int32 k = 0; k < HiddenWord.Len(); k++){
if (Guess[i] == HiddenWord[k]){
CowCount ++;
}
}
}
}
.h
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Console/Cartridge.h"
#include "BullCowCartridge.generated.h"
UCLASS(ClassGroup=(Custom), meta=(BlueprintSpawnableComponent))
class BULLCOWGAME_API UBullCowCartridge : public UCartridge
{
GENERATED_BODY()
public:
virtual void BeginPlay() override;
virtual void OnInput(const FString& Input) override;
void SetupGame();
void EndGame();
void ProcessGuess(const FString &Guess);
bool IsIsogram(const FString& Word) const;
TArray<FString> GetValidWords(const TArray<FString>& WordList) const;
void GetBullCows (const FString& Guess, int32& BullCount, int32& CowCount) const; //The BullCount and the CowCount is Out parameters
// Your declarations go below!
private:
FString HiddenWord;
int32 Lives;
bool bGameOver;
TArray<FString> Isograms;
};
UnrealEngineLog
I don’t know why its giving me that error because I already declared the HiddenWord varible in the headder file.
I think another amateur misstake that I made and I cannot find the issue. :,(
I will be really happy that anybody help me.