Advertisement
technoworld

Tic Tac Game in Blogger

Mar 14th, 2012
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.53 KB | None | 0 0
  1. <script language="javascript">
  2. //Tic Tac Toe- By Brian (http://scriptasylum.com/bgaudiodr/)
  3. //Modified by Yossi Cohen (yossi@prosite.co.il)
  4. //Featured on Dynamicdrive.com
  5. //Visit http://www.dynamicdrive.com for this script
  6. var image1=new Image(); image1.src="http://2.bp.blogspot.com/-0bwll3cd88g/TmPKLohO_oI/AAAAAAAAE7g/jf-wkoNlEcc/s400/ex.gif";
  7. var image2=new Image(); image2.src="http://1.bp.blogspot.com/-KYUR0umrPnk/TmPKL6jcCQI/AAAAAAAAE7w/2TP3aHzPwzw/s400/oh.gif";
  8. var level=1, myway, mynextmove;
  9. var tmp, done, iswon, content;
  10. var pcwins=[0,0,0,0];
  11. var playerwins=[0,0,0,0];
  12. var draws=[0,0,0,0];
  13. var playerstarts=true;
  14. var moves=new Array();
  15. var game=new Array(9);
  16. var choices=[11,12,13,21,22,23,31,32,33];
  17. var corners=[11,13,31,33];
  18. var ways=new Array();
  19. ways[1]=[0,11,12,13];
  20. ways[2]=[0,21,22,23];
  21. ways[3]=[0,31,32,33];
  22. ways[4]=[0,11,21,31];
  23. ways[5]=[0,12,22,32];
  24. ways[6]=[0,13,23,33];
  25. ways[7]=[0,11,22,33];
  26. ways[8]=[0,13,22,31];
  27. var w3c=(document.getElementById)?true:false;
  28. var ns4=(document.layers)?true:false;
  29. var ie4=(document.all && !w3c)?true:false;
  30. var ie5=(document.all && w3c)?true:false;
  31. var ns6=(w3c && navigator.appName.indexOf("Netscape")>=0)?true:false;
  32. function init(){
  33. oktoplay=true;
  34. iswon=false;
  35. done=0;
  36. writetext(4);
  37. moves[11]=0; moves[12]=0; moves[13]=0; moves[21]=0; moves[22]=0; moves[23]=0; moves[31]=0; moves[32]=0; moves[33]=0;
  38. for(i=0;i<=8;i++){
  39. document.images['rc'+choices[i]].src="http://4.bp.blogspot.com/-AvgxeOIK0FU/TmPKLxjDZpI/AAAAAAAAE7o/ATKe1Qt6p-I/s400/nothing.gif";
  40. document.images['rc'+choices[i]].alt="";
  41. game[i]=0;
  42. }
  43. if(!playerstarts)pcturn();
  44. }
  45. function writetext(num){
  46. switch(num){
  47. case 1: content='This game is a draw';
  48. break;
  49. case 2: content='The computer won this round.';
  50. break;
  51. case 3: content='You won this round.';
  52. break;
  53. case 4: content='LEVEL: '+level+'\n\nComputer Wins: This level- '+pcwins[level]+' (Total: '+(pcwins[0]+pcwins[1]+pcwins[2]+pcwins[3])+')\nPlayer Wins : This level- '+playerwins[level]+' (Total: '+(playerwins[0]+playerwins[1]+playerwins[2]+playerwins[3])+')\nDraws : This level- '+draws[level]+' (Total: '+(draws[0]+draws[1]+draws[2]+draws[3])+')';
  54. break;
  55. }
  56. document.scores.scores2.value=content
  57. if(num<4)setTimeout('init(4)',1000);
  58. }
  59. function setlevel(x){
  60. if (level!=x){
  61. level=x;
  62. init();
  63. }}
  64. function setbutton(cellnum){
  65. if (!iswon){ // Thanks to Roger for finding this Bug !!!
  66. if(moves[cellnum]==0){
  67. document.images['rc'+cellnum].src="http://2.bp.blogspot.com/-0bwll3cd88g/TmPKLohO_oI/AAAAAAAAE7g/jf-wkoNlEcc/s400/ex.gif";
  68. document.images['rc'+cellnum].alt=" X ";
  69. moves[cellnum]=1;
  70. game[done]=cellnum;
  71. done++;
  72. findwinner(true);
  73. }else alert('You cannot move here!');
  74. }}
  75. function pcstrategy(istowin){
  76. if (level>0){
  77. var str=(istowin)? 2 : 1;
  78. for(n=1;n<=8;n++){
  79. if((moves[ways[n][1]]==str) && (moves[ways[n][2]]==str) && (moves[ways[n][3]]==0)) tmp=ways[n][3];
  80. if((moves[ways[n][1]]==str) && (moves[ways[n][3]]==str) && (moves[ways[n][2]]==0)) tmp=ways[n][2];
  81. if((moves[ways[n][2]]==str) && (moves[ways[n][3]]==str) && (moves[ways[n][1]]==0)) tmp=ways[n][1];
  82. }}}
  83.  
  84. function selecCorner(which){
  85. if (which=="empty"){
  86. do{
  87. tmp=corners[Math.floor(Math.random()*4)];
  88. }while(moves[tmp]!=0);
  89. }
  90. else
  91. tmp=corners[Math.floor(Math.random()*4)];
  92. }
  93.  
  94. function pcdontlose(){
  95. if (!playerstarts){
  96. if (done==0){
  97. tmp=choices[2*Math.floor(Math.random()*5)];
  98. if (tmp==22) myway=1;
  99. else myway=2;
  100. }
  101. else if (done==2){
  102. if (myway==1){
  103. if (game[1]==11 || game[1]==13 || game[1]==31 || game[1]==33)
  104. tmp=44-game[1];
  105. else{
  106. dlta=22-game[1];
  107. op0=22+dlta+(10/dlta);
  108. op1=22+dlta-(10/dlta);
  109. tmp=eval("op"+Math.floor(Math.random()*2));
  110. }}
  111. else if (myway==2){
  112. if (game[1]==22){
  113. tmp=44-game[0];
  114. myway=21;
  115. }
  116. else if (game[1]==11 || game[1]==13 || game[1]==31 || game[1]==33){
  117. selecCorner("empty");
  118. myway=22;
  119. }
  120. else{
  121. tmp=22;
  122. myway=23;
  123. }}}
  124. else if (done==4){
  125. if (myway==22){
  126. for (i=0; i<4 ;i++){
  127. if (moves[corners[i]]==0){
  128. tmp=corners[i];
  129. }}}
  130. else if (myway==23){
  131. dlta=game[1]-game[0];
  132. op0=44-(game[1]+dlta);
  133. op1=(op0+game[0])/2;
  134. tmp=eval("op"+Math.floor(Math.random()*2));
  135. }
  136. else if (myway==1)
  137. tmp=44+game[2]-(2*game[3]);
  138. }}
  139. else if (level==3){
  140. if (done==1){
  141. if (game[0]==11 || game[0]==13 || game[0]==31 || game[0]==33){
  142. tmp=22;
  143. myway=1;
  144. }
  145. else if (game[0]==22){
  146. selecCorner("any");
  147. myway=2;
  148. }
  149. else{
  150. tmp=22;
  151. myway=3;
  152. }}
  153. else if (done==3){
  154. if (myway==1){
  155. if (game[2]==44-game[0])
  156. tmp=choices[1+(2*Math.floor(Math.random()*4))];
  157. else
  158. tmp=44-game[0]
  159. }
  160. else if (myway==2){
  161. if (game[2]==44-game[1])
  162. selecCorner("empty");
  163. }
  164. else if (myway==3){
  165. if (game[2]==11 || game[2]==13 || game[2]==31 || game[2]==33)
  166. tmp=44-game[2];
  167. if (game[2]==44-game[0]){
  168. dlta=22-game[2];
  169. tmp=22+(10/dlta);
  170. mynextmove=tmp+dlta;
  171. }
  172. else{
  173. dlta=22-game[0];
  174. op0=game[0]+(10/dlta);
  175. op1=game[0]-(10/dlta);
  176. op2=game[2]+dlta;
  177. tmp=eval("op"+Math.floor(Math.random()*3));
  178. }}}
  179. else if (done==5 && myway==3){
  180. tmp=mynextmove;
  181. }}}
  182.  
  183. function findwinner(isplayer){
  184. me=(isplayer)? 1 : 2;
  185. for(n=1;n<=8;n++){
  186. if( (moves[ways[n][1]]==me) && (moves[ways[n][2]]==me) && (moves[ways[n][3]]==me) ){
  187. iswon=true;
  188. break;
  189. }}
  190. if(iswon){
  191. if(isplayer){
  192. playerwins[level]++;
  193. playerstarts=true;
  194. writetext(3);
  195. }else{
  196. pcwins[level]++;
  197. playerstarts=false;
  198. writetext(2);
  199. }}else{
  200. if(done>8){
  201. draws[level]++;
  202. playerstarts=!playerstarts;
  203. writetext(1);
  204. }else if(isplayer) pcturn();
  205. }}
  206. function pcrandom(){
  207. do{
  208. tmp=choices[Math.floor(Math.random()*9)];
  209. }while(moves[tmp]!=0);
  210. }
  211. function pcturn(){
  212. tmp='00';
  213. pcstrategy(true);
  214. if(tmp=='00')pcstrategy(false);
  215. if(tmp=='00' && level>1)
  216. pcdontlose();
  217. if(tmp=='00')
  218. pcrandom();
  219. moves[tmp]=2;
  220. game[done]=tmp;
  221. document.images['rc'+tmp].src="http://1.bp.blogspot.com/-KYUR0umrPnk/TmPKL6jcCQI/AAAAAAAAE7w/2TP3aHzPwzw/s400/oh.gif";
  222. document.images['rc'+tmp].alt=" O ";
  223. done++;
  224. findwinner(false);
  225. }
  226. window.onload=init;
  227. window.onresize=function(){
  228. if(ns4)setTimeout('history.go(0)',400);
  229. }
  230. </script>
  231.  
  232. <table cellpadding="0" cellspacing="0" border="5" bordercolor="black" bordercolorlight="gray" bgcolor="white"><tr>
  233. <td width="55"><a href="javascript:setbutton(11)"><img src="http://4.bp.blogspot.com/-AvgxeOIK0FU/TmPKLxjDZpI/AAAAAAAAE7o/ATKe1Qt6p-I/s400/nothing.gif" border="0" name="rc11"></a></td>
  234. <td width="55"><a href="javascript:setbutton(12)"><img src="http://4.bp.blogspot.com/-AvgxeOIK0FU/TmPKLxjDZpI/AAAAAAAAE7o/ATKe1Qt6p-I/s400/nothing.gif" border="0" name="rc12"></a></td>
  235. <td width="55"><a href="javascript:setbutton(13)"><img src="http://4.bp.blogspot.com/-AvgxeOIK0FU/TmPKLxjDZpI/AAAAAAAAE7o/ATKe1Qt6p-I/s400/nothing.gif" border="0" name="rc13"></a></td>
  236. </tr><tr>
  237. <td width="55"><a href="javascript:setbutton(21)"><img src="http://4.bp.blogspot.com/-AvgxeOIK0FU/TmPKLxjDZpI/AAAAAAAAE7o/ATKe1Qt6p-I/s400/nothing.gif" border="0" name="rc21"></a></td>
  238. <td width="55"><a href="javascript:setbutton(22)"><img src="http://4.bp.blogspot.com/-AvgxeOIK0FU/TmPKLxjDZpI/AAAAAAAAE7o/ATKe1Qt6p-I/s400/nothing.gif" border="0" name="rc22"></a></td>
  239. <td width="55"><a href="javascript:setbutton(23)"><img src="http://4.bp.blogspot.com/-AvgxeOIK0FU/TmPKLxjDZpI/AAAAAAAAE7o/ATKe1Qt6p-I/s400/nothing.gif" border="0" name="rc23"></a></td>
  240. </tr><tr>
  241. <td width="55"><a href="javascript:setbutton(31)"><img src="http://4.bp.blogspot.com/-AvgxeOIK0FU/TmPKLxjDZpI/AAAAAAAAE7o/ATKe1Qt6p-I/s400/nothing.gif" border="0" name="rc31"></a></td>
  242. <td width="55"><a href="javascript:setbutton(32)"><img src="http://4.bp.blogspot.com/-AvgxeOIK0FU/TmPKLxjDZpI/AAAAAAAAE7o/ATKe1Qt6p-I/s400/nothing.gif" border="0" name="rc32"></a></td>
  243. <td width="55"><a href="javascript:setbutton(33)"><img src="http://4.bp.blogspot.com/-AvgxeOIK0FU/TmPKLxjDZpI/AAAAAAAAE7o/ATKe1Qt6p-I/s400/nothing.gif" border="0" name="rc33"></a></td>
  244. </tr></table><br>
  245. <form name="scores"><textarea name="scores2" cols="60" rows="6" ></textarea>
  246. <br><br>
  247. <input type="radio" name="level" id="level" onclick="setlevel(0)">level 0 -- the Computer is Fucking dumb. <br>
  248. <input type="radio" name="level" id="level" onclick="setlevel(1)" checked>level 1 -- Computer is smarter (original version). <br>
  249. <input type="radio" name="level" id="level" onclick="setlevel(2)">level 2 -- You MAY win (only when you start). <br>
  250. <input type="radio" name="level" id="level" onclick="setlevel(3)">level 3 -- Computer NEVER lose. <br>
  251. </form>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement