#!/usr/bin/perl
#######################
# A two player tic-tac-toe game. Each square is an image that will change to
# display an X or O when clicked on by the appropriate player. When X or Y
# controls three squares in a row, that player is named the winner.
#######################
use warnings;
use strict;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);

my $debug eq "yes";		#Use 'yes' for debugging.

print "Content-type: text/html\n\n";


my $lastplayer = param("whichplayer");

my @winner = ("$lastplayer","$lastplayer","$lastplayer");


my $a1= param("a1") || ("blank");
my $a2= param("a2") || ("blank");
my $a3= param("a3") || ("blank");

my $b1= param("b1") || ("blank");
my $b2= param("b2") || ("blank");
my $b3= param("b3") || ("blank");

my $c1= param("c1") || ("blank");
my $c2= param("c2") || ("blank");
my $c3= param("c3") || ("blank");

if ($debug eq "yes")
	{
	print "Previous player = $lastplayer<br>";
	}

my $who = newplayer(param("whichplayer")); 

my $somebodywins;
&winner($somebodywins);

# if ($somebodywins eq @_)
# 	{
# 	print "$lastplayer is the winner!";
# 	print qq 
# 		(
# 		<html>
# 			<head>
# 				<title>Tic-Tac-Toe</title>
# 			</head>
# 	 	<body>
# 	 		<h4>
# 	 			Current player: $who
# 	 		</h4>
# 	  	<form method="post">
# 	  	<INPUT TYPE= "hidden" NAME="whichplayer" VALUE="$who"> );
# 	  
# 		if ($a1 eq "blank") 
# 			{
# 			print qq ( <img src="pics/$a1.jpg" alt="Button1"> );
# 			}
# 		else 
# 	  		{ 
# 	  		print qq ( <img src = "pics/$a1.jpg"> ); 
# 	  		}
# 	
# 		if ($a2 eq "blank") 
#   			{
# 			print qq ( <img src="pics/$a2.jpg" alt="Button2"> );
# 	  		}
# 	  	else 
# 	  		{ 
# 	  		print qq ( <img src = "pics/$a2.jpg"> ); 
# 	 		}
# 	  
# 	  	if ($a3 eq "blank") 
# 	  		{
# 	  		print qq ( <img src="pics/$a3.jpg" alt="Button3"> );
# 	  		}
# 	  	else 
# 	  		{ 
# 	  		print qq ( <img src = "pics/$a3.jpg"> ); 
# 	  		}
# 	  
# 		print "<br>";
# 	
# 		if ($b1 eq "blank") 
# 	  		{
# 	  		print qq ( <img src="pics/$b1.jpg" alt="Button4"> );
# 	  		}
# 	  	else 
# 	  		{
# 	  		print qq ( <img src = "pics/$b1.jpg"> ); 
# 	  		}
# 	
# 		if ($b2 eq "blank") 
# 			{
# 			print qq ( <img src="pics/$b2.jpg" alt="Button5"> );
# 			}
# 	  	else 
# 	  		{ 
# 	  		print qq ( <img src = "pics/$b2.jpg"> ); 
# 	  		}
#   
# 		if ($b3 eq "blank") 
# 			{
# 	  		print qq ( <img src="pics/$b3.jpg" alt="Button6"> );
# 	  		}
# 	  	else 
#   			{ 
#   			print qq ( <img src = "pics/$b3.jpg"> ); 
#   			}
#   	
#   		print "<br>";
#   		if ($c1 eq "blank") 
#   			{
#   			print qq ( <img src="pics/$c1.jpg" alt="Button7"> );
#   			}
#   		else 
#   			{
#   			print qq ( <img src = "pics/$c1.jpg"> ); 
#   			}
# 
# 		if ($c2 eq "blank") 
# 			{
#   			print qq ( <img src="pics/$c2.jpg" alt="Button8"> );
#   			}
#   		else 
#   			{ 
#   			print qq ( <img src = "pics/$c2.jpg"> ); 
#   			}
#   	
#   		if ($c3 eq "blank") 
#   			{
#   			print qq ( <img src="pics/$c3.jpg" alt="Button9");
#   			}
#   		else 
#   			{
#   			print qq ( <img src = "pics/$c3.jpg"> ); 
#   			}
#   		print qq 
#   			( 	
#   				</form>
#   				<FORM NAME="Reset" method="post">
#   				<INPUT TYPE="submit" NAME="Reset" VALUE="Reset">
#   				</form>
#  			</body>
# 		</html>		
# 		);
# 	}
# 		
# 
# else
# 	{

	print qq 
		(
		<html>
			<head>
				<title>Tic-Tac-Toe</title>
			</head>
	 	<body>
	 		<h4>
	 			Current player: $who
	 		</h4>
	  	<form method="post">
	  	<INPUT TYPE= "hidden" NAME="whichplayer" VALUE="$who"> );
	  
		if ($a1 eq "blank") 
			{
			print qq ( <input type="image" src="pics/$a1.jpg" alt="Button1" name="a1" value = "$who"> );
			}
		else 
	  		{ 
	  		print qq ( <img src = "pics/$a1.jpg"> ); 
	  		}

	
		if ($a2 eq "blank") 
  			{
			print qq ( <input type="image" src="pics/$a2.jpg" alt="Button2" name="a2" value = "$who"> );
	  		}
	  	else 
	  		{ 
	  		print qq ( <img src = "pics/$a2.jpg"> ); 
	 		}
	  
	  	if ($a3 eq "blank") 
	  		{
	  		print qq ( <input type="image" src="pics/$a3.jpg" alt="Button3" name="a3" value = "$who"> );
	  		}
	  	else 
	  		{ 
	  		print qq ( <img src = "pics/$a3.jpg"> ); 
	  		}
	  
		print "<br>";
	
		if ($b1 eq "blank") 
	  		{
	  		print qq ( <input type="image" src="pics/$b1.jpg" alt="Button4" name="b1" value = "$who"> );
	  		}
	  	else 
	  		{
	  		print qq ( <img src = "pics/$b1.jpg"> ); 
	  		}
	
		if ($b2 eq "blank") 
			{
			print qq ( <input type="image" src="pics/$b2.jpg" alt="Button5" name="b2" value = "$who"> );
			}
	  	else 
	  		{ 
	  		print qq ( <img src = "pics/$b2.jpg"> ); 
	  		}
  
		if ($b3 eq "blank") 
			{
	  		print qq ( <input type="image" src="pics/$b3.jpg" alt="Button6" name="b3" value = "$who"> );
	  		}
	  	else 
  			{ 
  			print qq ( <img src = "pics/$b3.jpg"> ); 
  			}
  	
  		print "<br>";
  		if ($c1 eq "blank") 
  			{
  			print qq ( <input type="image" src="pics/$c1.jpg" alt="Button7" name="c1" value = "$who"> );
  			}
  		else 
  			{
  			print qq ( <img src = "pics/$c1.jpg"> ); 
  			}

		if ($c2 eq "blank") 
			{
  			print qq ( <input type="image" src="pics/$c2.jpg" alt="Button8" name="c2" value = "$who"> );
  			}
  		else 
  			{ 
  			print qq ( <img src = "pics/$c2.jpg"> ); 
  			}
  	
  		if ($c3 eq "blank") 
  			{
  			print qq ( <input type="image" src="pics/$c3.jpg" alt="Button9" name="c3" value = "$who"> );
  			}
  		else 
  			{
  			print qq ( <img src = "pics/$c3.jpg"> ); 
  			}
  			
	  	print qq ( <INPUT TYPE= "hidden" NAME="a2" VALUE="$a2"> );
	  	print qq ( <INPUT TYPE= "hidden" NAME="a3" VALUE="$a3"> );
	  	print qq ( <INPUT TYPE= "hidden" NAME="b1" VALUE="$b1"> );
		print qq ( <INPUT TYPE= "hidden" NAME="b2" VALUE="$b2"> );
  		print qq ( <INPUT TYPE= "hidden" NAME="b3" VALUE="$b3"> );
  		print qq ( <INPUT TYPE= "hidden" NAME="c1" VALUE="$c1"> );
  		print qq ( <INPUT TYPE= "hidden" NAME="c2" VALUE="$c2"> );
  		print qq ( <INPUT TYPE= "hidden" NAME="c3" VALUE="$c3"> );
	  	print qq ( <INPUT TYPE= "hidden" NAME="a1" VALUE="$a1"> );
  			
  		print qq
  			(
  					</form>
  					<FORM NAME="Reset" method="post">
  					<INPUT TYPE="submit" NAME="Reset" VALUE="Reset">
  					</form>
 				</body>
			</html>		
			);
