Skip to content
Open

Bug #12

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 46 additions & 46 deletions BuildingEscape/BuildingEscape.sln
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.24720.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Engine", "Engine", "{A6FCF90C-3A4A-41C3-A8C4-80B2F8984CF2}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Engine", "Engine", "{0BBA4F71-35E7-47D8-87C5-3BE82444DA1F}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Games", "Games", "{458EC926-0BF6-4925-8E33-1E73ADF4263C}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Games", "Games", "{1491E6F1-7FD3-443B-BB46-EF53DBBE5B8A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UE4", "Intermediate\ProjectFiles\UE4.vcxproj", "{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UE4", "Intermediate\ProjectFiles\UE4.vcxproj", "{3407FE20-2BF8-407A-B69A-63F532E05A2D}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BuildingEscape", "Intermediate\ProjectFiles\BuildingEscape.vcxproj", "{86132F41-CC19-4924-AF3E-803F2FBE6A83}"
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BuildingEscape", "Intermediate\ProjectFiles\BuildingEscape.vcxproj", "{22955E52-E99F-4F8E-9A61-119B697F1196}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand All @@ -25,52 +25,52 @@ Global
Shipping|Win64 = Shipping|Win64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}.DebugGame Editor|Win32.ActiveCfg = BuiltWithUnrealBuildTool|Win32
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}.DebugGame Editor|Win32.Build.0 = BuiltWithUnrealBuildTool|Win32
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}.DebugGame Editor|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win32
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}.DebugGame Editor|Win64.Build.0 = BuiltWithUnrealBuildTool|Win32
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}.DebugGame|Win32.ActiveCfg = BuiltWithUnrealBuildTool|Win32
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}.DebugGame|Win32.Build.0 = BuiltWithUnrealBuildTool|Win32
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}.DebugGame|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win32
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}.DebugGame|Win64.Build.0 = BuiltWithUnrealBuildTool|Win32
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}.Development Editor|Win32.ActiveCfg = BuiltWithUnrealBuildTool|Win32
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}.Development Editor|Win32.Build.0 = BuiltWithUnrealBuildTool|Win32
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}.Development Editor|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win32
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}.Development Editor|Win64.Build.0 = BuiltWithUnrealBuildTool|Win32
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}.Development|Win32.ActiveCfg = BuiltWithUnrealBuildTool|Win32
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}.Development|Win32.Build.0 = BuiltWithUnrealBuildTool|Win32
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}.Development|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win32
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}.Development|Win64.Build.0 = BuiltWithUnrealBuildTool|Win32
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}.Shipping|Win32.ActiveCfg = BuiltWithUnrealBuildTool|Win32
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}.Shipping|Win32.Build.0 = BuiltWithUnrealBuildTool|Win32
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}.Shipping|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win32
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA}.Shipping|Win64.Build.0 = BuiltWithUnrealBuildTool|Win32
{86132F41-CC19-4924-AF3E-803F2FBE6A83}.DebugGame Editor|Win32.ActiveCfg = DebugGame_Editor|Win32
{86132F41-CC19-4924-AF3E-803F2FBE6A83}.DebugGame Editor|Win32.Build.0 = DebugGame_Editor|Win32
{86132F41-CC19-4924-AF3E-803F2FBE6A83}.DebugGame Editor|Win64.ActiveCfg = DebugGame_Editor|x64
{86132F41-CC19-4924-AF3E-803F2FBE6A83}.DebugGame Editor|Win64.Build.0 = DebugGame_Editor|x64
{86132F41-CC19-4924-AF3E-803F2FBE6A83}.DebugGame|Win32.ActiveCfg = DebugGame_Game|Win32
{86132F41-CC19-4924-AF3E-803F2FBE6A83}.DebugGame|Win32.Build.0 = DebugGame_Game|Win32
{86132F41-CC19-4924-AF3E-803F2FBE6A83}.DebugGame|Win64.ActiveCfg = DebugGame_Game|x64
{86132F41-CC19-4924-AF3E-803F2FBE6A83}.DebugGame|Win64.Build.0 = DebugGame_Game|x64
{86132F41-CC19-4924-AF3E-803F2FBE6A83}.Development Editor|Win32.ActiveCfg = Development_Editor|Win32
{86132F41-CC19-4924-AF3E-803F2FBE6A83}.Development Editor|Win32.Build.0 = Development_Editor|Win32
{86132F41-CC19-4924-AF3E-803F2FBE6A83}.Development Editor|Win64.ActiveCfg = Development_Editor|x64
{86132F41-CC19-4924-AF3E-803F2FBE6A83}.Development Editor|Win64.Build.0 = Development_Editor|x64
{86132F41-CC19-4924-AF3E-803F2FBE6A83}.Development|Win32.ActiveCfg = Development_Game|Win32
{86132F41-CC19-4924-AF3E-803F2FBE6A83}.Development|Win32.Build.0 = Development_Game|Win32
{86132F41-CC19-4924-AF3E-803F2FBE6A83}.Development|Win64.ActiveCfg = Development_Game|x64
{86132F41-CC19-4924-AF3E-803F2FBE6A83}.Development|Win64.Build.0 = Development_Game|x64
{86132F41-CC19-4924-AF3E-803F2FBE6A83}.Shipping|Win32.ActiveCfg = Shipping_Game|Win32
{86132F41-CC19-4924-AF3E-803F2FBE6A83}.Shipping|Win32.Build.0 = Shipping_Game|Win32
{86132F41-CC19-4924-AF3E-803F2FBE6A83}.Shipping|Win64.ActiveCfg = Shipping_Game|x64
{86132F41-CC19-4924-AF3E-803F2FBE6A83}.Shipping|Win64.Build.0 = Shipping_Game|x64
{3407FE20-2BF8-407A-B69A-63F532E05A2D}.DebugGame Editor|Win32.ActiveCfg = BuiltWithUnrealBuildTool|Win32
{3407FE20-2BF8-407A-B69A-63F532E05A2D}.DebugGame Editor|Win32.Build.0 = BuiltWithUnrealBuildTool|Win32
{3407FE20-2BF8-407A-B69A-63F532E05A2D}.DebugGame Editor|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win32
{3407FE20-2BF8-407A-B69A-63F532E05A2D}.DebugGame Editor|Win64.Build.0 = BuiltWithUnrealBuildTool|Win32
{3407FE20-2BF8-407A-B69A-63F532E05A2D}.DebugGame|Win32.ActiveCfg = BuiltWithUnrealBuildTool|Win32
{3407FE20-2BF8-407A-B69A-63F532E05A2D}.DebugGame|Win32.Build.0 = BuiltWithUnrealBuildTool|Win32
{3407FE20-2BF8-407A-B69A-63F532E05A2D}.DebugGame|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win32
{3407FE20-2BF8-407A-B69A-63F532E05A2D}.DebugGame|Win64.Build.0 = BuiltWithUnrealBuildTool|Win32
{3407FE20-2BF8-407A-B69A-63F532E05A2D}.Development Editor|Win32.ActiveCfg = BuiltWithUnrealBuildTool|Win32
{3407FE20-2BF8-407A-B69A-63F532E05A2D}.Development Editor|Win32.Build.0 = BuiltWithUnrealBuildTool|Win32
{3407FE20-2BF8-407A-B69A-63F532E05A2D}.Development Editor|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win32
{3407FE20-2BF8-407A-B69A-63F532E05A2D}.Development Editor|Win64.Build.0 = BuiltWithUnrealBuildTool|Win32
{3407FE20-2BF8-407A-B69A-63F532E05A2D}.Development|Win32.ActiveCfg = BuiltWithUnrealBuildTool|Win32
{3407FE20-2BF8-407A-B69A-63F532E05A2D}.Development|Win32.Build.0 = BuiltWithUnrealBuildTool|Win32
{3407FE20-2BF8-407A-B69A-63F532E05A2D}.Development|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win32
{3407FE20-2BF8-407A-B69A-63F532E05A2D}.Development|Win64.Build.0 = BuiltWithUnrealBuildTool|Win32
{3407FE20-2BF8-407A-B69A-63F532E05A2D}.Shipping|Win32.ActiveCfg = BuiltWithUnrealBuildTool|Win32
{3407FE20-2BF8-407A-B69A-63F532E05A2D}.Shipping|Win32.Build.0 = BuiltWithUnrealBuildTool|Win32
{3407FE20-2BF8-407A-B69A-63F532E05A2D}.Shipping|Win64.ActiveCfg = BuiltWithUnrealBuildTool|Win32
{3407FE20-2BF8-407A-B69A-63F532E05A2D}.Shipping|Win64.Build.0 = BuiltWithUnrealBuildTool|Win32
{22955E52-E99F-4F8E-9A61-119B697F1196}.DebugGame Editor|Win32.ActiveCfg = DebugGame_Editor|Win32
{22955E52-E99F-4F8E-9A61-119B697F1196}.DebugGame Editor|Win32.Build.0 = DebugGame_Editor|Win32
{22955E52-E99F-4F8E-9A61-119B697F1196}.DebugGame Editor|Win64.ActiveCfg = DebugGame_Editor|x64
{22955E52-E99F-4F8E-9A61-119B697F1196}.DebugGame Editor|Win64.Build.0 = DebugGame_Editor|x64
{22955E52-E99F-4F8E-9A61-119B697F1196}.DebugGame|Win32.ActiveCfg = DebugGame_Game|Win32
{22955E52-E99F-4F8E-9A61-119B697F1196}.DebugGame|Win32.Build.0 = DebugGame_Game|Win32
{22955E52-E99F-4F8E-9A61-119B697F1196}.DebugGame|Win64.ActiveCfg = DebugGame_Game|x64
{22955E52-E99F-4F8E-9A61-119B697F1196}.DebugGame|Win64.Build.0 = DebugGame_Game|x64
{22955E52-E99F-4F8E-9A61-119B697F1196}.Development Editor|Win32.ActiveCfg = Development_Editor|Win32
{22955E52-E99F-4F8E-9A61-119B697F1196}.Development Editor|Win32.Build.0 = Development_Editor|Win32
{22955E52-E99F-4F8E-9A61-119B697F1196}.Development Editor|Win64.ActiveCfg = Development_Editor|x64
{22955E52-E99F-4F8E-9A61-119B697F1196}.Development Editor|Win64.Build.0 = Development_Editor|x64
{22955E52-E99F-4F8E-9A61-119B697F1196}.Development|Win32.ActiveCfg = Development_Game|Win32
{22955E52-E99F-4F8E-9A61-119B697F1196}.Development|Win32.Build.0 = Development_Game|Win32
{22955E52-E99F-4F8E-9A61-119B697F1196}.Development|Win64.ActiveCfg = Development_Game|x64
{22955E52-E99F-4F8E-9A61-119B697F1196}.Development|Win64.Build.0 = Development_Game|x64
{22955E52-E99F-4F8E-9A61-119B697F1196}.Shipping|Win32.ActiveCfg = Shipping_Game|Win32
{22955E52-E99F-4F8E-9A61-119B697F1196}.Shipping|Win32.Build.0 = Shipping_Game|Win32
{22955E52-E99F-4F8E-9A61-119B697F1196}.Shipping|Win64.ActiveCfg = Shipping_Game|x64
{22955E52-E99F-4F8E-9A61-119B697F1196}.Shipping|Win64.Build.0 = Shipping_Game|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{48B335D4-FA7B-4487-BFDD-F41DE73A23DA} = {A6FCF90C-3A4A-41C3-A8C4-80B2F8984CF2}
{86132F41-CC19-4924-AF3E-803F2FBE6A83} = {458EC926-0BF6-4925-8E33-1E73ADF4263C}
{3407FE20-2BF8-407A-B69A-63F532E05A2D} = {0BBA4F71-35E7-47D8-87C5-3BE82444DA1F}
{22955E52-E99F-4F8E-9A61-119B697F1196} = {1491E6F1-7FD3-443B-BB46-EF53DBBE5B8A}
EndGlobalSection
EndGlobal
Binary file modified BuildingEscape/Content/DefaultPawn_BP.uasset
Binary file not shown.
Binary file added BuildingEscape/Content/IsoLock_BP.uasset
Binary file not shown.
Binary file added BuildingEscape/Content/My_Pulse.uasset
Binary file not shown.
Binary file modified BuildingEscape/Content/NewMap.umap
Binary file not shown.
Binary file added BuildingEscape/Content/Opening_Door.uasset
Binary file not shown.
Binary file not shown.
Binary file modified BuildingEscape/Content/StarterContent/Props/SM_Door.uasset
Binary file not shown.
125 changes: 125 additions & 0 deletions BuildingEscape/Source/BuildingEscape/FBullCowGame.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
// Copyright Ben Tristem 2016.

