19CSE100
PROBLEM SOLVING AND ALGORTHMIC THINKING
Submitted by
BL.EN.U4ECE22111 Chayanam Karthik
BL.EN.U4ECE22138 S L Saran Kumar
BL.EN.U4ECE22107 Arjun Sailanathan
BL.EN.U4ECE22103 Aravind Jayakrishnan
in partial fulfilment for the award of the degree of
BACHELOR OF TECHNOLOGY
IN
“ELECTRONICS AND COMMUNICATION ENGINEERING”
January-2023
AMRITA SCHOOL OF ENGINEERING,
BANGALORE
AMRITA VISHWA VIDYAPEETHAM
BENGALURU-560035
Aim : To simulate the game Hangman using C.
Procedure: By applying the four corner stones:
Decomposition: We have broken down the entire program of the
game into various modules simplifying it by functions such as genre,
rules, game_func, etc.
Abstraction: We have ensured detailing such as asking if
the user knows how to play or not. The rules are not
displayed if the player already knows how to play.
Pattern Recognition: Many of the recursions and calling of
functions is mainly recognised by patterns. For example, we split
the hangman structure into a function and called when called when
a certain pattern is appeared.
Algorithm: The algorithm for hangman in c is:
include "stdio.h"
include "stdlib.h"
include "string.h"
include "time.h"
void rules()
{
printf("\nThe rules of Hangman are:\n"); printf("A word will be
randomized in your choice of genre\n"); printf("You will
have 5 lifes to guess a letter in that word\n"); printf("If you guess
all letter without losing 5 lifes. You WIN\n"); printf("If you lose all
5 lifes. You LOSE\n"); printf("ENJOY\n\n");
}
int genres()
{ int
ch;
printf("Enter your genre\n");
printf("1) Names\n"); printf("2)
Football\n"); printf("3:
Apps\n");
printf("Enter a choice (1,2 or 3) : ");
scanf("%d",&ch);
if (ch ==
1) return
ch;
else if (ch == 2)
return ch; else if (ch ==
3) return ch; else{
printf("Invalid entry\n");
printf("Try again\n");
genres();
}
}
void dead()
{ printf("\t |------+
\n"); printf("\t | |
\n"); printf("\t | O
\n"); printf("\t | / \\
\n"); printf("\t | |
\n"); printf("\t | / \\
");
}
void life_0()
{ printf("\t |------+
\n"); printf("\t | \n");
printf("\t | \n");
printf("\t | \n");
printf("\t | \n");
printf("\t | ");
}
void life_1() {
printf("\t |------+ \n");
printf("\t | |\n");
printf("\t | \n");
printf("\t | \n");
printf("\t | \n");
printf("\t | ");
}
void life_2()
{ printf("\t |------+
\n"); printf("\t | |
\n"); printf("\t | O
\n"); printf("\t | \n");
printf("\t | \n");
printf("\t | ");
}
void life_3()
{ printf("\t |------+
\n"); printf("\t | |
\n"); printf("\t | O
\n"); printf("\t | / \\
\n"); printf("\t | \n");
printf("\t | ");
}
void life_4()
{ printf("\t |------+
\n"); printf("\t | |
\n"); printf("\t | O
\n"); printf("\t | / \\
\n"); printf("\t | |
\n"); printf("\t | ");
}
void printing(int lives){
if (lives == 5)
life_0(); if (lives == 4)
life_1(); if (lives == 3)
life_2(); if (lives == 2)
life_3(); if (lives == 1)
life_4(); if (lives == 0)
dead();
}
void game_func(char str[])
{
int strsize = strlen(str); int numLives
= 5; int numCorrect = 0; int oldCorrect =
0; int letterGuessed[8] = { 0,0,0,0,0,0,0,0
}; int loopIndex = 0; int reguessed = 0;
char guess[16];
char letter_entered;
while ( numCorrect < strsize ) {
printing(numLives);
printf("\n\n");
for(loopIndex = 0; loopIndex < strsize; loopIndex++) {
if(letterGuessed[loopIndex] == 1) {
printf("%c ", str[loopIndex]);
}
else {
printf("_ ");
}
printf("\n\n");
printf("Number Correct So Far : %d\n",numCorrect);
printf("Enter a guess letter:"); scanf("%s",&guess[0]);
letter_entered = guess[0];
reguessed = 0;
printf("letterEntered:%c\n",letter_entered); oldCorrect
= numCorrect;
for( loopIndex = 0; loopIndex < strsize; loopIndex++) {
if(letterGuessed[loopIndex] == 1) {
if(str[loopIndex] == letter_entered) {
reguessed = 1;
break;
}
continue;
}
if( letter_entered == str[loopIndex] ) {
letterGuessed[loopIndex] = 1;
numCorrect++;
}
}
if( oldCorrect == numCorrect && reguessed == 0) {
numLives--; printf("Sorry, wrong guess\n");
printf("\n\n");
if (numLives == 0) {
break;
}
}
else if( reguessed == 1) {
printf("Already Guessed!!\n");
}
else {
printf("Correct guess :)\n\n\n");
}
}
if (numLives == 0)
{ dead();
printf("\n\nSorry you lose, the word was: '%s'\n", str);
}
else {
printf("\nYOU WIN!!! :)\tThe word was '%s' \n",str);
}
int main()
{
srand(time(NULL));
char arr1[][20] = {"karthik","saran","arjun","aravind","sumukh"}; char
arr2[][20] = {"hazard","messi","ronaldo","kimmich","rashford"}; char
arr3[][20] = {"netflix", "amazon", "twitter", "whatsaap", "facebook"}; int
rand_num = rand() % 5;
int ch2,ch3;
char ch1;
printf("\nWELCOME TO HANGMAN\n");
printf("==================================
====\n");
printf("Do you know how to play? (y/n) : "); scanf("%c",&ch1);
if(ch1 == 'n')
rules();
printf("\n==========
===================
=========\n"); ch2
= genres();
printf("\n\n");
if (ch2 == 1)
game_func(arr1[rand_num]);
else if (ch2 == 2)
game_func(arr2[rand_num]);
else
game_func(arr3[rand_num]);
printf("\nDo you want to play again?(1. yes/2. no) : ");
scanf("%d",&ch3);
if (ch3 == 1)
main(); else
printf("Thank you");
printf("\n");
return 0; }
Conclusion: We have successfully interpreted the working of
the game Hangman using C.