04-06-2009
whats wrong with this?
can anyone tell me why this code doesn't work how its supposed to, its the hangman game but it doesn't play how its supposed to
#!/bin/bash
NoAttempts="0"
livesgiven="5"
LivesRemain=$livesgiven
LettersAttempted=""
wordfile=words
numwords=0
function menu()
{
clear
cat << menu
~~~~~~~~~~~~~~~~~~~ WELCOME ~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~ THE HANGMAN GAME ~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~ DO YOU WANT TO PLAY? ~~~~~~~~~~~~
Enter your selection (Y/N):
menu
read selection
case $selection in
[Yy]) randomwords clear ;;
[Nn]) echo "Goodbye!"
clear ;;
*) menu;;
esac
}
function randomwords()
{
while read line
do
wordline[$numwords]=$(echo -n "$line")
numwords=$(($numwords +1))
done < $wordfile
numwords=$(($numwords -1))
selection=$(($RANDOM%$numwords+1))
wordpuzzle=$(echo -n ${wordline[$selection]}|tr [a-z] "-")
letter_entry
}
function letter_entry()
{
24,1 Top
lettercount=$(echo -n $wordpuzzle | wc -c )
liveslost=$(($livesgiven-$LivesRemain))
clear
echo "This is a $lettercount letter word."
echo "You have made $NoAttempts attempts, with $LivesRemain lives remaining and have attempted the following letters: $LettersAttempted"
echo "Please enter a letter to guess the puzzle:"
echo "$wordpuzzle"
read letter_new
puzzle=$(echo $wordpuzzle | grep -c "-")
while [ $puzzle -gt 0 ]
do
case $letter_new in
[A-Za-z]) LettersAttempted=$letter_new$LettersAttempted
NoAttempts=$(($NoAttempts + 1))
lettercheck=$(echo ${wordline[$selection]} | grep -c $letter_new)
if [ $lettercheck -eq 0 ]
then
LivesRemain=$(($LivesRemain-1))
if [[ $LiveRemain == 0 ]]
then
clear
echo "Sorry you have no more lives left. You lost! Thank you for playing Hangman."
lostmessage
else
letter_entry
fi
else
wordpuzzle=$(echo ${wordline[$selection]} | tr -c [$LettersAttempted] "-")
letter_entry
fi ;;
*) echo " Please only enter an alphabet"
letter_entry ;;
esac
done
clear
echo "Congratulations!
The word was $(echo $selection). You have successfully completed the word puzzle with $NoAttempts attempts and the lost of $liveslost lives"
echo "Thank you for playing Hangman!"
while true
do
echo "Do you want to play again? (Y/N)?"
read prompt
case "$prompt" in
[Yy]) menu ;;
[Nn]) return 1 ;;
*) echo "Answer Y or N" ;;
esac
done
}
menu
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
#! /bin/bash
head -5 $1
echo "remove $1 ?"
read answer
if
then
echo invalid answer
elif
rm $1
echo "$1 is deleted"
elif
then
echo file is not deleted
else
echo "invalid answer"
fi
What i really want this to do is to ask to delete the file or not..it says something wrong... (1 Reply)
Discussion started by: nadman123
1 Replies
2. Shell Programming and Scripting
#! /bin/bash
USAGE=" | ]
if
then
echo "$USAGE"
exit 1
fi
while getopts lb: OPTION
do
case $(OPTION)in
a) echo Hi there!
exit 2;;
b) echo hello
o) OARG=$OPTARG;;
\?)echo "$USAGE" ;;
exit 2;;
esac
done
shift `expr... (1 Reply)
Discussion started by: nadman123
1 Replies
3. Shell Programming and Scripting
ls -ld | grep $1 /etc/passwd | cut -d: -f6
i need see the content... (4 Replies)
Discussion started by: nadman123
4 Replies
4. UNIX for Dummies Questions & Answers
if
then
if
then
echo "fst argument is $1 "
else
if
then
"fst argument is $1"
fi
fi
fi
Can anyone tell me. My requirement is tht pass a string ..
Check whether it contains "-". If yes then check if it... (1 Reply)
Discussion started by: nehagupta2008
1 Replies
5. Shell Programming and Scripting
I have a file $I_FILE that I need to filter and store the 1st and the 9th columns in another file $O_FILE.
With this in Perl,
system ("awk -F, '{print \$1, \$9}' \$I_FILE | sed '\/^\$\/d' > O_FILE");
I get:
4096045055
The first line in I_FILE is:... (5 Replies)
Discussion started by: looza
5 Replies
6. Shell Programming and Scripting
Code:
#!/usr/bin/perl -w
use strict;
use warnings;
#Clears Screen
$CLEAR=`clear`;
print $CLEAR;
i get the below error:
Global symbol "$CLEAR" requires explicit package name at ./mutmg.pl line 6.
Global symbol "$CLEAR" requires explicit package name at ./mutmg.pl line 7. (1 Reply)
Discussion started by: sophos
1 Replies
7. Shell Programming and Scripting
Need your assistance, to find the bug in the function.
Function usage erroring out even after passing parameters.
usage() {
if || ; then
echo "************************************************************"
echo " CHECK USAGE FOR CORRECT PARAMETERS ... (26 Replies)
Discussion started by: raghunsi
26 Replies
8. Homework & Coursework Questions
Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted!
1. The problem statement, all variables and given/known data:
ls -ld htdocs
drwxr-x--- 3 root root 8192 2006-11-19 10:41 htdocs
How would a host administrator... (1 Reply)
Discussion started by: Larry_1
1 Replies
9. UNIX for Dummies Questions & Answers
hi whats wrong in below??
CHECK=M10;
if ;
then
echo "hello hi";
else
echo "how are u hello hi";
fi
I am getting error as
./test.sh: line 2: '
./test.sh: line 2: M10: command not found
./test.sh: line 2: M10: command not found
./test.sh: line 2: M10: command not found (8 Replies)
Discussion started by: skyineyes
8 Replies
10. Shell Programming and Scripting
Hi there,
i have a problem i have created followning sh files some years ago but now it dosen`t work anymore i never used it a long time. Can anyone find the Error? Its always runs the stop() block and trying to Killing the Server also if i try to start or creat a new one.
#!/bin/sh
stop()... (6 Replies)
Discussion started by: NewCannon
6 Replies
shells(4) File Formats shells(4)
NAME
shells - shell database
SYNOPSIS
/etc/shells
DESCRIPTION
The shells file contains a list of the shells on the system. Applications use this file to determine whether a shell is valid. See getuser-
shell(3C). For each shell a single line should be present, consisting of the shell's path, relative to root.
A hash mark (#) indicates the beginning of a comment; subsequent characters up to the end of the line are not interpreted by the routines
which search the file. Blank lines are also ignored.
The following default shells are used by utilities: /bin/bash, /bin/csh, /bin/jsh, /bin/ksh, /bin/pfcsh, /bin/pfksh, /bin/pfsh, /bin/sh,
/bin/tcsh, /bin/zsh, /sbin/jsh, /sbin/sh, /usr/bin/bash, /usr/bin/csh, /usr/bin/jsh, /usr/bin/ksh, /usr/bin/pfcsh, /usr/bin/pfksh,
/usr/bin/pfsh, and /usr/bin/sh, /usr/bin/tcsh, /usr/bin/zsh. Note that /etc/shells overrides the default list.
Invalid shells in /etc/shells may cause unexpected behavior (such as being unable to log in by way of ftp(1)).
FILES
/etc/shells lists shells on system
SEE ALSO
vipw(1B), ftpd(1M), sendmail(1M), getusershell(3C), aliases(4)
SunOS 5.10 4 Jun 2001 shells(4)