#!/bin/sh

# hangman - Version rudimentaire du jeu du pendu. Au lieu de dvoiler
#   peu  peu un pendu, on se contente de mettre en place un compte 
#   rebours de mauvaises propositions.
#   
#   Vous pouvez indiquer en argument le nombre de pas qui le sparent du
#   gibet (la valeur par dfaut est 6).

wordlib="/usr/lib/games/longs-mots.txt"
randomquote="randomquote"                # Script #76
empty="\."   # il faut fournir un [ensemble]  sed quand $guessed=""
games=0

if [ ! -r $wordlib ] ; then
  echo "$0: Je ne trouve pas la liste de mots $wordlib" >&2
  echo "(version en ligne: http://www.intuitive.com/wicked/examples/long-words.txt" >&2
  echo "  sauvegardez le fichier sous le nom $wordlib et vous pourrez jouer!)" >&2
  exit 1
fi


while [ "$guess" != "quitter" ] ; do 
  match="$($randomquote $wordlib)"      # choisit un nouveau mot dans la liste

  if [ $games -gt 0 ] ; then
    echo ""
    echo "*** Nouveau jeu! ***"
  fi

  games="$(( $games + 1 ))"
  guessed="" ; guess="" ; bad=${1:-6}
  partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")"

  while [ "$guess" != "$match" -a "$guess" != "quitter" ] ; do

    echo ""
    if [ ! -z "$guessed" ] ; then
      echo -n "lettres proposes: $guessed, "
    fi
    echo "$bad pas vous sparent du gibet."
    echo "Mot  dcouvrir: $partial"

    echo -n "Proposez une lettre: "
    read guess
    echo ""

    if [ "$guess" = "$match" ] ; then 
      echo "C'est a!"  
    elif [ "$guess" = "quitter" ] ; then 
      sleep 0           # une opration nulle (no op) pour viter un
                        #   message d'erreur en tapant quitter
    elif [ $(echo $guess | wc -c | sed 's/[^[:digit:]]//g') -ne 2 ] ; then  
      echo "Hum, hum. Vous ne pouvez proposer qu'une seule lettre  la fois."
    elif [ ! -z "$(echo $guess | sed 's/[[:lower:]]//g')" ] ; then 
      echo "Non, non. Ne proposez que des lettres minuscules."
    elif [ -z "$(echo $guess | sed "s/[$empty$guessed]//g")" ] ; then 
      echo "Tst, tst. Vous avez dj propos $guess"
    elif [ "$(echo $match | sed "s/$guess/-/g")" != "$match" ] ; then
      guessed="$guessed$guess"
      partial="$(echo $match | sed "s/[^$empty${guessed}]/-/g")"
      if [ "$partial" = "$match" ] ; then
        echo "** Vous avez t pardonn! Bravo! Le mot tait $match." 
        guess="$match"  
      else 
        echo "* Super! La lettre $guess apparat dans le mot!" 
      fi
    elif [ $bad -eq 1 ] ; then 
      echo "** Aille aille aille. Vous voil sur la potence."
      echo "** On vous passe la corde au cou... <CLAC!>" 
      echo "** Le mot  deviner tait $match" 
      guess="$match"
    else
      echo "* Non, $guess n'apparat pas dans le mot."
      guessed="$guessed$guess"
      bad=$(( $bad - 1 ))
    fi
  done 
done 

exit 0
