#!/bin/bash
#------------------------------------------------------------------------------
# Textova hra "POMSTA JE TU"
# David Pilar, skupina: L213, cislo: pil032 (L98649), rok: 2001
#------------------------------------------------------------------------------
# Poznamka:
#           Tento program potrebuje soubory
#		- "cesty" - nasledna mistnost
#		- "mistnost" - popis mistnosti
#		- "mistcis" - cisla zacatku popisu mistnosti
#		- "titulek" - uvodni logo
#		- "veci" - popis veci
#		- "vecicis" - cisla zacatku popisu veci
#		- "funkce" - pouzivane funkce (tento soubor musi mit atribut
# 			   pro spusteni)
#	    V souboru "klic" je obsazen navod na dohrani teto hry.
#
#------------------------------------------------------------------------------
#
# Veskere poznamky a pripominky posilejte na adresu "dejvuvmail@seznam.cz"
#
#------------------------------------------------------------------------------
#

novahra=a
while test "$novahra" = "a"
do

# VYPIS LOGA
clear
if test -s titulek
then
  cat titulek
else
  echo -e "Chybi soubor \"titulek\" s logem teto hry!!!\n\n\n\n\n"
fi
echo -n "Stiskni ENTER!!!"
read
clear
echo -e "\n\n\n\n\nVyckejte do inicializace potrebnych veci k teto hre...........\n\n\n\n\n"

# Kontrola souboru!!! (zacatek)
if test -s cesty && test -s funkce && test -s mistcis && test -s mistnost && test -s veci && test -s vecicis
then
# Kontrola souboru (konec zacatku)

# Nacteni funkci
chmod +x funkce
. funkce

i=1
# Nacteni veci do pole a priprava k pouziti
while test $i -le 51
do
  y=`sed -n $i\p vecicis`
  y=`expr $y - 1`
  cislo=`sed -n $y\p veci`
  eval "vec$i=$cislo"
  i=`expr $i + 1`
done

x=1      # Aktualni mistnost
x2=-1    # Minula mistnost
smrt=0   # Smrt=0 hrac je zivy

# Vypis uvodu
clear
sed -n 1,12p mistnost
echo -e "\n\n\n\n\n\n\nZmackni ENTER!!!"
read
clear

