Archives from S:\ Drive
Good to keep around methinks
This commit is contained in:
1 parent
eadaf70b9e
commit
6dd63cc439
606 files changed
+50212
No files matched your search
@@ -0,0 +1,20 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2012
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Hangman", "Hangman\Hangman.vcxproj", "{7310FC30-2591-4B40-9580-33268702093E}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{7310FC30-2591-4B40-9580-33268702093E}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{7310FC30-2591-4B40-9580-33268702093E}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{7310FC30-2591-4B40-9580-33268702093E}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{7310FC30-2591-4B40-9580-33268702093E}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -0,0 +1,458 @@
|
||||
#include "stdhangman.h"
|
||||
|
||||
Hangman::Hangman()
|
||||
{
|
||||
attempts = 0;
|
||||
wordLength = 0;
|
||||
secretWord = "";
|
||||
wordList = vector<hangword>();
|
||||
adminList = vector<string>();
|
||||
//readdmins();
|
||||
readFromFile();
|
||||
blankguesses();
|
||||
doseed();
|
||||
}
|
||||
|
||||
void Hangman::blankguesses()
|
||||
{
|
||||
attempts = 0;
|
||||
string alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
for (unsigned int i = 0; i < alpha.length(); i++)
|
||||
{
|
||||
alphabet[i] = alpha[i];
|
||||
}
|
||||
}
|
||||
|
||||
void Hangman::displayMenu()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
cls();
|
||||
fflush(stdout);
|
||||
centerline("Main Menu",1);
|
||||
centerline("==========================",2);
|
||||
centerline("1. Game Administration",3);
|
||||
centerline("2. Begin a game",4);
|
||||
centerline("3. Exit",5);
|
||||
centerline("==========================",6);
|
||||
cursorpos(1,7);
|
||||
cout << "Please make a selection" << endl << ":";
|
||||
char input;
|
||||
input = _getch();
|
||||
cout << input;
|
||||
switch (input)
|
||||
{
|
||||
case '1':
|
||||
while(doadmin());
|
||||
break;
|
||||
case '2':
|
||||
while(playGame());
|
||||
break;
|
||||
case '3':
|
||||
break;
|
||||
default:
|
||||
writeline("Please make a valid selection [1-3]");
|
||||
writeline(2);
|
||||
}
|
||||
if ( input == '3' )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool Hangman::playGame()
|
||||
{
|
||||
chooseword();
|
||||
blankguesses();
|
||||
while (attempts <= 6)
|
||||
{
|
||||
while(!handleinput());
|
||||
if (revealedword == secretWord)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
cls();
|
||||
if (attempts >= 6)
|
||||
{
|
||||
centerline("Hangman - Loss", 1);
|
||||
centerline(secretWord, 4);
|
||||
centerline("Sorry! You loose this round", 8);
|
||||
}
|
||||
else
|
||||
{
|
||||
centerline("Hangman - Winner", 1);
|
||||
centerline(secretWord, 4);
|
||||
centerline("Congratulations! You guessed correctly",8);
|
||||
}
|
||||
writeline(2);
|
||||
|
||||
char input;
|
||||
while (true)
|
||||
{
|
||||
cout << "Play again?" << endl << "[Y/n]";
|
||||
input = _getch();
|
||||
cout << input;
|
||||
if (toupper(input) == 'Y')
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else if (toupper(input) == 'N')
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
cout << "Please enter either Yes or No" << endl;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Hangman::notguessed(char inguess)
|
||||
{
|
||||
for (int j = 0; j < 26; j++)
|
||||
{
|
||||
if (alphabet[j] == inguess)
|
||||
{
|
||||
alphabet[j] = ' ';
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Hangman::doadmin()
|
||||
{
|
||||
cls();
|
||||
centerline("Hangman - Administration",1);
|
||||
centerline("Hangman Administrator Login",4);
|
||||
cursorpos(1,10);
|
||||
cout << "Please enter your password" << endl << ":";
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Hangman::isinword(char inguess)
|
||||
{
|
||||
string secret = getSecretWord();
|
||||
for (unsigned int i = 0; i < secret.length(); i++)
|
||||
{
|
||||
if (secret[i] == toupper(inguess))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void Hangman::drawletters()
|
||||
{
|
||||
for (int i = 0; i < 26; i++)
|
||||
{
|
||||
if (i == 0)
|
||||
{
|
||||
cursorpos (4,6);
|
||||
}
|
||||
if (i == 8)
|
||||
{
|
||||
cursorpos (4,8);
|
||||
}
|
||||
if (i == 16)
|
||||
{
|
||||
cursorpos (4,10);
|
||||
}
|
||||
if ( i == 24 )
|
||||
{
|
||||
cursorpos(4, 12);
|
||||
}
|
||||
cout << alphabet[i] << " ";
|
||||
}
|
||||
cursorpos(4, 18);
|
||||
cout << revealedword;
|
||||
}
|
||||
|
||||
bool Hangman::handleinput()
|
||||
{
|
||||
cls(); // clear screen
|
||||
drawseperator(); // do the separator thing
|
||||
centerline("Hangman",1); // screen title
|
||||
drawhangman();
|
||||
drawletters();
|
||||
fflush(stdout);
|
||||
cursorpos(0, 20);
|
||||
writeline("Please enter a letter");
|
||||
cout << ":";
|
||||
char input;
|
||||
input = _getch();
|
||||
input = toupper(input);
|
||||
cout << input;
|
||||
if (isalpha(input) && notguessed(input))
|
||||
{
|
||||
if (isinword(input))
|
||||
{
|
||||
revealchar(input);
|
||||
}
|
||||
else
|
||||
{
|
||||
attempts++;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
cout << input << " is an invalid input, please try again";
|
||||
pause();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void Hangman::revealchar(char input)
|
||||
{
|
||||
string secret = getSecretWord();
|
||||
for (unsigned int i = 0; i < secret.length(); i++)
|
||||
{
|
||||
if (secret[i] == input)
|
||||
{
|
||||
revealedword[i] = secret[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Hangman::readFromFile()
|
||||
{
|
||||
/*
|
||||
hangword holdword;
|
||||
ifstream hangmanfile ("wordlist.bin", ios::in|ios::binary|ios::ate);
|
||||
if (hangmanfile.is_open())
|
||||
{
|
||||
while(!hangmanfile.eof())
|
||||
{
|
||||
holdword.Read(hangmanfile);
|
||||
wordList.push_back(holdword);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cout << "Unable to open wordlist.bin for reading. Trying to create it.." << endl;
|
||||
*/
|
||||
initFile();
|
||||
// }
|
||||
}
|
||||
|
||||
void Hangman::initFile()
|
||||
{
|
||||
hangword holdword;
|
||||
ifstream hangwordtxt ("hangmanwordlist.txt", ios::in);
|
||||
int id = 1;
|
||||
if (hangwordtxt.is_open())
|
||||
{
|
||||
while (!hangwordtxt.eof())
|
||||
{
|
||||
string word = "";
|
||||
getline(hangwordtxt,word);
|
||||
for (unsigned int j = 0; j < word.length(); j++)
|
||||
{
|
||||
word[j] = toupper(word[j]);
|
||||
}
|
||||
holdword.setword(word);
|
||||
holdword.setid(id);
|
||||
wordList.push_back(holdword);
|
||||
id++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cout << "Error unable to open hangmanwordlist.txt for reading" << endl;
|
||||
pause();
|
||||
}
|
||||
hangwordtxt.close();
|
||||
if (wordList.size() != 0)
|
||||
{
|
||||
ofstream hangmanbin ("wordlist.bin", ios::out|ios::binary|ios::app);
|
||||
if (hangmanbin.is_open())
|
||||
{
|
||||
for (unsigned int i = 0; i < wordList.size(); i++)
|
||||
{
|
||||
wordList[i].Write(hangmanbin);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cout << "Error unable to open wordlist.bin for writing" << endl;
|
||||
pause();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
cout << "No words in the wordlist. Not creating file." << endl;
|
||||
pause();
|
||||
}
|
||||
}
|
||||
|
||||
void Hangman::chooseword()
|
||||
{
|
||||
if (wordList.size() == 0)
|
||||
{
|
||||
hangword hang;
|
||||
hang.setid(0);
|
||||
hang.setword("TEST");
|
||||
wordList.push_back(hang);
|
||||
}
|
||||
int wordindex = rand()%wordList.size();
|
||||
setSecretWord(wordList[wordindex].getword());
|
||||
string rev = string(getSecretWord().length(),'_');
|
||||
revealedword = rev;
|
||||
}
|
||||
|
||||
void Hangman::drawhangman()
|
||||
{
|
||||
cursorpos(55, 10);
|
||||
switch (attempts)
|
||||
{
|
||||
case 0:
|
||||
cout <<" ___ " << endl;
|
||||
cursorpos(55, 11);
|
||||
cout <<" | |" << endl;
|
||||
cursorpos(55, 12);
|
||||
cout <<" |" << endl;
|
||||
cursorpos(55, 13);
|
||||
cout <<" |" << endl;
|
||||
cursorpos(55, 14);
|
||||
cout <<" |" << endl;
|
||||
cursorpos(55, 15);
|
||||
cout <<" |" << endl;
|
||||
break;
|
||||
case 1:
|
||||
cout <<" ___ " << endl;
|
||||
cursorpos(55, 11);
|
||||
cout <<" | |" << endl;
|
||||
cursorpos(55, 12);
|
||||
cout <<" @ |" << endl;
|
||||
cursorpos(55, 13);
|
||||
cout <<" |" << endl;
|
||||
cursorpos(55, 14);
|
||||
cout <<" |" << endl;
|
||||
cursorpos(55, 15);
|
||||
cout <<" |" << endl;
|
||||
break;
|
||||
case 2:
|
||||
cout <<" ___ " << endl;
|
||||
cursorpos(55, 11);
|
||||
cout <<" | |" << endl;
|
||||
cursorpos(55, 12);
|
||||
cout <<" @ |" << endl;
|
||||
cursorpos(55, 13);
|
||||
cout <<" | |" << endl;
|
||||
cursorpos(55, 14);
|
||||
cout <<" |" << endl;
|
||||
cursorpos(55, 15);
|
||||
cout <<" |" << endl;
|
||||
break;
|
||||
case 3:
|
||||
cout <<" ___ " << endl;
|
||||
cursorpos(55, 11);
|
||||
cout <<" | |" << endl;
|
||||
cursorpos(55, 12);
|
||||
cout <<" @ |" << endl;
|
||||
cursorpos(55, 13);
|
||||
cout <<" /| |" << endl;
|
||||
cursorpos(55, 14);
|
||||
cout <<" |" << endl;
|
||||
cursorpos(55, 15);
|
||||
cout <<" |" << endl;
|
||||
break;
|
||||
case 4:
|
||||
cout <<" ___ " << endl;
|
||||
cursorpos(55, 11);
|
||||
cout <<" | |" << endl;
|
||||
cursorpos(55, 12);
|
||||
cout <<" @ |" << endl;
|
||||
cursorpos(55, 13);
|
||||
cout <<" /|\\ |" << endl;
|
||||
cursorpos(55, 14);
|
||||
cout <<" |" << endl;
|
||||
cursorpos(55, 15);
|
||||
cout <<" |" << endl;
|
||||
break;
|
||||
case 5:
|
||||
cout <<" ___ " << endl;
|
||||
cursorpos(55, 11);
|
||||
cout <<" | |" << endl;
|
||||
cursorpos(55, 12);
|
||||
cout <<" @ |" << endl;
|
||||
cursorpos(55, 13);
|
||||
cout <<" /|\\ |" << endl;
|
||||
cursorpos(55, 14);
|
||||
cout <<" | |" << endl;
|
||||
cursorpos(55, 15);
|
||||
cout <<" |" << endl;
|
||||
break;
|
||||
case 6:
|
||||
cout <<" ___ " << endl;
|
||||
cursorpos(55, 11);
|
||||
cout <<" | |" << endl;
|
||||
cursorpos(55, 12);
|
||||
cout <<" @ |" << endl;
|
||||
cursorpos(55, 13);
|
||||
cout <<" /|\\ |" << endl;
|
||||
cursorpos(55, 14);
|
||||
cout <<" | |" << endl;
|
||||
cursorpos(55, 15);
|
||||
cout <<" / |" << endl;
|
||||
break;
|
||||
case 7:
|
||||
cout <<" ___ " << endl;
|
||||
cursorpos(55, 11);
|
||||
cout <<" | |" << endl;
|
||||
cursorpos(55, 12);
|
||||
cout <<" @ |" << endl;
|
||||
cursorpos(55, 13);
|
||||
cout <<" /|\\ |" << endl;
|
||||
cursorpos(55, 14);
|
||||
cout <<" | |" << endl;
|
||||
cursorpos(55, 15);
|
||||
cout <<" / \\ |" << endl;
|
||||
break;
|
||||
}
|
||||
cursorpos(55, 16);
|
||||
cout <<" ________|________" << endl;
|
||||
cursorpos(55, 17);
|
||||
cout <<" / | /|" << endl;
|
||||
cursorpos(55, 18);
|
||||
cout <<"/________________/ /" << endl;
|
||||
cursorpos(55, 19);
|
||||
cout <<"|________________|/" << endl;
|
||||
}
|
||||
|
||||
void Hangman::setSecretWord(string word)
|
||||
{
|
||||
secretWord = word;
|
||||
}
|
||||
string Hangman::getSecretWord()
|
||||
{
|
||||
return secretWord;
|
||||
}
|
||||
|
||||
void Hangman::setWordLength(int length)
|
||||
{
|
||||
wordLength = length;
|
||||
}
|
||||
int Hangman::getWordLength()
|
||||
{
|
||||
return wordLength;
|
||||
}
|
||||
|
||||
/***********************************
|
||||
___
|
||||
| |
|
||||
@ |
|
||||
/|\ |
|
||||
| |
|
||||
/ \ |
|
||||
________|________
|
||||
/ | /|
|
||||
/________________/ /
|
||||
|________________|/
|
||||
|
||||
************************************/
|
||||
@@ -0,0 +1,42 @@
|
||||
#pragma once
|
||||
|
||||
#include "stdhangman.h"
|
||||
|
||||
class Hangman
|
||||
{
|
||||
private:
|
||||
int attempts;
|
||||
vector<hangword> wordList;
|
||||
vector<string> adminList;
|
||||
string secretWord;
|
||||
string revealedword;
|
||||
int wordLength;
|
||||
char alphabet[26];
|
||||
bool emessage;
|
||||
string message;
|
||||
public:
|
||||
Hangman();
|
||||
bool playGame();
|
||||
void enterNewWords();
|
||||
bool isWin();
|
||||
void convertToUpper();
|
||||
void readFromFile();
|
||||
|
||||
void setSecretWord(string word);
|
||||
string getSecretWord();
|
||||
|
||||
void setWordLength(int length);
|
||||
int getWordLength();
|
||||
|
||||
void initFile();
|
||||
bool notguessed(char guess);
|
||||
bool isinword(char guess);
|
||||
bool doadmin();
|
||||
void displayMenu();
|
||||
void drawhangman();
|
||||
bool handleinput();
|
||||
void blankguesses();
|
||||
void revealchar(char reveal);
|
||||
void chooseword();
|
||||
void drawletters();
|
||||
};
|
||||
@@ -0,0 +1,102 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{7310FC30-2591-4B40-9580-33268702093E}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>Hangman</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Hangman.cpp" />
|
||||
<ClCompile Include="main.cpp" />
|
||||
<ClCompile Include="Hangword.cpp" />
|
||||
<ClCompile Include="stdhangman.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="Hangman.h" />
|
||||
<ClInclude Include="main.h" />
|
||||
<ClInclude Include="resource.h" />
|
||||
<ClInclude Include="stdhangman.h" />
|
||||
<ClInclude Include="hangword.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="Resource.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="icon.ico" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="main.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Hangman.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="stdhangman.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Hangword.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="stdhangman.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Hangman.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="hangword.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="main.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="resource.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="Resource.rc">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="icon.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</Image>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,76 @@
|
||||
#include "stdhangman.h"
|
||||
|
||||
int hangword::getid()
|
||||
{
|
||||
return id;
|
||||
}
|
||||
void hangword::setid(int id)
|
||||
{
|
||||
this->id = id;
|
||||
}
|
||||
|
||||
void hangword::setword(string word)
|
||||
{
|
||||
this->word = word;
|
||||
}
|
||||
string hangword::getword()
|
||||
{
|
||||
return word;
|
||||
}
|
||||
|
||||
void hangword::Read(ifstream& file)
|
||||
{
|
||||
setid(readid(file));
|
||||
setword(readword(file));
|
||||
}
|
||||
|
||||
void hangword::Write(ofstream& file)
|
||||
{
|
||||
int id = getid();
|
||||
writeid(file, id);
|
||||
writeword(file, getword());
|
||||
}
|
||||
|
||||
void hangword::writeword(ofstream& file,const string& str)
|
||||
{
|
||||
// get the length of the string data
|
||||
unsigned int len = str.size();
|
||||
|
||||
// write the size:
|
||||
file.write( reinterpret_cast<const char*>( &len ), sizeof(len) );
|
||||
|
||||
// write the actual string data:
|
||||
file.write( str.c_str(), len );
|
||||
}
|
||||
|
||||
string hangword::readword(ifstream& file)
|
||||
{
|
||||
// this probably isn't the optimal way to do it, but whatever
|
||||
string str;
|
||||
|
||||
// get the length
|
||||
unsigned int len;
|
||||
file.read( reinterpret_cast<char*>( &len ), sizeof(len) );
|
||||
|
||||
// we can't read to string directly, so instead, create a temporary buffer
|
||||
if(len > 0)
|
||||
{
|
||||
char* buf = new char[len];
|
||||
file.read( buf, len );
|
||||
str.append( buf, len );
|
||||
delete[] buf;
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
inline void hangword::writeid(ofstream& file, int& num)
|
||||
{
|
||||
file.write(reinterpret_cast<char *>(&num),sizeof(int));
|
||||
}
|
||||
|
||||
int hangword::readid(ifstream& file)
|
||||
{
|
||||
int num;
|
||||
file.read(reinterpret_cast<char *>(&num),sizeof(int));
|
||||
return num;
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,100 @@
|
||||
fluorine
|
||||
steapsin
|
||||
gadoid
|
||||
optics
|
||||
master
|
||||
uninvasive
|
||||
nettable
|
||||
preintend
|
||||
scourge
|
||||
clinah
|
||||
planking
|
||||
autogenetic
|
||||
inweaved
|
||||
peipus
|
||||
corneal
|
||||
descendant
|
||||
premonopolizing
|
||||
wadmoll
|
||||
grimily
|
||||
anatolic
|
||||
uniced
|
||||
unendeared
|
||||
geothermic
|
||||
tarsier
|
||||
hartmann
|
||||
actuarially
|
||||
caffein
|
||||
antiexpressive
|
||||
refasten
|
||||
hostelling
|
||||
sacculus
|
||||
teazeling
|
||||
resolution
|
||||
demoralised
|
||||
fletcherizing
|
||||
decently
|
||||
mitrephorus
|
||||
reverser
|
||||
eudora
|
||||
comestible
|
||||
kilpatrick
|
||||
peroneal
|
||||
corporate
|
||||
provisional
|
||||
plaice
|
||||
atheneum
|
||||
juicing
|
||||
wintery
|
||||
ellipsoid
|
||||
avigation
|
||||
republicanism
|
||||
bocage
|
||||
frederika
|
||||
cleruch
|
||||
counterbracing
|
||||
uninstigated
|
||||
undocumented
|
||||
voyeurism
|
||||
catchfly
|
||||
scatomas
|
||||
overwore
|
||||
radiably
|
||||
rhoecus
|
||||
eighteenmo
|
||||
imperfectness
|
||||
siziness
|
||||
curable
|
||||
gradin
|
||||
breadroot
|
||||
heresy
|
||||
ophytic
|
||||
cosmopolitanizing
|
||||
cannoneer
|
||||
haverhill
|
||||
abingdon
|
||||
mentor
|
||||
dissimulator
|
||||
fazenda
|
||||
syrphid
|
||||
rockier
|
||||
inobservance
|
||||
hipbone
|
||||
duckiest
|
||||
interclub
|
||||
mollendo
|
||||
touche
|
||||
dionysius
|
||||
impedible
|
||||
intoner
|
||||
cichoriaceous
|
||||
nondrinkable
|
||||
nevada
|
||||
pithecanthropus
|
||||
upswinging
|
||||
humectant
|
||||
diakinesis
|
||||
capacitively
|
||||
nonaccord
|
||||
cilice
|
||||
exuviate
|
||||
@@ -0,0 +1,25 @@
|
||||
#pragma once
|
||||
|
||||
#include "stdhangman.h"
|
||||
|
||||
class hangword
|
||||
{
|
||||
private:
|
||||
int id;
|
||||
string word;
|
||||
public:
|
||||
void setid(int in);
|
||||
int getid();
|
||||
|
||||
void setword(string in);
|
||||
string getword();
|
||||
|
||||
void Read(ifstream& file);
|
||||
void Write(ofstream& file);
|
||||
|
||||
void writeword(ofstream& file,const string& str);
|
||||
string readword(ifstream& file);
|
||||
|
||||
void writeid(ofstream& file, int& num);
|
||||
int readid(ifstream& file);
|
||||
};
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 264 KiB |
@@ -0,0 +1,78 @@
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
|
||||
#include "stdhangman.h"
|
||||
#include "main.h"
|
||||
#include "resource.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
int main()
|
||||
{
|
||||
ConsoleSetup(TEXT("Hangman"));
|
||||
Hangman game;
|
||||
game.displayMenu();
|
||||
|
||||
cout << "Thanks for playing!" << endl << endl;
|
||||
pause();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* ------------------------------------------- Just boring stuff after here ------------------------ */
|
||||
|
||||
void ConsoleSetup(TCHAR* input)
|
||||
{
|
||||
system("color 1e");
|
||||
|
||||
ChangeConsoleIcon(IDI_ICON1);
|
||||
ChangeConsoleTitle(input);
|
||||
cout << string(80,'*') << "Welcome to ";
|
||||
wcout << input;
|
||||
cout << " " << GetYear() << " Edition!" << endl << string(80,'*') << endl << endl;
|
||||
}
|
||||
|
||||
void ChangeConsoleTitle (const TCHAR* input)
|
||||
{
|
||||
time_t t = time(NULL);
|
||||
tm* timePtr = localtime(&t);
|
||||
TCHAR szNewTitle[MAX_PATH];
|
||||
TCHAR szYear[7];
|
||||
|
||||
StringCchCopy(szNewTitle, MAX_PATH, TEXT(" "));
|
||||
StringCchCat(szNewTitle, MAX_PATH, input);
|
||||
|
||||
StringCchPrintf(szYear, 7, TEXT(" %d!"), GetYear());
|
||||
StringCchCat(szNewTitle, MAX_PATH, szYear);
|
||||
|
||||
SetConsoleTitle(szNewTitle);
|
||||
}
|
||||
|
||||
void ChangeConsoleIcon (const int resource_number)
|
||||
{
|
||||
HMODULE hMainMod = GetModuleHandle(0);
|
||||
assert (hMainMod);
|
||||
|
||||
HICON hMainIcon = ::LoadIcon(hMainMod, MAKEINTRESOURCE(resource_number));
|
||||
assert (hMainIcon);
|
||||
|
||||
// Load kernel 32 library
|
||||
HMODULE hMod = LoadLibrary( _T( "Kernel32.dll" ));
|
||||
assert (hMod);
|
||||
|
||||
// Load console icon changing procedure
|
||||
typedef DWORD (__stdcall *SCI)(HICON);
|
||||
SCI pfnSetConsoleIcon = reinterpret_cast<SCI>(GetProcAddress(hMod, "SetConsoleIcon"));
|
||||
assert (pfnSetConsoleIcon);
|
||||
|
||||
// Call function to change icon
|
||||
pfnSetConsoleIcon (hMainIcon);
|
||||
|
||||
FreeLibrary (hMod);
|
||||
}// End ChangeIcon
|
||||
|
||||
int GetYear()
|
||||
{
|
||||
time_t t = time(NULL);
|
||||
tm* timePtr = localtime(&t);
|
||||
|
||||
return timePtr->tm_year + 1900;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
|
||||
|
||||
void ChangeConsoleTitle (const TCHAR* input);
|
||||
|
||||
void ChangeConsoleIcon (int resource_number);
|
||||
|
||||
void ConsoleSetup(TCHAR* input);
|
||||
|
||||
int GetYear();
|
||||
|
||||
enum { NUL = 0, SOH, STX, ETX, EOT, ENQ, ACK, BEL, BS, HT,
|
||||
LF, VT, FF, CR, SO, SI, DLE, DC1, DC2, DC3, DC4, NAK,
|
||||
SYN, ETB, CAN, EM, SUB, ESC, FS, GS, RS, US, DEL = 127 };
|
||||
Binary file not shown.
@@ -0,0 +1,94 @@
|
||||
#include "stdhangman.h"
|
||||
|
||||
// Pause() use conio.h's get character to pause the program
|
||||
void pause()
|
||||
{
|
||||
int c;
|
||||
cout << endl << "Press any key to continue . . ." << endl;
|
||||
c = _getch();
|
||||
if (c == 0 || c == 224) // getch will return a 0 or 244 on error
|
||||
{
|
||||
_getch(); // try again
|
||||
}
|
||||
}
|
||||
|
||||
// cursorpos(X,Y) use ConsoleAPI to place the cursor at a particular position
|
||||
void cursorpos(int X, int Y)
|
||||
{
|
||||
if ( X < 0 ) // off the screen
|
||||
{
|
||||
X = 0;
|
||||
}
|
||||
if ( Y < 0 )
|
||||
{
|
||||
Y = 0;
|
||||
}
|
||||
HANDLE hStdOut = GetStdHandle( STD_OUTPUT_HANDLE ); //grab the stdout handle
|
||||
COORD newpos = { X, Y }; // use the Coord struct to stage the new position
|
||||
SetConsoleCursorPosition( hStdOut, newpos ); // set the new cursor position
|
||||
}
|
||||
|
||||
// take the input modulus the length by 80, set the cursor position there
|
||||
void centerline(string input, int linenum)
|
||||
{
|
||||
if (input.length() > 80) // over 80 characters? must be centred already
|
||||
{
|
||||
cursorpos(0,linenum);
|
||||
}
|
||||
int mod = (80-input.length())/2; // formula: input length subtracted from console line length divided by 2
|
||||
cursorpos(mod,linenum); // set where to write
|
||||
cout << input << endl; // write it
|
||||
}
|
||||
|
||||
// write a line
|
||||
void writeline(string input)
|
||||
{
|
||||
cout << ' ' << input << endl; // simple function to begin a line with a ' '
|
||||
}
|
||||
|
||||
// write a blank line
|
||||
void writeline(int num)
|
||||
{
|
||||
for (int i = 0; i <= num; i++) // easy function for multiple blank lines
|
||||
{
|
||||
cout << endl;
|
||||
}
|
||||
}
|
||||
|
||||
// do the separator thing
|
||||
void drawseperator()
|
||||
{
|
||||
for (int i = 2; i < 24; i++) // separates the hangman from the words
|
||||
{
|
||||
cursorpos(50,i);
|
||||
cout << "|";
|
||||
}
|
||||
}
|
||||
|
||||
// seed using micro time. much better than grabbing a random pointer.
|
||||
void doseed()
|
||||
{
|
||||
unsigned __int64 freq;
|
||||
QueryPerformanceFrequency((LARGE_INTEGER*)&freq);
|
||||
double timerFrequency = (1.0/freq);
|
||||
|
||||
unsigned __int64 startTime;
|
||||
QueryPerformanceCounter((LARGE_INTEGER *)&startTime);
|
||||
srand(startTime*freq);
|
||||
}
|
||||
|
||||
// use the console api to fill the screen with spaces
|
||||
void cls() {
|
||||
HANDLE screen = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||
COORD pos = {0, 0};
|
||||
DWORD written;
|
||||
CONSOLE_SCREEN_BUFFER_INFO screen_attr;
|
||||
unsigned size;
|
||||
|
||||
GetConsoleScreenBufferInfo(screen, &screen_attr);
|
||||
|
||||
size = screen_attr.dwSize.X * screen_attr.dwSize.Y;
|
||||
FillConsoleOutputCharacterW(screen, ' ', size, pos, &written);
|
||||
|
||||
SetConsoleCursorPosition(screen, pos);
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <fstream>
|
||||
#include <ctime>
|
||||
#include <ctype.h>
|
||||
|
||||
#include <Windows.h>
|
||||
#include <conio.h>
|
||||
#include <time.h>
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <iomanip>
|
||||
#include <sstream>
|
||||
|
||||
#include <tchar.h>
|
||||
#include <strsafe.h>
|
||||
#include "atlbase.h"
|
||||
#include "atlstr.h"
|
||||
#include "comutil.h"
|
||||
|
||||
#include "Hangman.h"
|
||||
#include "hangword.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
void pause();
|
||||
void cursorpos(int x, int y);
|
||||
void centerline(string input, int linenum);
|
||||
void writeline(string input);
|
||||
void writeline(int num);
|
||||
void drawseperator();
|
||||
void doseed();
|
||||
void cls();
|
||||
Binary file not shown.
Reference in new issue
Block a user