#include <iostream>
#include <fstream>
#include <string>
#include <cctype>
using namespace std;
#define MAX_WORD_SIZE 15 // The maximum size of word
#define MAX_WORDS 255 // the max number of words
void EnterWord();
void LoadFile();
void ChooseWord();
void RunGame();
void instruction();
void DrawGallows(int State);
typedef char String [MAX_WORD_SIZE]; // a char type with 15 characters
String Words [MAX_WORDS-1];
int Count; // word count
char menu;
char Continue;
char choice;
int main()
{
instruction();
cout << "Choice: ";
cin >> choice;
cout << " " << endl;
while (Continue =='Y')
{
cout<<"Welcome to Hangman . . . Don't lose your head!"<<endl;
switch(choice)
{
case '1':
EnterWord();
break;
case '2':
ChooseWord();
break;
case '3':
cout<<"\n\nBye!"<<endl<<endl;
break;
default:
cerr << "Invalid choice - " << menu << endl
<< "enter again please. " << endl << endl;
}
}
}
// Function to run the program
void instruction() // show the instruction
{
cout<<"\n\n *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.* H A N G M A N *.*.*.*.*.*.*..*.*.*.*.*.*";
cout<<"\n\n1. Enter a word (2 Player)";
cout<<"\n\n2. Computer chooses word (1 Player)";
cout<<"\n\n3. Quit ";
cin.get();
}
// if option is 1
void LoadFile()
{
char C;
ifstream Datfile;
Count = 0 ;
Datfile.open("word.txt" );// open the data file word.txt
while (( C=Datfile.peek()) !=EOF)
{
// get the next word and then increment Count
Datfile>> Words [Count++];
// If we surpass the max exit and tell the user
if (Count > MAX_WORDS -1 )
{
cout << endl << "Too many words in the file, stopping with "<< MAX_WORDS<< "words"<< endl;
Count = MAX_WORDS;
break;
}
}
// subtract one to get the correct number of words
Count--;
//Close the file
Datfile.close();
}
void EnterWord()
{
char solution[20]; //holds solution
char blank[20]; //holds "*"'s for unsolved letters
int Subscript=0;
int State=1;
char Guess[20];
char Copy [20];
char Letter;
int Correct =0 ;
// input the string and getline it
cout<<"Enter phrase 20 chars or less."<<endl;
cin.getline(solution, 20);
int Word; // this will hold the subscript of our word
int Size; // this will hold the length of our word int State = 1 ; // This will hold the game state. int Subscript= 0; // This will hold the subscirpt char Guess [MAX_WORD_SIZE]; // this will hold their current word char Copy [MAX_WORD_SIZE]// this will hold a copy of word
char letter;// this will be their letter guess int Correct = 0 ; // This is a true/ false value
//Create a null terminated string to represent the word as the player know it//
for ( ; Subscript < Size; Subscript++)
{
Guess [Subscript] = '-';
}
// insert the null character
Guess [Subscript] = '\0';
// Go until the player is hung
while (State!=6)
{
DrawGallows(State);
cout << Guess << endl;
cout << "Guess a letter:" ;
cin >> letter;
// use only lower case letters
Letter = tolower(Letter);
for (Subscript = 0 ; Subscript < Size; Subscript ++ )
{
if (Copy[Subscript]== Letter)
{
Guess [Subscript] = Letter;
Correct =1 ;
cout<< endl<< "Good Guess";
// If guess equals the word they won so exit
if (strcmp (Words[Word],Guess) == 0 )
{
cout << endl << "Congratulation !! You won !!" << endl;
return;
}
}
}
// If they did not guess correctly
if (Correct == 0)
{
cout<< endl << "Sorry,bad guess!";
State++;
}
Correct = 0 ;
}
DrawGallows(State); // Draw the gallows at end of game
cout << "the word was : " << Words [Word]<< endl << endl;
}
void ChooseWord() // input choice = 2
{
LoadFile(); // call the function to open the file
int Word; // this will hold the subscript of our word
int Size; // this will hold the length of our word
int State = 1 ; // This will hold the game state.
int Subscript= 0; // This will hold the subscirpt
char Guess [MAX_WORD_SIZE]; // this will hold their current word
char Copy [MAX_WORD_SIZE];// this will hold a copy of word
char Letter;// this will be their letter guess
int Correct = 0 ; // This is a true/ false value
//Create a random number
srand (( unsigned)time (NULL));
Word = rand () % Count; // find the remainder
// Make a local copy of the word
strcpy(Copy,Words[Word]);
Size = strlen ( Words[Word]); // get the word's size
//Create a null terminated string to represent the word as the player know it//
for ( ; Subscript < Size; Subscript++)
{
Guess [Subscript] = '-';
}
// insert the null character
Guess [Subscript] = '\0';
// Go until the player is hung
while (State!=6)
{
DrawGallows(State);
cout << Guess << endl;
cout << "Guess a letter:" ;
cin >> Letter;
// use only lower case letters
Letter = tolower(Letter);
for (Subscript = 0 ; Subscript < Size; Subscript ++ )
{
if (Copy[Subscript]== Letter)
{
Guess [Subscript] = Letter;
Correct =1 ;
cout<< endl<< "Good Guess";
// If guess equals the word they won so exit
if (strcmp (Words[Word],Guess) == 0 )
{
cout << endl << "Congratulation !! You won !!" << endl;
return;
}
}
}
// If they did not guess correctly
if (Correct == 0)
{
cout<< endl << "Sorry,bad guess!";
State++;
}
Correct = 0 ;
}
DrawGallows(State); // Draw the gallows at end of game
cout << "the word was : " << Words [Word]<< endl << endl;
}
void DrawGallows(int State)
{
if(State==6)
{
// The \\ will translate as '\' because it is a special char
cout<<endl<<endl
<<" +----+ "<<endl
<<" | | "<<endl
<<" | O "<<endl
<<" | /|\\ "<<endl
<<" | / \\ "<<endl
<<" |Your Dead "<<endl
<<" ============"<<endl<<endl;
}
else if(State==5)
{
cout<<endl<<endl
<<" +----+ "<<endl
<<" | | "<<endl
<<" | O "<<endl
<<" | /|\\ "<<endl
<<" | \\ "<<endl
<<" | "<<endl
<<" ============"<<endl<<endl;
}
else if(State==4)
{
cout<<endl<<endl
<<" +----+ "<<endl
<<" | | "<<endl
<<" | O "<<endl
<<" | /|\\ "<<endl
<<" | "<<endl
<<" | "<<endl
<<" ============="<<endl<<endl;
}
else if(State==3)
{
cout<<endl<<endl
<<" +----+ "<<endl
<<" | | "<<endl
<<" | O "<<endl
<<" | /| "<<endl
<<" | "<<endl
<<" | "<<endl
<<" ============="<<endl<<endl;
}
else if(State==2)
{
cout<<endl<<endl
<<" +----+ "<<endl
<<" | | "<<endl
<<" | O "<<endl
<<" | | "<<endl
<<" | "<<endl
<<" | "<<endl
<<" ============="<<endl<<endl;
}
else if(State==1)
{
cout<<endl<<endl
<<" +----+ "<<endl
<<" | | "<<endl
<<" | "<<endl
<<" | "<<endl
<<" | "<<endl
<<" | "<<endl
<<" ============="<<endl<<endl;
}
}
MAY BAC HELP EM VOI, CHUONG TRINH NO KHONG CHAY, COMPILE OK ROI MA EM KHONG BIET SAO, NGAY MAI NO DUE... HUHU MÂY BAC SUA DUM EM CHO NO CHAY VOI HĨ HIXX
Bookmarks