#!/bin/sh
#
# The Merlin Shell Script was written by the students of
# Venturing Crew 369 as a class project in our
# UNIX youth mentor program. http://369.columbus.oh.us
#
# (C) James D. Corder 1994-1999
#

ONE="[1B[1C-1-";TWO="[1B[5C-2-";THREE="[1B[9C-3-"
FOUR="[3B[1C-4-";FIVE="[3B[5C-5-";SIX="[3B[9C-6-"
SEVEN="[5B[1C-7-";EAIGHT="[5B[5C-8-";NINE="[5B[9C-9-"


clear(){
	echo "[H"
}
cls(){
	echo "[H[2J"
}
normal(){
	echo "[0m"
}
hightlight(){
	echo "[1m"
}
dark(){
	echo "[2m"
}
underscore(){
	echo "[4m"
}
blink(){
	echo "[5m"
}
inverse(){
	echo "[7m"
}
graphon(){
	echo "(0"
}
graphoff(){
	echo "(B"
}

reset(){
	BOX1=0;BOX2=0;BOX3=0;BOX4=0;BOX5=0;BOX6=0;BOX7=0;BOX8=0;BOX9=0
}
random(){
	# By: Karl N. Matthias December 1996
	/bin/nawk 'END {srand();i=rand()*9+1;i-int(i);print i}' /dev/null
}

bars(){
	cls
	echo "+---+---+---+"
	echo "|-1-|-2-|-3-|"
	echo "+---+---+---+"
	echo "|-4-|-5-|-6-|"
	echo "+---+---+---+"
	echo "|-7-|-8-|-9-|"
	echo "+---+---+---+"
	echo ""
	echo "Enter:=> 1,2,3,4,5,6,7,8,9,q"
}

