Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Gra O i X. Problem z zaznaczeniem pola w roztawieniu 4x4
Forum PHP.pl > Forum > Przedszkole
karollo92
Mam do przerobienie grę kółko i krzyżyk z 9 polami na tą samą grę tylko ze z 16 polami. Większość udało już mi się zrobić tylko mam problem z 5 ostatnimi przyciskami które wstawiają znak do pola. otóż kiedy je wcisnę one zaznaczają mi zawsze pole a1. Gdzie jest błąd questionmark.gif?

Kod
<html>

<head>
</head>

<body>








<script language=JavaScript>
<!--
step = 0;
diff=3;
function clear_all(form) {
step = 0;
for (i=0;i<16; ++i) {
position="a"+i;
form[position].value="";
}
}
function clickit(field) {
if (step == -1) {alert("Wciśnij reset, aby zagrać ponownie");
     return;}
position=field.name.substring(1,2,1);
position = 'a'+position;
if (field.form[position].value !="") {alert("Ruch niedozwolny");
    return;}
field.form[position].value="X";
if (eval_pos(field.form)) {
field.form.output.value="Wygrałeś!";
step = -1;
return;
}
position=get_move(field.form);
field.form.output.value=' ' + position.substring(1,2,1);
if (position=="") {
field.form.output.value="Niema zwycięzcy.";
step = -1;
return;
}
field.form[position].value="O";
if (eval_pos(field.form)) {
field.form.output.value="Przegrałeś;!";
step = -1;
}
}

function eval_pos(form) {
if
((form.a0.value!="" && form.a0.value==form.a1.value && form.a0.value==form.a2.value && form.a0.value==form.a3.value)||
(form.a0.value!="" && form.a0.value==form.a4.value && form.a0.value==form.a8.value && form.a0.value==form.a12.value) ||
(form.a0.value!="" && form.a0.value==form.a5.value && form.a0.value==form.a10.value && form.a0.value==form.a15.value) ||
(form.a1.value!="" && form.a1.value==form.a5.value && form.a1.value==form.a9.value && form.a1.value==form.a13.value) ||
(form.a2.value!="" && form.a2.value==form.a6.value && form.a2.value==form.a10.value && form.a2.value==form.a14.value) ||
(form.a3.value!="" && form.a3.value==form.a7.value && form.a3.value==form.a11.value && form.a3.value==form.a15.value) ||
(form.a3.value!="" && form.a3.value==form.a6.value && form.a3.value==form.a9.value && form.a3.value==form.a12.value) ||
(form.a4.value!="" && form.a4.value==form.a5.value && form.a4.value==form.a6.value && form.a4.value==form.a7.value) ||
(form.a8.value!="" && form.a8.value==form.a9.value && form.a8.value==form.a10.value && form.a8.value==form.a11.value) ||
(form.f2.value!="" && form.a12.value==form.a13.value && form.a12.value==form.a14.value && form.a12.value==form.a15.value))
return true;
else    
return false;
}

function f(a) {
if (a == "") return "."; else return a;
}
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<16; ++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=16;
}
form[position].value="";
}
if (bestcost==-2) bestcost=0;
return(-bestcost);
}
function get_move(form) {
var cost;
var bestcost=-2;
bestmove="";
if (step++ == 0)
if (form.a4.value=="")
return "a4";
else
if (form.a0.value=="")
return "a0";
for (var i=0; i<16; ++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=16;
bestmove=localposition;
bestcost=cost;
}
form[localposition].value="";
}
return bestmove;
}
function complain(field) {
field.form.output.focus();
alert("Ruch niedozwolony!");
}

