Video of Day

Mini project Hang Man in C++


It is a simple project just to provide a Hang Man game concept.In this project I haven’t draw a man for a wrong choice so,try to draw a simple man by using “|” pattern in your project which make your project better .
Here is the source code ,copy and compile it in Code::blocks gcc compiler.

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <fstream>
#include <cstring>
 
using namespace std;
 
inline void type_of_word(char f);
 
 
int main()
{   char c,h,ch,ch1,ch2;
    char word[25];
    char word2[25];
 
    int l,i,ng,n,k,x;
 
do{
    do{
        c='\0';
        cout<<"\n\t\t    *********** HANGMAN IN C++ ***********\n\n";
 
        cout<<"(E) Enter a word\n\n(C) Computer chooses word\n\n(A)" 
        cout<<"Add new word to list\n\n(Q) Quit\n\n\nEnter your choice (E - C - Q): ";
        cin>>ch2;
       }while (ch2!='C' && ch2!='c' && ch2!='E' && ch2!= 'e' &&
                ch2!='Q' && ch2!= 'q'&& ch2!='A' && ch2!= 'a');
    if (ch2 == 'Q' || ch2=='q')  exit (0);
 
    if (ch2 == 'C' || ch2=='c')
 
    {
        ifstream fin("hangword.txt");
        if(!fin) {
        cout<<"File missing, aborting.\n\nYou are missing a file of name" 
        cout<<"**hangword.txt**\n\nLocate it, then place it next to the" 
        "program file.\n\n"; system("pause"); return 0;}
        for (i=0;!fin.eof();i++)   fin.getline(word,25);
        fin.close();
 
        do {
        x=rand();
        }while(x>i || x<0);
 
        ifstream finn("hangword.txt");
        for (i=0;!finn.eof();i++)
        {finn>>c; finn.getline(word,25); if (x==i) break;}
        finn.close();
    }
 
  if (ch2 == 'A' || ch2=='a')
 
    {
        ofstream fout("hangword.txt",ios::app);
        if(!fout) {//clrscr();
        cout<<"File missing, aborting.\n\nYou are missing a file of name"
        " **hangword.txt**\n\nLocate it, then place it next to the program"
        " file.\n\n"; system("pause"); return 0;}
        cin.get();
        cout<<"Choose the topic of your word\n\n(M) Movie\n\n(A) Animal\n\n(P)"
        " Sport\n\n(S) Song\n\nEnter your choice (A-P-S-M) : ";
        cin>>h;
        cin.get();
        //clrscr();
        cout<<"\n\nThe word should not exceed 25 letters\n\nEnter the word : ";
        cin.getline(word,25);
        fout<<h<<word<<endl;
        fout.close();
 
    }
 
 
   if (ch2 == 'E' || ch2=='e')
     {// clrscr();
       cin.get();
       cout<<"\t\t\t Type the word :  ";
       cin.getline (word, 25);
     }
 if (ch2 == 'E' || ch2=='e' || ch2 == 'C' || ch2=='c')
{
l=strlen(word);
char choosen[25]="\0";
n=0;k=0;
 
 for(i=0;i<=24;i++)
   {
    if (word[i]=='\0') {word2[i]='\0';break;}
    if (word[i]==' ')  {word2[i]=' ';  n++;}
    if (word[i]!=' ')  word2[i]='-';
   }
ng=l+2-n;     //only 2 guesses extra
   do{
   there:  type_of_word(c);
     if (k!=0)  cout<<"\n\n\t\t\tChoosen letters : "<<choosen<<"\n";
     cout<<"\n\n\n\t\t\t      "<<word2<<"\n\n\nYou have "<<ng
     << " guesses left, choose a letter : ";
     cin>>ch; cin.get();
     for (i=0;i<25;i++) if (choosen[i]==ch) {//clrscr();
     cout<<"\a\t\t     !!You have choosen "<<ch<<" already!!\n";goto there;}
     ng--; choosen [k]=ch; choosen [k+1]=',';k+=2;
 
     for (i=0;i<=24;i++)    
     if (word[i]==ch || word[i]==ch+32 || word[i]==ch-32) word2[i]=ch;
     if (!strcmpi (word2,word)) {cout<<"\n\t\t\t      "<<strupr(word)
     <<"\n\n\t\t\tCongratulations  :-()\n"; break;}
 
    }while(ng>0 || !strcmpi (word2,word));
 
 
if (strcmpi (word2,word))  cout<<"\nSorry, maybe next time.\n\nThe word was : "
<<strupr(word)<<endl;
}
 
cout<<"\nWould you like to play again??? (Y - N) : ";
cin>>ch1;  cin.get();
 
}while (ch1=='y' || ch1=='Y');
      system("PAUSE");
      return 0;
}
 
inline void type_of_word(char f)
 
{    if (f=='m') cout<<"\t\t\t\tMOVIE";
     if (f=='a') cout<<"\t\t\t\tANIMAL";
     if (f=='p') cout<<"\t\t\t\tSPORT";
     if (f=='s') cout<<"\t\t\t\tSONG";
}
 
// End of Code
Share on Google Plus

About Admin

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment
    Facebook Comment

0 comments:

Post a Comment