while test $smrt -eq 0
do
  if test $x -ne $x2
  then
    # Vypis popisu mistnosti
    cislo=`sed -n $x\p mistcis`
    sed -n $cislo,/^\$/p mistnost
    # Vypis smeru
    smer=0
    y=$x
    echo -n Muzes jit
    cislo=`sed -n $y\p cesty`
    if test "$cislo" != "x"
    then
      echo -n " na sever,"
      smer=1
    fi
    y=`expr $y + 100`
    cislo=`sed -n $y\p cesty`
    if test "$cislo" != "x"
    then
      echo -n " na jih,"  
      smer=1
    fi
    y=`expr $y + 100`
    cislo=`sed -n $y\p cesty`
    if test "$cislo" != "x"
    then
      echo -n " na vychod,"
      smer=1
    fi
    y=`expr $y + 100`
    cislo=`sed -n $y\p cesty`
    if test "$cislo" != "x"
    then
      echo -n " na zapad,"
      smer=1
    fi
    y=`expr $y + 100`
    cislo=`sed -n $y\p cesty`
    if test "$cislo" != "x"
    then
      echo -n " nahoru,"
      smer=1
    fi
    y=`expr $y + 100`
    cislo=`sed -n $y\p cesty`
    if test "$cislo" != "x"
    then
      echo -n " dolu,"
      smer=1
    fi
    if test $smer -eq 0
    then
      echo -ne "\b\b\b\b\b\b\b\b\bNemuzes jit NIKAM "
      smrt=1
      prikaz=""
    fi
    echo -e "\b.\n"
    # Vypis videnych predmetu
    smer=0
    echo -n Vidis
    i=1
    while test $i -le 51
    do
      eval "y=\$vec$i"
      if test $y -eq $x || test $y -eq `expr $x + 100`
        then
	  cislo=`sed -n $i\p vecicis`
	  cislo=`expr $cislo - 2`
	  veci=`sed -n $cislo\p veci`
	  echo -n " $veci,"
	  smer=1
	fi
	i=`expr $i + 1`
    done
    if test $smer -eq 0
    then
      echo -ne "\b\b\b\b\bNevidis nic zvlastniho "
    fi
    echo -ne "\b.\n\n"
  fi
  interakce
  x2=$x
  if test $smrt -ne 0
  then
    prikaz=""
  else
    echo -n "CO TO BUDE? >>> "
    read prikaz vec
    echo 
  fi
  
  # DEKODOVANI PRIKAZU
  if test "$prikaz" != ""
  then
    case $prikaz in
      s) case $x in
           11) if test $dvere11 -eq 0
	       then
	         echo -e "Tam jit nemuzes, protoze dvere jsou zamcene.\n"
	       else
	         y=$x
                 cislo=`sed -n $y\p cesty`
	         if test "$cislo" != "x"
	         then
	           echo -e "Jdes na sever.\n"
	           x=$cislo
	         else
	           echo -e "Tam jit nemuzes.\n"
		 fi
	       fi
	    ;;
	    17) if test $dvere17 -eq 0
	       then
	         echo -e "Tam jit nemuzes, protoze dvere jsou zamcene.\n"
	       else
	         if test $uspesnykonec -eq 1
		 then
	           y=$x
                   cislo=`sed -n $y\p cesty`
	           if test "$cislo" != "x"
	           then
	             echo -e "Jdes na sever.\n"
	             x=$cislo
	           else
	             echo -e "Tam jit nemuzes.\n"
		   fi
		 else
		   echo -e "Jeste jsi nesplnil, to co jsi mel udelat, takze tam jit nemuzes.\n"
		 fi
	       fi
	    ;;
	    *) y=$x
               cislo=`sed -n $y\p cesty`
	       if test "$cislo" != "x"
	       then
	         echo -e "Jdes na sever.\n"
	         x=$cislo
	       else
	         echo -e "Tam jit nemuzes.\n"
	       fi
	    ;;
	  esac
      ;;
      j) y=`expr $x + 100`
         cislo=`sed -n $y\p cesty`
	 if test "$cislo" != "x"
	 then
	   echo -e "Jdes na jih.\n"
	   x=$cislo
	 else
	   echo -e "Tam jit nemuzes.\n"
	 fi
      ;;
      v) case $x in 
      	    21) if test $dvere21 -eq 0
	       then
	         echo -e "Tam jit nemuzes, protoze dvere jsou zamcene.\n"
	       else
	         y=`expr $x + 200`
                 cislo=`sed -n $y\p cesty`
	         if test "$cislo" != "x"
	         then
	           echo -e "Jdes na vychod.\n"
	           x=$cislo
	         else
	           echo -e "Tam jit nemuzes.\n"
		 fi
	       fi
	    ;;
	    *) y=`expr $x + 200`
               cislo=`sed -n $y\p cesty`
	       if test "$cislo" != "x"
	       then
	         echo -e "Jdes na vychod.\n"
	         x=$cislo
	       else
	         echo -e "Tam jit nemuzes.\n"
	       fi
	    ;;
	 esac
      ;;
      z) y=`expr $x + 300`
         cislo=`sed -n $y\p cesty`
	 if test "$cislo" != "x"
	 then
	   echo -e "Jdes na zapad.\n"
	   x=$cislo
	 else
	   echo -e "Tam jit nemuzes.\n"
	 fi
      ;;
      n) y=`expr $x + 400`
         cislo=`sed -n $y\p cesty`
	 if test "$cislo" != "x"
	 then
	   echo -e "Jdes nahoru.\n"
	   x=$cislo
	 else
	   echo -e "Tam jit nemuzes.\n"
	 fi
      ;;
      d) y=`expr $x + 500`
         cislo=`sed -n $y\p cesty`
	 if test "$cislo" != "x"
	 then
	   echo -e "Jdes dolu.\n"
	   x=$cislo
	 else
	   echo -e "Tam jit nemuzes.\n"
	 fi
      ;;
      konec) echo -n "Opravdu chces skoncit? (a/n): "
             read prikaz
	     echo
	     if test "$prikaz" = "a"
	     then
	       smrt=1
	     fi
      ;;     
      roz) echo -e "Rozhledl ses.\n"
           x2=-1
      ;;
      inv) echo -n "Mas s sebou"
           i=1
	   smer=0
	   while test $i -le 51
	   do
	     eval "cislo=\$vec$i"
	     if test $cislo -eq 0
	     then
	       y=`sed -n $i\p vecicis`
	       y=`expr $y - 2`
	       veci=`sed -n $y\p veci`
	       echo -n " $veci,"
	       smer=1
	     fi
	     i=`expr $i + 1`
	  done
	  if test $smer -eq 0
	  then
	    echo -ne "\b\b\b\b\b\b\b\b\b\b\bNemas s sebou nic,"
	  fi
	  echo -ne "\b.\n\n"
      ;;
      slo) echo "inv .......... inventar (seznam veci, ktere mas s sebou)"
           echo "slo .......... slovnik (seznam prikazu, ktere muzes pouzit)"
	   echo "roz .......... rozhledni se (novy popis mistnosti)"
	   echo "vem neco ..... vezmi neco (vezmes predmet a budes jej mit u sebe)"
	   echo "pou neco ..... pouzij neco (pouzijes nejaky predmet)"
	   echo "pro neco ..... prozkoumej neco (prozkoumas nejaky predmet)"
	   echo "save ......... uloz pozici"
	   echo "load ......... nahrej pozici"
	   echo "konec ........ ukonceni programu"
	   echo "s ............ jdi na sever"
	   echo "j ............ jdi na jih"
	   echo "v ............ jdi na vychod"
	   echo "z ............ jdi na zapad"
	   echo "n ............ jdi nahoru"
	   echo -e "d ............ jdi dolu\n"
	   echo "- doporucuji psat malymi pismeny, protoze jinak tuto hru nedohrajete :-)"
	   echo "- pocet nesenych predmetu je neomezen"
	   echo -e "\n\n- preji prijemnou zabavu\n\n"
      ;;
      save) echo -e "Ulozil jsi svou pozici.\n"
            rm save 1> /dev/null 2> /dev/null
	    i=1
	    while test $i -le 51
	    do
	      eval "echo vec$i=\$vec$i >> save"
	      i=`expr $i + 1`
	    done
	    echo x=$x >> save
	    uloz
      ;;
      load) if test -s save
            then
              echo -e "Nahral jsi svou pozici.\n"
              chmod u+x save
	      . save
	      chmod u-x save
	      x2=-1
	    else
	      echo -e "Pozici nelze obnovit, soubor \"save\" neexistuje.\n"
	    fi
      ;;
      pro) if test "$vec" = ""
           then
	     echo -e "Musis zadat vec, kterou chces prozkoumat!!!\n"
	   else
	     if test "$vec" = "neco"
	     then
	       echo -e "Slovo neco bylo jen jako PRIKLAD ve slovniku, takze si nedelej srandu a hrej!\n"
	     else
           i=1
           smer=0
           while test $i -le 51
	   do
	     eval "cislo=\$vec$i"
	     if test "$cislo" = "$x" || test "$cislo" = "0" || test "$cislo" = "`expr $x + 100`"
	     then
	       y=`sed -n $i\p vecicis`
	       y=`expr $y - 2`
	       veci=`sed -n $y\p veci`
	       if test $vec = $veci
	       then
		 smer=1
	         y=`sed -n $i\p vecicis`
	         sed -n $y,/^\$/p veci
		 i=`expr $i + 1`
		 while test $i -le 51
		 do
		   eval "cislo=\$vec$i"
		   if test "$cislo" = "`expr $x + 1000`"
		   then
		     y=`sed -n $i\p vecicis`
		     y=`expr $y - 2`
		     xxx=`sed -n $y\p veci`
		     echo -e "Nasel jsi $xxx!!!"
		     eval "vec$i=`expr $x + 100`"
		     smer=2
		   fi
                 i=`expr $i + 1`
		 done
		 if test $smer -eq 2
		 then
		   echo
		 fi
	       fi
	     fi
             i=`expr $i + 1`
	   done
	   if test $smer -eq 0
	   then
	     echo -e "Tohleto nejde prozkoumat. Zkus neco jineho!!!\n"
	   fi
	   fi
	   fi
      ;;
      vem) if test "$vec" = ""
           then
	     echo -e "Musis zadat vec, kterou chces vzit!!!\n"
	   else
	     if test "$vec" = "neco"
	     then
	       echo -e "Slovo neco bylo jen jako PRIKLAD ve slovniku, takze si nedelej srandu a hrej!\n"
	     else
           i=1
           smer=0
           while test $i -le 51
	   do
	     y=`sed -n $i\p vecicis`
	     y=`expr $y - 2`
	     veci=`sed -n $y\p veci`
	     if test $vec = $veci
	     then
	       eval "xxx=\$vec$i"
	       if test "$xxx" -gt "100" && test "$xxx" -lt "1000"
	       then
	         eval "vec$i=0"
		 i=52
	         echo -e "Vzal jsi $vec!!!\n"
	         smer=1
	       fi
	     fi
	     i=`expr $i + 1`
	   done
	   if test $smer -eq 0
	   then
	     echo -e "Tohleto nejde vzit!!!\n"
	   fi
	   fi
	   fi
      ;;
      pou) if test "$vec" = ""
           then
	     echo -e "Musis zadat vec, kterou chces pouzit!!!\n"
	   else
	     if test "$vec" = "neco"
	     then
	       echo -e "Slovo neco bylo jen jako PRIKLAD ve slovniku, takze si nedelej srandu a hrej!\n"
	     else
           i=1
           smer=0
           while test $i -le 51
	   do
	     eval "cislo=\$vec$i"
	     if test "$cislo" = "$x" || test "$cislo" = "0" || test "$cislo" = "`expr $x + 100`"
	     then
	       y=`sed -n $i\p vecicis`
	       y=`expr $y - 2`
	       veci=`sed -n $y\p veci`
	       if test $vec = $veci
	       then
	         eval $veci
		 i=52
		 smer=1
	       fi
	     fi
	     i=`expr $i + 1`
	   done
	   if test $smer -eq 0
	   then
	     echo -e "Tohleto nelze pouzit! Zkus neco jineho!!!\n"
	   fi
	   fi
	   fi
      ;;
      autor) clear
             if test -s titulek
             then
	       cat titulek
	       echo -n "Stiskni ENTER!!!"
               read
               clear
             else
	       echo -e "Chybi soubor \"titulek\" s logem teto hry!!!"
             fi
	     echo -e "\n\n\n\n\nTento program byl naprogramovan jako semestralni projekt do predmetu"
	     echo "UVOD DO OPERACNICH SYSTEMU."
	     echo "Tento program je urcen pro system UNIX / LINUX.........."
	     echo "Program byl naprogramovan v systemu RED HAT LINUX 7.0."
	     echo -e "Program byl testovan mym kamaradem Jirkou, se kterym jsem odhalil par chyb.\n\n"
	     echo "Pro veskere informace a veskere pripominky piste na adresu"
	     echo -e "                                                      \"dejvuvmail@seznam.cz\""
	     echo -e "\n\n\n"
	     echo "Zmackni ENTER!!!"
	     read
	     clear
	     x2=-1
      ;;
      *) echo Nerozumim tomuto prikazu. Prosim, zkus to znova.
         echo -e "Nebo zkus prikaz \"slo\", kterym se dozvis ovladani.\n"
      ;;
      esac
  fi