// -->
</SCRIPT><center>
<p align="center"><b>KÓŁKO i KRZYŻYK</b>
<br>
<br>
      <FORM>
      <DIV align=center>
      <CENTER>
      <P>
          <INPUT name=a0  onfocus=complain(this) size=1> <INPUT name=b0 onclick=clickit(this) type=button>
          <INPUT name=a1  onfocus=complain(this) size=1> <INPUT name=b1 onclick=clickit(this) type=button>
          <INPUT name=a2  onfocus=complain(this) size=1> <INPUT name=b2 onclick=clickit(this) type=button>
          <INPUT name=a3  onfocus=complain(this) size=1> <INPUT name=b3 onclick=clickit(this) type=button>
      <BR>
        <INPUT name=a4 onfocus=complain(this) size=1> <INPUT name=b4 onclick=clickit(this) type=button>
        <INPUT name=a5 onfocus=complain(this) size=1> <INPUT name=b5 onclick=clickit(this) type=button>
        <INPUT name=a6 onfocus=complain(this) size=1> <INPUT name=b6 onclick=clickit(this) type=button>
        <INPUT name=a7 onfocus=complain(this) size=1> <INPUT name=b7 onclick=clickit(this) type=button>
      <BR>
        <INPUT name=a8 onfocus=complain(this) size=1> <INPUT name=b8 onclick=clickit(this) type=button>
        <INPUT name=a9 onfocus=complain(this) size=1> <INPUT name=b9 onclick=clickit(this) type=button>
        <INPUT name=a10 onfocus=complain(this) size=1> <INPUT name=b10 onclick=clickit(this) type=button>
        <INPUT name=a11 onfocus=complain(this) size=1> <INPUT name=b11 onclick=clickit(this) type=button>
      <BR>
        <INPUT name=a12 onfocus=complain(this) size=1> <INPUT name=b12 onclick=clickit(this) type=button>
        <INPUT name=a13 onfocus=complain(this) size=1> <INPUT name=b13 onclick=clickit(this) type=button>
        <INPUT name=a14 onfocus=complain(this) size=1> <INPUT name=b14 onclick=clickit(this) type=button>
        <INPUT name=a15 onfocus=complain(this) size=1> <INPUT name=b15 onclick=clickit(this) type=button>
      <BR>
      <BR>
      <BR>

<FONT size=3>
      Komunikat:
      <INPUT name=output>
      <BR>
      <BR>
      Stopień trudności:
      <SELECT name=difficulty onchange=diff=form.difficulty[form.difficulty.selectedIndex].value;
        size=1> <OPTION
            value=1>Bardz łatwy</OPTION> <OPTION
            value=2>Łatwy</OPTION>  <OPTION
selected value=3>Normalny</OPTION> <OPTION
          value=4>Ciężki</OPTION>
          </SELECT>
           <BR>
           <INPUT onclick="
if (!step++) this.form.a4.value='O';" type=button value="Computer wykonuje ruch jako pierwszy">
      <BR>
      <INPUT onclick=clear_all(this.form) type=reset value=Restart>
      </font>
      </P></CENTER></DIV></FORM>






</body>
</html>



Chciałbym podkreślić iż dopiero zaczynam przygodę z JS więc licze na dużą wyrozumiałość sciana.gif
PatrOniX
Siemka błąd miałeś tu
  1. position=field.name.substring(1,3,1);
  2. position = 'a'+position;
  3. if (field.form[position].value !="") {alert("Ruch niedozwolny"); return;}
  4. field.form[position].value="X";
  5. if (eval_pos(field.form)) {
  6. field.form.output.value="Wygrałeś!";
  7. step = -1;
  8. return;
  9. }
  10. position=get_move(field.form);
  11. field.form.output.value=' ' + position.substring(1,3,1);


