home *** CD-ROM | disk | FTP | other *** search
/ Chip 2003 July / Chip_2003-07_cd1.bin / internet / lufiweb / myweb / programy / hry / piskvorky / piskvorky.js < prev   
Encoding:
JavaScript  |  2003-02-25  |  6.9 KB  |  343 lines

  1. //<SCRIPT Language="JavaScript">
  2. var konec=1;
  3. var pozastav=0;
  4. var celkem_obrazku=5;
  5. var pocet_obrazku=0;
  6.       ie4 = document.all?1:0
  7.         ns4 = document.layers?1:0
  8.         ns6 = document.getElementById&&!document.all?1:0
  9. //obj.getElementsByName("SP")[0].value          
  10. function PocitejObr()
  11. {
  12. if(++pocet_obrazku==celkem_obrazku) 
  13. {konec=0;}
  14. }
  15. var obr=new Array();
  16. var obra=new Array();
  17. obr[1]=new Image(20,20);
  18. obr[1].onLoad=PocitejObr();
  19. obr[1].src="kolo.gif";
  20. obr[-1]=new Image(20,20);
  21. obr[-1].onLoad=PocitejObr();
  22. obr[-1].src="kriz.gif";
  23. obra[1]=new Image(20,20);
  24. obra[1].onLoad=PocitejObr();
  25. obra[1].src="koloa.gif";
  26. obra[-1]=new Image(20,20);
  27. obra[-1].onLoad=PocitejObr();
  28. obra[-1].src="kriza.gif";
  29. var nic=new Image(20,20);
  30. nic.onLoad=PocitejObr();
  31. nic.src="nic.gif";
  32. var pr=12;//pocet radku
  33. var ps=15;//pocet sloupcu
  34. var na_tahu=1;// 1 kolecko, -1 krizek 
  35. var _r=pr;
  36. var r_=0;
  37. var _s=ps;
  38. var s_=0;
  39. var pole=new Array();
  40. for (i=0;i<pr;i++)
  41.  for (j=0;j<ps;j++)
  42.  {
  43.  pole[i+"_"+j]=0;
  44.  }
  45. function KresliTab()
  46. {
  47. with(document)
  48.  {
  49.  write("<table border=1  CELLSPACING=1 CELLPADDING=0 bgcolor=White >");
  50. for (i=0;i<pr;i++)
  51.  {
  52.  write("<tr>");
  53.  for (j=0;j<ps;j++)
  54.  {
  55.  write("<td width=20 height=20>");
  56.  write("<IMG SRC=\"nic.gif\" align=middle WIDTH=20 HEIGHT=20 BORDER=0 name=r"+i+"_"+j+" OnClick=Akce("+i+","+j+")>");
  57.  write("</td>");
  58.  }
  59.  write("</tr>");
  60.  }
  61.  write("</table>");
  62.  }
  63. }
  64. function Akce(i,j)
  65. {
  66. if(!pozastav)
  67. if(!konec)
  68. if (!pole[i+"_"+j])
  69. {
  70. document["r"+i+"_"+j].src=obr[na_tahu].src;
  71. pole[i+"_"+j]=na_tahu;
  72. if(_r>i) {_r=i};
  73. if(r_<i) {r_=i};
  74. if(_s>j) {_s=j};
  75. if(s_<j) {s_=j};
  76.  
  77. if (Vyhodnot()==1)
  78. {
  79. konec=na_tahu;
  80. if (na_tahu==1) 
  81.    { document.skore.ko.value++;   }
  82. else {document.skore.kr.value++}
  83. if (ns6==1)
  84.   {
  85.     document.getElementById('NH').style.background="Yellow";
  86.     document.getElementById('NH').style.color="Black";
  87.     }
  88. else
  89.     {
  90.     document.all.item('NH').style.background="Yellow";
  91.     document.all.item('NH').style.color="Black";
  92.     }
  93. }
  94. if (Vyhodnot()==2)
  95. {
  96. // neni volne pole
  97. konec=na_tahu;
  98. alert("Remiza\nStiskni tlaciko NOVA HRA");
  99. }
  100. NaTahu();
  101. }
  102. }
  103. function NaTahu()
  104. {
  105. if (!konec)
  106. {
  107. na_tahu=-1*na_tahu;
  108. if (na_tahu){document['tah'].src=obr[na_tahu].src;}
  109. }
  110. }
  111. function KonRad(j,a,k)
  112. {
  113. s=0;
  114. for (i=a;i<a+5;i++)
  115.  if(!pole[i+"_"+j] || !(pole[i+"_"+j]-k)) s++;
  116.  if(!(s-5)) return 0;
  117. return 1;
  118. }
  119. function KonSlo(i,a,k)
  120. {
  121. s=0;
  122. for (j=a;j<a+5;j++)
  123.  if(!pole[i+"_"+j] || !(pole[i+"_"+j]-k)) s++;
  124.  if(!(s-5)) return 0;
  125. return 1;
  126. }
  127. function KonHD(i,j,k)
  128. {
  129. s=0;
  130. for (l=0;l<5;l++)
  131.  if(!pole[(i+l)+"_"+(j+l)] || !(pole[(i+l)+"_"+(j+l)]-k)) s++;
  132.  if(!(s-5)) return 0;
  133. return 1;
  134. }
  135. function KonVD(i,j,k)
  136. {
  137. s=0;
  138. for (l=0;l<5;l++)
  139.  if(!pole[(i+l)+"_"+(j+4-l)] || !(pole[(i+l)+"_"+(j+4-l)]-k)) s++;
  140.  if(!(s-5)) return 0;
  141. return 1;
  142. }
  143. function KontrolaRem()
  144. {
  145. pozastav=1;
  146. //po radcich
  147. var i;
  148. var j;
  149. for (i=0;i<pr;i++)
  150.  for (j=0;j<ps-4;j++)
  151.   {
  152. if ( !KonSlo(i,j,1)) 
  153. {
  154. pozastav=0;
  155. return 0;
  156. }
  157. if ( !KonSlo(i,j,-1))
  158. {
  159. pozastav=0;
  160.  return 0;
  161. }
  162.   }
  163.    //po sloupcich
  164. for (j=0;j<ps;j++)
  165.  for (i=0;i<pr-4;i++)
  166. {
  167. // kontrola 1
  168. if ( !KonRad(j,i,1)) 
  169. {
  170. pozastav=0;
  171. return 0;
  172. }
  173. // kontrola -1
  174. if ( !KonRad(j,i,-1)) 
  175. {
  176. pozastav=0;
  177. return 0;
  178. }
  179. }
  180. //po hlavni diagonale
  181. for (j=0;j<ps-4;j++)
  182.  for (i=0;i<pr-4;i++)
  183. {
  184. // kontrola 1
  185. if ( !KonHD(i,j,1)) 
  186. {
  187. pozastav=0;
  188. return 0;
  189. }
  190. // kontrola -1
  191. if ( !KonHD(i,j,-1)) 
  192. {
  193. pozastav=0;
  194. return 0;
  195. }
  196. }
  197. //po vedlejsi diagonale
  198. for (j=0;j<ps-4;j++)
  199.  for (i=0;i<pr-4;i++)
  200. {
  201. // kontrola 1
  202. if ( !KonVD(i,j,1)) 
  203. {
  204. pozastav=0;
  205. return 0;
  206. }
  207. // kontrola -1
  208. if ( !KonVD(i,j,-1)) 
  209. {
  210. pozastav=0;
  211. return 0;
  212. }
  213. }
  214. pozastav=0;
  215. return 1;
  216. }
  217. function NovaHra()
  218. {
  219. if(!pozastav)
  220. if (!konec) 
  221. {if (na_tahu==1) document.skore.ko.value--; 
  222. if (na_tahu==-1) document.skore.kr.value--; 
  223. }
  224. konec=0;
  225. _r=pr;
  226. r_=0;
  227. _s=ps;
  228. s_=0;
  229. for (i=0;i<pr;i++)
  230.  for (j=0;j<ps;j++)
  231.  {
  232.  if(pole[i+"_"+j]){document["r"+i+"_"+j].src=nic.src;}
  233.  pole[i+"_"+j]=0;
  234.   }
  235. NaTahu();
  236. }
  237. function Vyhodnot()
  238. {
  239. pozastav=1;
  240. //po radcich
  241. for (i=_r;i<=r_;i++)
  242.  for (j=_s;j<=s_-4;j++)
  243.   if(Math.abs(pole[i+"_"+j]+pole[i+"_"+(j+1)]+ pole[i+"_"+(j+2)]+pole[i+"_"+(j+3)]+ pole[i+"_"+(j+4)])==5)
  244.    {
  245.    document["r"+i+"_"+j].src=obra[na_tahu].src;
  246.    document["r"+i+"_"+(j+1)].src=obra[na_tahu].src;
  247.    document["r"+i+"_"+(j+2)].src=obra[na_tahu].src;
  248.    document["r"+i+"_"+(j+3)].src=obra[na_tahu].src;
  249.    document["r"+i+"_"+(j+4)].src=obra[na_tahu].src;
  250.   pozastav=0;
  251.    return 1}
  252. //po sloupcich
  253. for (j=_s;j<=s_;j++)
  254.  for (i=_r;i<=r_-4;i++)
  255.   if(Math.abs(pole[i+"_"+j]+pole[(i+1)+"_"+j]+ pole[(i+2)+"_"+j]+pole[(i+3)+"_"+j]+ pole[(i+4)+"_"+j])==5)
  256.    {
  257.    document["r"+i+"_"+j].src=obra[na_tahu].src;
  258.    document["r"+(i+1)+"_"+j].src=obra[na_tahu].src;
  259.    document["r"+(i+2)+"_"+j].src=obra[na_tahu].src;
  260.    document["r"+(i+3)+"_"+j].src=obra[na_tahu].src;
  261.    document["r"+(i+4)+"_"+j].src=obra[na_tahu].src;
  262. pozastav=0;
  263.    return 1}
  264. //po hlavni diagonale
  265. for (j=_s;j<=s_-4;j++)
  266.  for (i=_r;i<=r_-4;i++)
  267.   if(Math.abs(pole[i+"_"+j]+pole[(i+1)+"_"+(j+1)]+ pole[(i+2)+"_"+(j+2)]+pole[(i+3)+"_"+(j+3)]+ pole[(i+4)+"_"+(j+4)])==5)
  268.    {
  269.       document["r"+i+"_"+j].src=obra[na_tahu].src;
  270.       document["r"+(i+1)+"_"+(j+1)].src=obra[na_tahu].src;
  271.       document["r"+(i+2)+"_"+(j+2)].src=obra[na_tahu].src;
  272.       document["r"+(i+3)+"_"+(j+3)].src=obra[na_tahu].src;
  273.       document["r"+(i+4)+"_"+(j+4)].src=obra[na_tahu].src;
  274. pozastav=0;
  275.    return 1}
  276. //po vedlejsi diagonale
  277. for (j=_s;j<=s_-4;j++)
  278.  for (i=_r;i<=r_-4;i++)
  279.   if(Math.abs(pole[i+"_"+(j+4)]+pole[(i+1)+"_"+(j+3)]+ pole[(i+2)+"_"+(j+2)]+pole[(i+3)+"_"+(j+1)]+ pole[(i+4)+"_"+j])==5)
  280.    {
  281.      document["r"+i+"_"+(j+4)].src=obra[na_tahu].src;
  282.     document["r"+(i+1)+"_"+(j+3)].src=obra[na_tahu].src;
  283.       document["r"+(i+2)+"_"+(j+2)].src=obra[na_tahu].src;
  284.       document["r"+(i+3)+"_"+(j+1)].src=obra[na_tahu].src;
  285.       document["r"+(i+4)+"_"+j].src=obra[na_tahu].src;
  286. pozastav=0;
  287.  return 1}
  288. pocet=0;
  289. if(_r==0 && r_==(pr-1) && _s==0 && s_==(ps-1))
  290. {for (i=0;i<pr;i++)
  291.  for (j=0;j<ps;j++)
  292.   if (!pole[i+"_"+j]) {pocet++}
  293. if (!pocet) {pozastav=0;return 2;}
  294. }
  295. pozastav=0;
  296. return 0;
  297. }
  298. function KR()
  299. {// kontrola remizy
  300. if(!pozastav)
  301. if (!konec)
  302. {
  303. if (KontrolaRem()) 
  304. {konec=na_tahu; alert("Ji₧ nelze vyhrßt!\nStiskni tlaΦφtko NOV┴ HRA");}
  305. else
  306. {alert("JeÜt∞ lze vyhrßt!");}
  307. }
  308. }
  309. function Nuluj()
  310. {
  311. document.skore.kr.value=0;
  312. document.skore.ko.value=0;
  313. }
  314. function Aktiv(d)
  315. {
  316. if(!pozastav)
  317. if(!konec)
  318. if (ns6==1)
  319.   {
  320.     document.getElementById(d).style.background="red";
  321.     }
  322. else
  323.     {
  324.     document.all.item(d).style.background="red";
  325.     }
  326. }
  327. function noAktiv(d)
  328. {
  329. if(!pozastav)
  330. if(!konec)
  331. {
  332. if (ns6==1)
  333.   {
  334.     document.getElementById(d).style.background="Black";
  335.     document.getElementById(d).style.color="White";
  336.   }
  337. else
  338.     {
  339.     document.all.item(d).style.background="";
  340.     document.all.item(d).style.color="White";
  341.     }
  342. }
  343. }