#include "BuildingEscape.h"
#include "FBullCowGame.h"

FBullCowGame::FBullCowGame() { Reset(); } // default constructor

int32 FBullCowGame::GetCurrentTry() const { return MyCurrentTry; }
int32 FBullCowGame::GetHiddenWordLength() const { return MyHiddenWord.Len(); }
bool FBullCowGame::IsGameWon() const { return bGameIsWon; }

int32 FBullCowGame::GetMaxTries() const
{
TMap<int32, int32> WordLengthToMaxTries;
WordLengthToMaxTries.Add(3, 4);
WordLengthToMaxTries.Add(4, 7);
WordLengthToMaxTries.Add(5, 10);
WordLengthToMaxTries.Add(6, 16);
WordLengthToMaxTries.Add(7, 20);
return WordLengthToMaxTries[MyHiddenWord.Len()];
}

void FBullCowGame::Reset()
{
const FString HIDDEN_WORD = "plane"; // this MUST be an isogram
MyHiddenWord = HIDDEN_WORD;

MyCurrentTry = 1;
bGameIsWon = false;
return;
}


EGuessStatus FBullCowGame::CheckGuessValidity(FString Guess) const
{
if (!IsIsogram(Guess)) // if the guess isn't an isogram
{
return EGuessStatus::Not_Isogram;
}
else if (!IsLowercase(Guess)) // if the guess isn't all lowercase
{
return EGuessStatus::Not_Lowercase;
}
else if (Guess.Len() != GetHiddenWordLength()) // if the guess length is wrong
{
return EGuessStatus::Wrong_Length;
}
else
{
return EGuessStatus::OK;
}
}


// receives a VALID guess, incriments turn, and returns count
FBullCowCount FBullCowGame::SubmitValidGuess(FString Guess)
{
MyCurrentTry++;
FBullCowCount BullCowCount;
int32 WordLength = MyHiddenWord.Len(); // assuming same length as guess

// loop through all letters in the hidden word
for (int32 MHWChar = 0; MHWChar < WordLength; MHWChar++)
{
// compare letters against the guess
for (int32 GChar = 0; GChar < WordLength; GChar++)
{
// if they match then
if (Guess[GChar] == MyHiddenWord[MHWChar])
{
if (MHWChar == GChar)
{ // if they're in the same place
BullCowCount.Bulls++; // incriment bulls
}
else
{
BullCowCount.Cows++; // must be a cow
}
}
}
}
if (BullCowCount.Bulls == WordLength)
{
bGameIsWon = true;
}
else
{
bGameIsWon = false;
}
return BullCowCount;
}

bool FBullCowGame::IsIsogram(FString Word) const
{
// treat 0 and 1 letter words as isograms
if (Word.Len() <= 1) { return true; }

TMap<char, bool> LetterSeen; // setup our map
for (auto Letter : Word) // for all letters of the word
{
Letter = tolower(Letter); // handle mixed case
if (LetterSeen[Letter])
{// if the letter is in the map
return false; // we do NOT have an isogram
}
else
{
LetterSeen[Letter] = true;// add the letter to the map
}
}

return true; // for example in cases where /0 is entered
}

bool FBullCowGame::IsLowercase(FString Word) const
{
for (auto Letter : Word)
{
if (!islower(Letter)) // if not a lowercase letter
{
return false;
}
}
return true;
}
44 changes: 44 additions & 0 deletions BuildingEscape/Source/BuildingEscape/FBullCowGame.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// Copyright Ben Tristem 2016.

#pragma once

struct FBullCowCount
{
int32 Bulls = 0;
int32 Cows = 0;
};

enum class EGuessStatus
{
Invalid_Status,
OK,
Not_Isogram,
Wrong_Length,
Not_Lowercase
};

class BUILDINGESCAPE_API FBullCowGame
{
public:
FBullCowGame(); // constructor

int32 GetMaxTries() const;
int32 GetCurrentTry() const;
int32 GetHiddenWordLength() const;
bool IsGameWon() const;
EGuessStatus CheckGuessValidity(FString) const;

void Reset();
FBullCowCount SubmitValidGuess(FString);


// ^^ Please try and ignore this and focus on the interface above ^^
private:
// see constructor for initialisation
int32 MyCurrentTry;
FString MyHiddenWord;
bool bGameIsWon;

bool IsIsogram(FString) const;
bool IsLowercase(FString) const;
};
28 changes: 28 additions & 0 deletions BuildingEscape/Source/BuildingEscape/IsoLock.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// Copyright Ben Tristem 2016.

