0) { $prevmove = $_POST['movecount'] + 1; $currentmove = $a1 + $a2 + $a3 + $a4 + $a5 + $a6 + $a7 + $a8 + $a9; if ($currentmove != $prevmove) { echo "CHEATER! You can only move one square a turn, and you must move! Restart!

"; $won = 'true'; } } // Check to see if the HUMAN has won, if so display the message // Make sure the human did not cheat first if ($won != true) { if ($a1 == 1 and $a2 == 1 and $a3 == 1 or $a1 == 1 and $a5 == 1 and $a9 == 1 or $a1 == 1 and $a4 == 1 and $a7 == 1 or $a2 == 1 and $a5 == 1 and $a8 == 1 or $a3 == 1 and $a6 == 1 and $a9 == 1 or $a3 == 1 and $a5 == 1 and $a7 == 1 or $a4 == 1 and $a5 == 1 and $a6 == 1 or $a7 == 1 and $a8 == 1 and $a9 == 1) { echo "Congratz player one! You have won the game!

"; $won = 'true'; // For the counter $win = 'true'; } } // Check to see if the game is a draw if ($a1 > 0 and $a2 > 0 and $a3 > 0 and $a4 > 0 and $a5 > 0 and $a6 > 0 and $a7 > 0 and $a8 > 0 and $a9 > 0 and $won != true) { echo "Tie!

"; $won = 'true'; // For the counter $tie = 'true'; } // If it is the first turn and the computer is going first, initiate strategy if ($_POST['turn'] == NULL and $_POST['compfirst'] == 'true') { $i = 2; $seti = 'false'; $move = rand(1, 4); if ($move == 1) { $a5 = 2; } elseif ($move == 2) { $a9 = 2; } elseif ($move == 3) { $a3 = 2; } elseif ($move == 4) { $a7 = 2; } } // If it is the first turn, and Player went first, initiate strategy elseif ($_POST['turn'] == 1 and $_POST['compfirst'] != 'true') { // If the human takes anything but the center, the computer will move center if ($a1 == 1 or $a2 == 1 or $a3 == 1 or $a4 == 1 or $a6 == 1 or $a7 == 1 or $a8 == 1 or $a9 == 1 and $a5 != 1 and $a5 != 2) { $a5 = 2; } // If the human takes center, the computer will take a corner elseif ($a5 == 1) { if ($a1 != 1 and $a1 != 2) { $a1 = 2; } elseif ($a3 != 1 and $a3 != 2) { $a3 = 2; } elseif ($a7 != 1 and $a7 != 2) { $a7 = 2; } elseif ($a9 != 1 and $a7 != 2) { $a9 = 2; } } } // If it is not the first turn, initiate strategy // Make sure the player has NOT cheated and that the game is NOT won already if ($_POST['turn'] > 1 and $won != 'true') { // Computer moves to complete a set of three if possible if ($a2 == 2 and $a3 == 2 and $a1 != 2 and $a1 != 1 or $a5 == 2 and $a9 == 2 and $a1 != 2 and $a1 != 1 or $a4 == 2 and $a7 == 2 and $a1 != 2 and $a1 != 1) { $a1 = 2; } elseif ($a1 == 2 and $a3 == 2 and $a2 != 2 and $a2 != 1 or $a5 == 2 and $a8 == 2 and $a2 != 2 and $a2 != 1) { $a2 = 2; } elseif ($a1 == 2 and $a2 == 2 and $a3 != 2 and $a3 != 1 or $a6 == 2 and $a9 == 2 and $a3 != 2 and $a3 != 1 or $a5 == 2 and $a7 == 2 and $a3 != 2 and $a3 != 1) { $a3 = 2; } elseif ($a1 == 2 and $a7 == 2 and $a4 != 2 and $a4 != 1 or $a5 == 2 and $a6 == 2 and $a4 != 2 and $a4 != 1) { $a4 = 2; } elseif ($a1 == 2 and $a9 == 2 and $a5 != 2 and $a5 != 1 or $a3 == 2 and $a7 == 2 and $a5 != 2 and $a5 != 1 or $a2 == 2 and $a8 == 2 and $a5 != 2 and $a5 != 1 or $a4 == 2 and $a6 == 2 and $a5 != 2 and $a5 != 1) { $a5 = 2; } elseif ($a3 == 2 and $a9 == 2 and $a6 != 2 and $a6 != 1 or $a4 == 2 and $a5 == 2 and $a6 != 2 and $a6 != 1) { $a6 = 2; } elseif ($a1 == 2 and $a4 == 2 and $a7 != 2 and $a7 != 1 or $a9 == 2 and $a8 == 2 and $a7 != 2 and $a7 != 1 or $a3 == 2 and $a5 == 2 and $a7 != 2 and $a7 != 1) { $a7 = 2; } elseif ($a2 == 2 and $a5 == 2 and $a8 != 2 and $a8 != 1 or $a7 == 2 and $a9 == 2 and $a8 != 2 and $a8 != 1) { $a8 = 2; } elseif ($a1 == 2 and $a5 == 2 and $a9 != 2 and $a9 != 1 or $a7 == 2 and $a8 == 2 and $a9 != 2 and $a9 != 1 or $a3 == 2 and $a6 == 2 and $a9 != 2 and $a9 != 1) { $a9 = 2; } // Block opponent if two are aligned, and computer does not have two aligned elseif ($a2 == 1 and $a3 == 1 and $a1 != 2 or $a5 == 1 and $a9 == 1 and $a1 != 2 or $a4 == 1 and $a7 == 1 and $a1 != 2) { $a1 = 2; } elseif ($a1 == 1 and $a3 == 1 and $a2 != 2 or $a5 == 1 and $a8 == 1 and $a2 != 2) { $a2 = 2; } elseif ($a1 == 1 and $a2 == 1 and $a3 != 2 or $a6 == 1 and $a9 == 1 and $a3 != 2 or $a5 == 1 and $a7 == 1 and $a3 != 2) { $a3 = 2; } elseif ($a1 == 1 and $a7 == 1 and $a4 != 2 or $a5 == 1 and $a6 == 1 and $a4 != 2) { $a4 = 2; } elseif ($a1 == 1 and $a9 == 1 and $a5 != 2 or $a3 == 1 and $a7 == 1 and $a5 != 2 or $a2 == 1 and $a8 == 1 and $a5 != 2 or $a4 == 1 and $a6 == 1 and $a5 != 2) { $a5 = 2; } elseif ($a3 == 1 and $a9 == 1 and $a6 != 2 or $a4 == 1 and $a5 == 1 and $a6 != 2) { $a6 = 2; } elseif ($a1 == 1 and $a4 == 1 and $a7 != 2 or $a9 == 1 and $a8 == 1 and $a7 != 2 or $a3 == 1 and $a5 == 1 and $a7 != 2) { $a7 = 2; } elseif ($a2 == 1 and $a5 == 1 and $a8 != 2 or $a7 == 1 and $a9 == 1 and $a8 != 2) { $a8 = 2; } elseif ($a1 == 1 and $a5 == 1 and $a9 != 2 or $a7 == 1 and $a8 == 1 and $a9 != 2 or $a3 == 1 and $a6 == 1 and $a9 != 2) { $a9 = 2; } // Attempt the split tactic around the center if possible, ONLY ON THE SECOND TURN elseif ($a1 == 2 and $a5 == 1 and $a9 < 1 and $_POST['turn'] == 2 or $a9 == 2 and $a5 == 1 and $a1 < 1 and $_POST['turn'] == 2) { if ($a9 < 1) { $a9 = 2; } elseif ($a1 < 1) { $a1 = 2; } } elseif ($a3 == 2 and $a5 == 1 and $a7 < 1 and $_POST['turn'] == 2 or $a7 == 2 and $a5 == 1 and $a3 < 1 and $_POST['turn'] == 2) { if ($a7 < 1) { $a7 = 2; } elseif ($a3 < 1) { $a3 = 2; } } // Attempt the triangle tactic if possible elseif ($a1 == 2 and $a2 == 2 and $a5 < 1 or $a1 == 2 and $a4 == 2 and $a5 < 1 or $a2 == 2 and $a3 == 2 and $a5 < 1 or $a4 == 2 and $a1 == 2 and $a5 < 1 or $a4 == 2 and $a7 == 2 and $a5 < 1 or $a7 == 2 and $a8 == 2 and $a5 < 1 or $a8 == 2 and $a9 == 2 and $a5 < 1 or $a9 == 2 and $a6 == 2 and $a5 < 1 or $a6 == 2 and $a3 == 2 and $a5 < 1) { $a5 = 2; } elseif ($a2 == 2 and $a5 == 2 and $a1 < 1 or $a2 == 2 and $a5 == 2 and $a8 < 1 and $a3 < 1) { if ($a1 < 1) { $a1 = 2; } elseif ($a3 < 1) { $a3 = 2; } } elseif ($a4 == 2 and $a5 == 2 and $a1 < 1 or $a4 == 2 and $a5 == 2 and $a6 < 1 and $a7 < 1) { if ($a1 < 1) { $a1 = 2; } elseif ($a7 < 1) { $a7 = 2; } } elseif ($a8 == 2 and $a5 == 2 and $a7 < 1 or $a8 == 2 and $a5 == 2 and $a3 > 1 and $a9 < 1) { if ($a7 < 1) { $a7 = 2; } elseif ($a9 < 1) { $a9 = 2; } } elseif ($a6 == 2 and $a5 == 2 and $a3 < 1 or $a6 == 2 and $a5 == 2 and $a4 < 1 and $a9 < 1) { if ($a3 < 1) { $a3 = 2; } elseif ($a9 < 1) { $a9 = 2; } } // Attempt a large triangle if possible elseif ($a1 == 2 and $a2 < 1 and $a5 == 2 and $a3 < 1) { $a3 = 2; } elseif ($a3 == 2 and $a2 < 1 and $a5 == 2 and $a1 < 1) { $a1 = 2; } elseif ($a1 == 2 and $a4 < 1 and $a5 == 2 and $a7 < 1) { $a7 = 2; } elseif ($a7 == 2 and $a4 < 1 and $a5 == 2 and $a1 < 1) { $a1 = 2; } elseif ($a7 == 2 and $a8 < 1 and $a5 == 2 and $a9 < 1) { $a9 = 2; } elseif ($a9 == 2 and $a8 < 1 and $a5 == 2 and $a7 < 1) { $a7 = 2; } elseif ($a3 == 2 and $a6 < 1 and $a5 == 2 and $a9 < 1) { $a9 = 2; } elseif ($a9 == 2 and $a6 < 1 and $a5 == 2 and $a3 < 1) { $a3 = 2; } // Move to edge if the opponent is doing the 'split' tactic elseif ($a1 == 1 and $a5 == 2 and $a9 == 1 or $a3 == 1 and $a5 == 2 and $a7 == 1) { if ($a2 != 1 and $a2 != 2) { $a2 = 2; } elseif ($a4 != 1 and $a4 != 2) { $a4 = 2; } elseif ($a6 != 1 and $a6 != 2) { $a6 = 2; } elseif ($a8 != 1 and $a8 != 2) { $a8 = 2; } } // If opponent is doing the corner split, take the correct corner elseif ($a2 == 1 and $a4 == 1 and $a1 < 1) { $a1 = 2; } elseif ($a2 == 1 and $a6 == 1 and $a3 < 1) { $a3 = 2; } elseif ($a4 == 1 and $a8 == 1 and $a7 < 1) { $a7 = 2; } elseif ($a8 == 1 and $a6 == 1 and $a9 < 1) { $a9 = 2; } // In case that the computer went first, did not take center, and human did not take center, take center. elseif ($a5 < 1) { $a5 = 2; } // Move to side if the 'special' is being used by the human ONLY ON TURN 2 elseif ($a2 == 1 and $a9 == 1 and $a4 < 1 and $_POST['turn'] == 2 or $a2 == 1 and $a7 == 1 and $a6 < 1 and $_POST['turn'] == 2 or $a8 == 1 and $a1 == 1 and $a6 < 1 and $_POST['turn'] == 2 or $a8 == 1 and $a3 == 1 and $a4 < 1 and $_POST['turn'] == 2) { if ($a9 == 1 and $a4 < 1) { $a4 = 2; } elseif ($a7 == 1 and $a6 < 1) { $a6 = 2; } elseif ($a1 == 1 and $a6 < 1) { $a6 = 2; } elseif ($a3 == 1 and $a4 < 1) { $a4 = 2; } } elseif ($a4 == 1 and $a3 == 1 and $a8 < 1 and $_POST['turn'] == 2 or $a4 == 1 and $a9 == 1 and $a2 < 1 and $_POST['turn'] == 2 or $a6 == 1 and $a1 == 1 and $a8 < 1 and $_POST['turn'] == 2 or $a6 == 1 and $a7 == 1 and $a2 < 1 and $_POST['turn'] == 2) { if ($a3 == 1 and $a8 < 1) { $a8 = 2; } elseif ($a9 == 1 and $a2 < 1) { $a2 = 2; } elseif ($a1 == 1 and $a8 < 1) { $a8 = 2; } elseif ($a7 == 1 and $a2 < 1) { $a2 = 2; } } // Move to corner if no two player ticks are aligned and nothing else applied elseif ($a1 != 1 and $a1 != 2) { $a1 = 2; } elseif ($a3 != 1 and $a3 != 2) { $a3 = 2; } elseif ($a7 != 1 and $a7 != 2) { $a7 = 2; } elseif ($a9 != 1 and $a9 != 2) { $a9 = 2; } // Move to edge if all corners are blocked AND no two ticks are aligned and nothing else applied elseif ($a2 != 1 and $a2 != 2) { $a2 = 2; } elseif ($a4 != 1 and $a4 != 2) { $a4 = 2; } elseif ($a6 != 1 and $a6 != 2) { $a6 = 2; } elseif ($a8 != 1 and $a8 != 2) { $a8 = 2; } elseif ($won != 'true') { echo "Warning: Fatal attempt to generate computer move. Game unable to continue. Click the restart button.

"; $won = 'true'; } } // Check to see if the COMPUTER has won if PLAYER has not already, if so display the message // Also make sure player has not cheated first if ($won != 'true') { if ($a1 == 2 and $a2 == 2 and $a3 == 2 or $a1 == 2 and $a5 == 2 and $a9 == 2 or $a1 == 2 and $a4 == 2 and $a7 == 2 or $a2 == 2 and $a5 == 2 and $a8 == 2 or $a3 == 2 and $a6 == 2 and $a9 == 2 or $a3 == 2 and $a5 == 2 and $a7 == 2 or $a4 == 2 and $a5 == 2 and $a6 == 2 or $a7 == 2 and $a8 == 2 and $a9 == 2) { echo "OH NO! You were just owned by a computer!

"; $won = 'true'; // For the counter $lose = 'true'; } } // Check for a draw again, if computer took the last square // Check to see if the game is a draw if ($a1 > 0 and $a2 > 0 and $a3 > 0 and $a4 > 0 and $a5 > 0 and $a6 > 0 and $a7 > 0 and $a8 > 0 and $a9 > 0 and $won != true) { echo "Tie!

"; $won = 'true'; // For the counter $tie = 'true'; } ?>