Tic Tac Toe

 
Message: 
Difficulty: 

Klik pada butang sebelah kotak untuk tandakan kotak tersebut. 
Copy skrip atau download.
 
1.Copy dalam <body>

<SCRIPT LANGUAGE="LiveScript">
<!---Copyright 1996 Chris Englmeier
<!---http://www.oocities.org/SiliconValley/Heights/2052/
<!---Feel free to use this script as long as these copyright line remain as is
        <!-- 
  step = 0;
  diff=3;
  // change board when button is clicked
        function clear_all(form) {
   step = 0;
   for (i=0;i<9; ++i) {
    position="a"+i;
    form[position].value="";
   }
  }
  // change board when button is clicked
        function clickit(field) {
  if (step == -1) {alert("Reset to play again"); return;}

        position=field.name.substring(1,2,1);
        position = 'a'+position;
  if (field.form[position].value !="") {alert("Can't go there"); return;}
        field.form[position].value="X";
        if (eval_pos(field.form)) {
   field.form.output.value="You Win!"; 
   step = -1;
   return;
  }
        position=get_move(field.form);
        field.form.output.value='I moved to ' + position.substring(1,2,1);
  if (position=="") {
   field.form.output.value="No Winner."; 
   step = -1;

   return;
  }
        field.form[position].value="O";
        if (eval_pos(field.form)) {
   field.form.output.value="You Lose!";
   step = -1;
  }
        }

  // see if there is a winner
        function eval_pos(form) {
     if ((form.a0.value!="" && 
   form.a0.value==form.a3.value && form.a0.value==form.a6.value)||

        (form.a0.value!="" 
   && form.a0.value==form.a1.value && form.a0.value==form.a2.value) ||
        (form.a0.value!="" 
   && form.a0.value==form.a4.value && form.a0.value==form.a8.value) ||
        (form.a1.value!="" 
   && form.a1.value==form.a4.value && form.a1.value==form.a7.value) ||
        (form.a2.value!="" 
   && form.a2.value==form.a5.value && form.a2.value==form.a8.value) ||
        (form.a2.value!="" 
   && form.a2.value==form.a4.value && form.a2.value==form.a6.value) ||
        (form.a3.value!="" 
   && form.a3.value==form.a4.value && form.a3.value==form.a5.value) ||
        (form.a6.value!="" 
   && form.a6.value==form.a7.value && form.a6.value==form.a8.value))
   return true;
  else 
           return false;
        }

  function f(a) {
  if (a == "") return "."; else return a;
  }

  // get position for move.
        function comp_move(form,player,weight,depth) {

            var cost;
   var bestcost=-2;
   var position;
   var newplayer;
   if (player=="X") newplayer="O"; else newplayer="X";
   if (depth==diff) return 0;

   if (eval_pos(form)) return 1;
   for (var i=0; i<9; ++i) {
    position='a'+i;
    if (form[position].value != "")
     continue;
    form[position].value=player;
    cost = comp_move(form,newplayer, -weight, depth+1);
    if (cost > bestcost) {
     bestcost=cost;
     if (cost==1) i=9;
    }
    form[position].value="";
   }
   if (bestcost==-2) bestcost=0;
   return(-bestcost);
  }

  // get position for move.
        function get_move(form) {
   var cost;
   var bestcost=-2;
   bestmove="";
   // don't think about first move.
   if (step++ == 0)
    if (form.a4.value=="") 
     return "a4";
    else 
    if (form.a0.value=="") 
     return "a0";

   for (var i=0; i<9; ++i) {
    localposition='a'+i;
    if (form[localposition].value != "")
     continue;
    form[localposition].value="O";
    cost=comp_move(form,"X", -1, 0);
    if (cost > bestcost) {
     if (cost==1) i=9;
     bestmove=localposition;
     bestcost=cost;
    }
    form[localposition].value="";
   }
   return bestmove;
        }

  // complain if user attempts to change board
        function complain(field) {
   field.form.output.focus(); // put focus eleswhere
   alert("Don't change the game fields directly!");
        }
 //a href="http://www.ucsd.edu/
        // the end -->
      </SCRIPT>

<BR>
<HR><FORM><INPUT SIZE=1 NAME="a0" OnFocus="complain(this)"><INPUT TYPE="button" NAME="b0" OnClick="clickit(this)"><INPUT SIZE=1 NAME="a1" OnFocus="complain(this)"><INPUT TYPE="button" NAME="b1" OnClick="clickit(this)"><INPUT SIZE=1 NAME="a2" OnFocus="complain(this)"><INPUT TYPE="button" NAME="b2" OnClick="clickit(this)">
<BR><INPUT SIZE=1 NAME="a3" OnFocus="complain(this)"><INPUT TYPE="button" NAME="b3" OnClick="clickit(this)"><INPUT SIZE=1 NAME="a4" OnFocus="complain(this)"><INPUT TYPE="button" NAME="b4" OnClick="clickit(this)"><INPUT SIZE=1 NAME="a5" OnFocus="complain(this)"><INPUT TYPE="button" NAME="b5" OnClick="clickit(this)">
<BR><INPUT SIZE=1 NAME="a6" OnFocus="complain(this)"><INPUT TYPE="button" NAME="b6" OnClick="clickit(this)"><INPUT SIZE=1 NAME="a7" OnFocus="complain(this)"><INPUT TYPE="button" NAME="b7" OnClick="clickit(this)"><INPUT SIZE=1 NAME="a8" OnFocus="complain(this)"><INPUT TYPE="button" NAME="b8" OnClick="clickit(this)">
<BR>

<P>Message:<INPUT NAME="output" TYPE="text">

<P>Difficulty:<SELECT NAME="difficulty" OnChange="diff=form.difficulty[form.difficulty.selectedIndex].value;">
<OPTION VALUE=1>Very Easy<OPTION VALUE=2>Easy<OPTION VALUE=3 SELECTED>Medium<OPTION VALUE=4>Hard (may think a long time)</SELECT>
<BR><INPUT TYPE="button" VALUE="Computer Moves First" OnClick=" if (!step++) this.form.a4.value='O';">
<BR><INPUT TYPE="reset" VALUE="Restart" OnClick="clear_all(this.form)"></FORM>