done    
echo "                   >>>>>>>>>>> <<<<<<<<<<<"
echo "                   >>>>>>>> KONEC <<<<<<<<"
echo -e "                   >>>>>>>>>>> <<<<<<<<<<<\n\n"
echo -n "Chces si zahrat znovu? (a/n): "
read novahra
clear
echo -e "\n\n\n\n\n\n\n\n\n"
echo "Diky za zahrani teto male textove hry..........."

# Kontrola souboru (pokracovani)
else
  novahra=n
  if test -s cesty
  then
    echo -n ""
  else
    echo -e "Chybi soubor \"cesty\"!!!"
  fi
  if test -s funkce
  then
    echo -n ""
  else
    echo -e "Chybi soubor \"funkce\"!!!"
  fi
  if test -s mistcis
  then
    echo -n ""
  else
    echo -e "Chybi soubor \"mistcis\"!!!"
  fi
  if test -s mistnost
  then
    echo -n ""
  else
    echo -e "Chybi soubor \"mistnost\"!!!"
  fi
  if test -s veci
  then
    echo -n ""
  else
    echo -e "Chybi soubor \"veci\"!!!"
  fi
  if test -s vecicis
  then
    echo -n ""
  else
    echo -e "Chybi soubor \"vecicis\"!!!"
  fi
fi  
# Kontrola souboru (konec)

echo "-------------------------------------------------------------------------------"
echo "Pro veskere informace piste na adresu \"dejvuvmail@seznam.cz\""
echo -e "\n\n\n\n\n\n\n\n\n"
done