screen(){
	case $BOX in
	1 )
		if [ $BOX1 = 0 ]
		then inverse;clear;echo $ONE;normal;BOX1=1
		else clear;echo $ONE;BOX1=0
		fi

		if [ $BOX2 = 0 ]
		then
			inverse;clear;echo $TWO;normal;BOX2=1
		else
			clear;echo $TWO;BOX2=0
		fi

		if [ $BOX4 = 0 ]
		then
			inverse;clear;echo $FOUR;normal;BOX4=1
		else
			clear;echo $FOUR;BOX4=0
		fi

		if [ $BOX5 = 0 ]
		then
			inverse;clear;echo $FIVE;normal;BOX5=1
		else
			clear;echo $FIVE;BOX5=0
		fi
		;;
	2 )
		if [ $BOX1 = 0 ]
		then
			inverse;clear;echo $ONE;normal;BOX1=1
		else
			clear;echo $ONE;BOX1=0
		fi

		if [ $BOX2 = 0 ]
		then
			inverse;clear;echo $TWO;normal;BOX2=1
		else
			clear;echo $TWO;BOX2=0
		fi

		if [ $BOX3 = 0 ]
		then
			inverse;clear;echo $THREE;normal;BOX3=1
		else
			clear;echo $THREE;BOX3=0
		fi
		;;
	3 )
		if [ $BOX2 = 0 ]
		then
			inverse;clear;echo $TWO;normal;BOX2=1
		else
			clear;echo $TWO;BOX2=0
		fi

		if [ $BOX3 = 0 ]
		then
			inverse;clear;echo $THREE;normal;BOX3=1
		else
			clear;echo $THREE;BOX3=0
		fi

		if [ $BOX5 = 0 ]
		then
			inverse;clear;echo $FIVE;normal;BOX5=1
		else
			clear;echo $FIVE;BOX5=0
		fi

		if [ $BOX6 = 0 ]
		then
			inverse;clear;echo $SIX;normal;BOX6=1
		else
			clear;echo $SIX;BOX6=0
		fi
		;;
	4 )
		if [ $BOX1 = 0 ]
		then
			inverse;clear;echo $ONE;normal;BOX1=1
		else
			clear;echo $ONE;BOX1=0
		fi

		if [ $BOX4 = 0 ]
		then
			inverse;clear;echo $FOUR;normal;BOX4=1
		else
			clear;echo $FOUR;BOX4=0
		fi

		if [ $BOX7 = 0 ]
		then
			inverse;clear;echo $SEVEN;normal;BOX7=1
		else
			clear;echo $SEVEN;BOX7=0
		fi
		;;
	5 )
		if [ $BOX2 = 0 ]
		then
			inverse;clear;echo $TWO;normal;BOX2=1
		else
			clear;echo $TWO;BOX2=0
		fi

		if [ $BOX4 = 0 ]
		then
			inverse;clear;echo $FOUR;normal;BOX4=1
		else
			clear;echo $FOUR;BOX4=0
		fi


		if [ $BOX5 = 0 ]
		then
			inverse;clear;echo $FIVE;normal;BOX5=1
		else
			clear;echo $FIVE;BOX5=0
		fi

		if [ $BOX6 = 0 ]
		then
			inverse;clear;echo $SIX;normal;BOX6=1
		else
			clear;echo $SIX;BOX6=0
		fi

		if [ $BOX8 = 0 ]
		then
			inverse;clear;echo $EAIGHT;normal;BOX8=1
		else
			clear;echo $EAIGHT;BOX8=0
		fi
		;;
	6 )
		if [ $BOX3 = 0 ]
		then
			inverse;clear;echo $THREE;normal;BOX3=1
		else
			clear;echo $THREE;BOX3=0
		fi

		if [ $BOX6 = 0 ]
		then
			inverse;clear;echo $SIX;normal;BOX6=1
		else
			clear;echo $SIX;BOX6=0
		fi

		if [ $BOX9 = 0 ]
		then
			inverse;clear;echo $NINE;normal;BOX9=1
		else
			clear;echo $NINE;BOX9=0
		fi
		;;
	7 )
		if [ $BOX4 = 0 ]
		then
			inverse;clear;echo $FOUR;normal;BOX4=1
		else
			clear;echo $FOUR;BOX4=0
		fi


		if [ $BOX5 = 0 ]
		then
			inverse;clear;echo $FIVE;normal;BOX5=1
		else
			clear;echo $FIVE;BOX5=0
		fi

		if [ $BOX7 = 0 ]
		then
			inverse;clear;echo $SEVEN;normal;BOX7=1
		else
			clear;echo $SEVEN;BOX7=0
		fi

		if [ $BOX8 = 0 ]
		then
			inverse;clear;echo $EAIGHT;normal;BOX8=1
		else
			clear;echo $EAIGHT;BOX8=0
		fi
		;;
	8 )

		if [ $BOX7 = 0 ]
		then
			inverse;clear;echo $SEVEN;normal;BOX7=1
		else
			clear;echo $SEVEN;BOX7=0
		fi

		if [ $BOX8 = 0 ]
		then
			inverse;clear;echo $EAIGHT;normal;BOX8=1
		else
			clear;echo $EAIGHT;BOX8=0
		fi

		if [ $BOX9 = 0 ]
		then
			inverse;clear;echo $NINE;normal;BOX9=1
		else
			clear;echo $NINE;BOX9=0
		fi
		;;
	9 )

		if [ $BOX5 = 0 ]
		then
			inverse;clear;echo $FIVE;normal;BOX5=1
		else
			clear;echo $FIVE;BOX5=0
		fi

		if [ $BOX6 = 0 ]
		then
			inverse;clear;echo $SIX;normal;BOX6=1
		else
			clear;echo $SIX;BOX6=0
		fi

		if [ $BOX8 = 0 ]
		then
			inverse;clear;echo $EAIGHT;normal;BOX8=1
		else
			clear;echo $EAIGHT;BOX8=0
		fi

		if [ $BOX9 = 0 ]
		then
			inverse;clear;echo $NINE;normal;BOX9=1
		else
			clear;echo $NINE;BOX9=0
		fi
		;;
	q )
		cls;stty echo;exit 0
		;;
	* )
		echo "[4B[6C X "
		echo "Enter:=> 1,2,3,4,5,6,7,8,9,q"
		;;
	esac
}

start(){
	TMP=`random | sed 's/\..*//'`
	COUNT=`expr ${TMP}`
	TMP=`expr 0`

	while(true)
	do
		TMP=`expr ${TMP} + 1`
		SCREEN=`random | sed 's/\..*//'`
		BOX=`expr ${SCREEN}`
			screen
			echo "[4B[9C"
		if [ $TMP -gt $SCREEN ]
		then
			break
		fi
	done
}

bars;reset;start

stty -echo
while(true)
do
	if [ $BOX1 = 1 -a $BOX2 = 1 -a $BOX3 = 1 -a $BOX4 = 1 -a $BOX5 = 0 -a $BOX6 = 1 -a $BOX7 = 1 -a $BOX8 = 1 -a $BOX9 = 1 ]
	then
		echo "You Won!"
		echo "Would you like to play again? y/n";read ANSWER

		if [ "x${ANSWER}" = "xy" ]
		then
			cls;bars;reset;start
		else
			stty echo
			exit 0
		fi
	else
		clear;echo="[5B[13C  "
		read BOX;echo "[2B[8C";screen
	fi
done
stty echo