# 	}
	
print "<hr>\n";


sub newplayer 	
	{
	my ($who)=@_;
	if ($who eq "o")	
		{
		return "x";
		}
	
	elsif ($who eq "x")	
		{
		return "o";
		}
	
	return "x";
	};

sub whowas 
	{
	my ($who)=@_;
	print "inside whowas, who holds the value $who<br>";
	if ($who eq "o")	
		{
		return "x";
		}
	
	elsif ($who eq "x")	
		{
		return "o";
		}
	
	return "blank";
};


sub winner	
	{
	
	my ($somebodywins) = @_;
	
	my @win1=($a1,$a2,$a3);
	my @win2=($b1,$b2,$b3);
	my @win3=($c1,$c2,$c3);
	my @win4=($a1,$b2,$c3);
	my @win5=($c1,$b2,$a3);
	my @win6=($a1,$b1,$c1);
	my @win7=($a2,$b2,$c2);
	my @win8=($a3,$b3,$c3);

	if	
		(	
		$winner[0] eq $win1[0] && $winner[1] eq $win1[1] && $winner[2] eq $win1[2]	||
		$winner[0] eq $win2[0] && $winner[1] eq $win2[1] && $winner[2] eq $win2[2]	||
		$winner[0] eq $win3[0] && $winner[1] eq $win3[1] && $winner[2] eq $win3[2]	||
		$winner[0] eq $win4[0] && $winner[1] eq $win4[1] && $winner[2] eq $win4[2]	||
		$winner[0] eq $win5[0] && $winner[1] eq $win5[1] && $winner[2] eq $win5[2]	||
		$winner[0] eq $win6[0] && $winner[1] eq $win6[1] && $winner[2] eq $win6[2]	||
		$winner[0] eq $win7[0] && $winner[1] eq $win7[1] && $winner[2] eq $win7[2]	||
		$winner[0] eq $win8[0] && $winner[1] eq $win8[1] && $winner[2] eq $win8[2]
		) 
		{
		print ("<h1>$lastplayer is the winner!<h1>");
		return "yes";
    	}
	}
	
if ($debug eq "yes")
	{
#	print "Previous player = $lastplayer<br>";
	print "Did anybody win yet? - $somebodywins<br>";
	print "<hr> Parameters passed : <br>\n";
	foreach my $name ( param )
		{
		print  $name , " => '" , param($name), "'<br>\n";
		}
	}