zamiast 1,2,1 trzeba było 1,3,1
na wypadek masz poniżej całe

  1. <html>
  2.  
  3. <head>
  4. </head>
  5.  
  6. <body>
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15. <script language=JavaScript>
  16. <!--
  17. step = 0;
  18. diff=4;
  19. function clear_all(form) {
  20. step = 0;
  21. for (i=0;i<16; ++i) {
  22. position="a"+i;
  23. form[position].value="";
  24. }
  25. }
  26. function clickit(field) {
  27. if (step == -1) {alert("Wciśnij reset, aby zagrać ponownie"); return;}
  28.  
  29. position=field.name.substring(1,3,1);
  30. position = 'a'+position;
  31. if (field.form[position].value !="") {alert("Ruch niedozwolny"); return;}
  32. field.form[position].value="X";
  33. if (eval_pos(field.form)) {
  34. field.form.output.value="Wygrałeś!";
  35. step = -1;
  36. return;
  37. }
  38. position=get_move(field.form);
  39. field.form.output.value=' ' + position.substring(1,3,1);
  40. if (position=="") {
  41. field.form.output.value="Niema zwycięzcy.";
  42. step = -1;
  43. return;
  44. }
  45. field.form[position].value="O";
  46. if (eval_pos(field.form)) {
  47. field.form.output.value="Przegrałeś;!";
  48. step = -1;
  49. }
  50. }
  51.  
  52. function eval_pos(form) {
  53. if ((form.a0.value!="" && form.a0.value==form.a4.value && form.a0.value==form.a8.value && form.a0.value==form.a12.value)||
  54. (form.a0.value!="" && form.a0.value==form.a1.value && form.a0.value==form.a2.value && form.a0.value==form.a3.value) ||
  55. (form.a0.value!="" && form.a0.value==form.a5.value && form.a0.value==form.a10.value && form.a0.value==form.a15.value) ||
  56. (form.a1.value!="" && form.a1.value==form.a5.value && form.a1.value==form.a9.value && form.a1.value==form.a13.value) ||
  57. (form.a2.value!="" && form.a2.value==form.a6.value && form.a2.value==form.a10.value && form.a2.value==form.a14.value) ||
  58. (form.a3.value!="" && form.a3.value==form.a7.value && form.a3.value==form.a11.value && form.a3.value==form.a15.value) ||
  59. (form.a3.value!="" && form.a3.value==form.a6.value && form.a3.value==form.a9.value && form.a3.value==form.a12.value) ||
  60. (form.a4.value!="" && form.a4.value==form.a5.value && form.a4.value==form.a5.value && form.a4.value==form.a7.value) ||
  61. (form.a8.value!="" && form.a8.value==form.a9.value && form.a8.value==form.a10.value && form.a8.value==form.a11.value) ||
  62. (form.a12.value!="" && form.a12.value==form.a13.value && form.a12.value==form.a14.value && form.a12.value==form.a15.value))
  63. return true;
  64. else
  65. return false;
  66. }
  67.  
  68. function f(a) {
  69. if (a == "") return "."; else return a;
  70. }
  71. function comp_move(form,player,weight,depth) {
  72. var cost;
  73. var bestcost=-2;
  74. var position;
  75. var newplayer;
  76. if (player=="X") newplayer="O"; else newplayer="X";
  77. if (depth==diff) return 0;
  78. if (eval_pos(form)) return 1;
  79. for (var i=0; i<16; ++i) {
  80. position='a'+i;
  81. if (form[position].value != "")
  82. continue;
  83. form[position].value=player;
  84. cost = comp_move(form,newplayer, -weight, depth+1);
  85. if (cost > bestcost) {
  86. bestcost=cost;
  87. if (cost==1) i=16;
  88. }
  89. form[position].value="";
  90. }
  91. if (bestcost==-2) bestcost=0;
  92. return(-bestcost);
  93. }
  94. function get_move(form) {
  95. var cost;
  96. var bestcost=-2;
  97. bestmove="";
  98. if (step++ == 0)
  99. if (form.a7.value=="")
  100. return "a7";
  101. else
  102. if (form.a0.value=="")
  103. return "a0";
  104. for (var i=0; i<16; ++i) {
  105. localposition='a'+i;
  106. if (form[localposition].value != "")
  107. continue;
  108. form[localposition].value="O";
  109. cost=comp_move(form,"X", -1, 0);
  110. if (cost > bestcost) {
  111. if (cost==1) i=16;
  112. bestmove=localposition;
  113. bestcost=cost;
  114. }
  115. form[localposition].value="";
  116. }
  117. return bestmove;
  118. }
  119. function complain(field) {
  120. field.form.output.focus();
  121. alert("Ruch niedozwolony!");
  122. }
  123.  
  124. // -->
  125. </SCRIPT><center>
  126. <p align="center"><b>KÓŁKO i KRZYŻYK</b>
  127. <br>
  128. <br>
  129. <FORM>
  130. <DIV align=center>
  131. <CENTER>
  132. <P>
  133. <INPUT name=a0 onfocus=complain(this) size=1> <INPUT name=b0 onclick=clickit(this) type=button>
  134. <INPUT name=a1 onfocus=complain(this) size=1> <INPUT name=b1 onclick=clickit(this) type=button>
  135. <INPUT name=a2 onfocus=complain(this) size=1> <INPUT name=b2 onclick=clickit(this) type=button>
  136. <INPUT name=a3 onfocus=complain(this) size=1> <INPUT name=b3 onclick=clickit(this) type=button>
  137. <BR>
  138. <INPUT name=a4 onfocus=complain(this) size=1> <INPUT name=b4 onclick=clickit(this) type=button>
  139. <INPUT name=a5 onfocus=complain(this) size=1> <INPUT name=b5 onclick=clickit(this) type=button>
  140. <INPUT name=a6 onfocus=complain(this) size=1> <INPUT name=b6 onclick=clickit(this) type=button>
  141. <INPUT name=a7 onfocus=complain(this) size=1> <INPUT name=b7 onclick=clickit(this) type=button>
  142. <BR>
  143. <INPUT name=a8 onfocus=complain(this) size=1> <INPUT name=b8 onclick=clickit(this) type=button>
  144. <INPUT name=a9 onfocus=complain(this) size=1> <INPUT name=b9 onclick=clickit(this) type=button>
  145. <INPUT name=a10 onfocus=complain(this) size=1> <INPUT name=b10 onclick=clickit(this) type=button>
  146. <INPUT name=a11 onfocus=complain(this) size=1> <INPUT name=b11 onclick=clickit(this) type=button>
  147. <BR>
  148. <INPUT name=a12 onfocus=complain(this) size=1> <INPUT name=b12 onclick=clickit(this) type=button>
  149. <INPUT name=a13 onfocus=complain(this) size=1> <INPUT name=b13 onclick=clickit(this) type=button>
  150. <INPUT name=a14 onfocus=complain(this) size=1> <INPUT name=b14 onclick=clickit(this) type=button>
  151. <INPUT name=a15 onfocus=complain(this) size=1> <INPUT name=b15 onclick=clickit(this) type=button>
  152. <BR>
  153. <BR>
  154. <BR>
  155. <BR><BR><BR>
  156.  
  157. <FONT size=3>
  158. Komunikat:
  159. <INPUT name=output><BR><BR>
  160. Stopień trudności: <SELECT name=difficulty
  161. onchange=diff=form.difficulty[form.difficulty.selectedIndex].value;
  162. size=1>
  163. <OPTION value=1>Na luzie</OPTION>
  164. <OPTION value=2>Spoko poziom</OPTION>
  165. <OPTION selected value=3>Tu już ciężej</OPTION>
  166. <OPTION value=4>Tu to masakra nigdy nie wygrasz</OPTION></SELECT> <BR>
  167. <INPUT onclick="if (!step++) this.form.a7.value='O';" type=button value="Computer wykonuje ruch jako pierwszy">
  168. <BR><INPUT onclick=clear_all(this.form) type=reset value=Restart>
  169. </font>
  170. </P></CENTER></DIV></FORM>
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177. </body>
  178. </html>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.