#include "BuildingEscape.h"
#include "IsoLock.h"


// Sets default values
AIsoLock::AIsoLock()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;

}

// Called when the game starts or when spawned
void AIsoLock::BeginPlay()
{
Super::BeginPlay();

}

// Called every frame
void AIsoLock::Tick( float DeltaTime )
{
Super::Tick( DeltaTime );

}

25 changes: 25 additions & 0 deletions BuildingEscape/Source/BuildingEscape/IsoLock.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
// Copyright Ben Tristem 2016.

#pragma once

#include "GameFramework/Actor.h"
#include "IsoLock.generated.h"

UCLASS()
class BUILDINGESCAPE_API AIsoLock : public AActor
{
GENERATED_BODY()

public:
// Sets default values for this actor's properties
AIsoLock();

// Called when the game starts or when spawned
virtual void BeginPlay() override;

// Called every frame
virtual void Tick( float DeltaSeconds ) override;



};
25 changes: 16 additions & 9 deletions BuildingEscape/Source/BuildingEscape/OpenDoor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ void UOpenDoor::BeginPlay()

void UOpenDoor::OpenDoor()
{
Owner->SetActorRotation(FRotator(0.f, OpenAngle, 0.f));
// Owner->SetActorRotation(FRotator(0.f, OpenAngle, 0.f));
DonkeyEvent.Broadcast();
}

void UOpenDoor::CloseDoor()
Expand Down Expand Up @@ -57,16 +58,22 @@ float UOpenDoor::GetTotalMassOfActorsOnPlate()
{
float TotalMass = 0.f;

// Find all the overlapping actors
TArray<AActor*> OverlappingActors;
PressurePlate->GetOverlappingActors(OUT OverlappingActors);

// Iterate through them adding their masses
for (const auto& Actor : OverlappingActors)
if (!PressurePlate)
{
TotalMass += Actor->FindComponentByClass<UPrimitiveComponent>()->GetMass();
UE_LOG(LogTemp, Warning, TEXT("%s on pressure plate"), *Actor->GetName())
UE_LOG(LogTemp, Error, TEXT("%s not linked to a pressure plate"), *GetOwner()->GetName())
}
else
{
// Find all the overlapping actors
TArray<AActor*> OverlappingActors;
PressurePlate->GetOverlappingActors(OUT OverlappingActors);

// Iterate through them adding their masses
for (const auto& Actor : OverlappingActors)
{
TotalMass += Actor->FindComponentByClass<UPrimitiveComponent>()->GetMass();
UE_LOG(LogTemp, Warning, TEXT("%s on pressure plate"), *Actor->GetName())
}
}
return TotalMass;
}
Loading