Advertisement
Guest User

Untitled

a guest
Jul 15th, 2016
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 31.80 KB | None | 0 0
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Chess</title>
  6. <meta name="viewport" content="width=device-width, initial-scale=1">
  7. <link href="/style.css" rel="stylesheet">
  8. <link rel="icon" type="image/png" href="/favicon.png">
  9.  
  10. <script type="text/javascript">
  11. function init() {
  12. infoh3 = document.getElementById("info");
  13. // turn true=white false=black
  14. turn = true;
  15. allwhitemoves=[];
  16. allblackmoves=[];
  17. whiteincheck=false;
  18. blackincheck=false;
  19. whitekingpos=null;
  20. blackkingpos=null;
  21. selectedpiece=null;
  22. pieces = [];
  23. pieces[0] = ["r","n","b","q","K","b","n","r","p","p","p","p","p","p","p","p",
  24. "","","","","","","","","","","","","","","","","","","","","","","","","",
  25. "","","","","","","","p","p","p","p","p","p","p","p","r","n","b","q","K","b","n","r"];
  26. pieces[1] = [];
  27. pieces[2] = [];
  28. moves = [];
  29.  
  30. //document.getElementById("scalechess").style.height=(document.documentElement.clientHeight-16)+"px";
  31.  
  32. iswitch=true
  33. alltds=document.getElementsByTagName("td");
  34.  
  35. /* name black and white pieces true for white, false for black */
  36. for (i=0; i<16; i++) {
  37. pieces[1][i]=false;
  38. }
  39. for (i=48; i<64; i++) {
  40. pieces[1][i]=true;
  41. }
  42.  
  43. for (i=0; i<alltds.length; i++) {
  44. if (i%8==0) {
  45. iswitch=!iswitch
  46. // alert(iswitch);
  47. }
  48. if (!iswitch) {
  49. if (i%2 == 0) {
  50. alltds[i].style.backgroundColor="#aaaaaa";
  51. }
  52. if (i%2 == 1) {
  53. alltds[i].style.backgroundColor="#666666";
  54. // alltds[i].style.color="#ffffff";
  55. }
  56. }
  57.  
  58. if (iswitch) {
  59. if (i%2 == 1) {
  60. alltds[i].style.backgroundColor="#aaaaaa";
  61. }
  62. if (i%2 == 0) {
  63. alltds[i].style.backgroundColor="#666666";
  64. // alltds[i].style.color="#ffffff";
  65. }
  66. }
  67.  
  68. if (pieces[1][i]==false) {
  69. piecespan = document.createElement("img");
  70. /*
  71. piecespan.style.color="#000000";
  72. piecespan.innerHTML=pieces[0][i];
  73. */
  74. piecespan.setAttribute("src","b"+pieces[0][i]+".png");
  75. alltds[i].appendChild(piecespan);
  76.  
  77. // alltds[i].innerHTML='<span style="color:#000000;">'+pieces[0][i]+'</span>';
  78. }
  79. if (pieces[1][i]==true) {
  80. piecespan = document.createElement("img");
  81. // piecespan = document.createElement("span");
  82. // piecespan.style.color="#ffffff";
  83. // piecespan.innerHTML=pieces[0][i];
  84. piecespan.setAttribute("src","w"+pieces[0][i]+".png");
  85. alltds[i].appendChild(piecespan);
  86. // alltds[i].innerHTML='<span style="color:#ffffff;">'+pieces[0][i]+'</span>';
  87. }
  88.  
  89. /* set switch to see if it is a pawns first move */
  90. if (pieces[0][i]=="p") {
  91. pieces[2][i]=true;
  92. }
  93.  
  94. if (pieces[0][i]!=="" && pieces[1][i]==true) {
  95. /*
  96. listener2 = function(event) {
  97. movepiece(comparetd(selectedpiece),comparetd(event.currentTarget));
  98. updateboard();
  99. };
  100. listener1 = function(event) {
  101. if (comparetd(event.currentTarget)!=null) {
  102. alert(pieces[0][comparetd(event.currentTarget)]+","+comparetd(event.currentTarget));
  103. }
  104. selectedpiece=event.currentTarget;
  105. findmoves(comparetd(event.currentTarget));
  106. for (r=0; r<moves.length; r++) {
  107. alltds[moves[r]].style.backgroundColor="#ff0000";
  108. alltds[moves[r]].addEventListener("click",listener2);
  109.  
  110. }
  111. //alert(moves[0]);
  112. };
  113. */
  114. alltds[i].addEventListener("click",listener1);
  115. }
  116.  
  117. }
  118.  
  119.  
  120. }
  121.  
  122. function comparetd(thetd) {
  123. for (i=0; i<alltds.length; i++) {
  124. if (alltds[i]==thetd) {
  125. return i;
  126. }
  127. }
  128. }
  129. function findallmoves(wob) {
  130. if (wob==true) {
  131. allwhitemoves = [];
  132. for (i=0; i<64; i++) {
  133. if (pieces[1][i]==true) {
  134. findmoves(i,false)
  135. for (j=0; j<moves.length; j++) {
  136. if (pieces[0][moves[j]]=="K" && pieces[1][moves[j]]==false) {
  137. blackincheck=true;
  138. // alert("Black King in Check"+j);
  139. }
  140. }
  141. allwhitemoves[allwhitemoves.length]=moves;
  142. }
  143. }
  144.  
  145. }
  146. if (wob==false) {
  147. allblackmoves= [];
  148. for (i=0; i<64; i++) {
  149. if (pieces[1][i]==false) {
  150. findmoves(i,false)
  151. for (j=0; j<moves.length; j++) {
  152. if (pieces[0][moves[j]]=="K" && pieces[1][moves[j]]==true) {
  153. whiteincheck=true;
  154. // alert("White King in Check"+j);
  155. }
  156. }
  157. allblackmoves[allblackmoves.length]=moves;
  158. }
  159. }
  160. }
  161. }
  162. function findmoves(u,check) {
  163. moves = [];
  164. // pawn first move black
  165. if (pieces[0][u]=="p" && pieces[2][u]==true && pieces[1][u]==false) {
  166. if (pieces[0][u+8]=="") {
  167. moves[moves.length]=u+8;
  168. }
  169. if (pieces[0][u+16]=="" && pieces[0][u+8]=="") {
  170. moves[moves.length]=u+16;
  171. }
  172. if (pieces[0][u+7]!="" && u%8!=0 && pieces[1][u+7]==true) {
  173. moves[moves.length]=u+7
  174. }
  175. if (pieces[0][u+9]!="" && (u+1)%8!=0 && pieces[1][u+9]==true) {
  176. moves[moves.length]=u+9
  177. }
  178. }
  179. // pawn first move white
  180. if (pieces[0][u]=="p" && pieces[2][u]==true && pieces[1][u]==true) {
  181. if (pieces[0][u-8]=="") {
  182. moves[moves.length]=u-8;
  183. }
  184. if (pieces[0][u-16]=="" && pieces[0][u-8]=="") {
  185. moves[moves.length]=u-16;
  186. }
  187. if (pieces[0][u-7]!="" && (u+1)%8!=0 && pieces[1][u-7]==false) {
  188. moves[moves.length]=u-7
  189. }
  190. if (pieces[0][u-9]!="" && u%8!=0 && pieces[1][u-9]==false) {
  191. moves[moves.length]=u-9
  192. }
  193. }
  194. // black pawn movement after first move
  195. if (pieces[0][u]=="p" && pieces[2][u]==false && pieces[1][u]==false) {
  196. if (pieces[0][u+8]=="") {
  197. moves[moves.length]=u+8;
  198. }
  199. if (pieces[0][u+7]!="" && u%8!=0 && pieces[1][u+7]==true) {
  200. moves[moves.length]=u+7
  201. }
  202. if (pieces[0][u+9]!="" && (u+1)%8!=0 && pieces[1][u+9]==true) {
  203. moves[moves.length]=u+9
  204. }
  205. }
  206. // white pawn movement after first move
  207. if (pieces[0][u]=="p" && pieces[2][u]==false && pieces[1][u]==true) {
  208. if (pieces[0][u-8]=="") {
  209. moves[moves.length]=u-8;
  210. }
  211. if (pieces[0][u-7]!="" && (u+1)%8!=0 && pieces[1][u-7]==false) {
  212. moves[moves.length]=u-7
  213. }
  214. if (pieces[0][u-9]!="" && u%8!=0 && pieces[1][u-9]==false) {
  215. moves[moves.length]=u-9
  216. }
  217. }
  218. // white rook movement
  219. if (pieces[0][u]=="r" && pieces[1][u]==true) {
  220. // white rook vertical movement
  221. // white rook movement down
  222. for (rook=8; rook<=63; rook+=8) {
  223. if (pieces[0][u+rook]=="") {
  224. moves[moves.length]=u+rook;
  225. }
  226. if (pieces[0][u+rook]!="") {
  227. if (pieces[1][u+rook]==false) {
  228. moves[moves.length]=u+rook;
  229. }
  230. break;
  231. }
  232.  
  233. }
  234. //white rook movement up
  235. for (rook=8; rook<=63; rook+=8) {
  236. if (pieces[0][u-rook]=="") {
  237. moves[moves.length]=u-rook;
  238. }
  239. if (pieces[0][u-rook]!="") {
  240. if (pieces[1][u-rook]==false) {
  241. moves[moves.length]=u-rook;
  242. }
  243. break;
  244. }
  245.  
  246. }
  247. // white rook horizontal movement
  248. // white rook moving to the right
  249. for (rook=u+1; rook<u+8; rook++) {
  250. if ((u+1)%8==0) {
  251. break;
  252. }
  253. if ((rook+1)%8==0) {
  254. if (pieces[0][rook]=="") {
  255. moves[moves.length]=rook
  256. }
  257. if (pieces[0][rook]!="") {
  258. if (pieces[1][rook]==false) {
  259. moves[moves.length]=rook;
  260. }
  261. }
  262.  
  263. break;
  264. }
  265.  
  266. if (pieces[0][rook]!="") {
  267. if (pieces[1][rook]==false) {
  268. moves[moves.length]=rook;
  269. }
  270. // alert(rook+","+u);
  271. break;
  272. }
  273. moves[moves.length]=rook;
  274. }
  275. // white rook moving to the left
  276. for (rook=u-1; rook>u-8; rook--) {
  277. if (u%8==0) {
  278. break;
  279. }
  280. if ((rook)%8==0) {
  281. if (pieces[0][rook]=="") {
  282. moves[moves.length]=rook
  283. }
  284. if (pieces[0][rook]!="") {
  285. if (pieces[1][rook]==false) {
  286. moves[moves.length]=rook;
  287. }
  288. }
  289.  
  290. break;
  291. }
  292.  
  293. if (pieces[0][rook]!="") {
  294. if (pieces[1][rook]==false) {
  295. moves[moves.length]=rook;
  296. }
  297. // alert(rook+","+u);
  298. break;
  299. }
  300. moves[moves.length]=rook;
  301. }
  302.  
  303. }
  304.  
  305. // black rook movement
  306. if (pieces[0][u]=="r" && pieces[1][u]==false) {
  307.  
  308. // black rook vertical movement
  309. // black rook movement down
  310. for (rook=8; rook<=63; rook+=8) {
  311. if (pieces[0][u+rook]=="") {
  312. moves[moves.length]=u+rook;
  313. }
  314. if (pieces[0][u+rook]!="") {
  315. if (pieces[1][u+rook]==true) {
  316. moves[moves.length]=u+rook;
  317. }
  318. break;
  319. }
  320.  
  321. }
  322. //black rook movement up
  323. for (rook=8; rook<=63; rook+=8) {
  324. if (pieces[0][u-rook]=="") {
  325. moves[moves.length]=u-rook;
  326. }
  327. if (pieces[0][u-rook]!="") {
  328. if (pieces[1][u-rook]==true) {
  329. moves[moves.length]=u-rook;
  330. }
  331. break;
  332. }
  333.  
  334. }
  335. // black rook horizontal movement
  336. // black rook moving to the right
  337. for (rook=u+1; rook<u+8; rook++) {
  338. if ((u+1)%8==0) {
  339. break;
  340. }
  341. if ((rook+1)%8==0) {
  342. if (pieces[0][rook]=="") {
  343. moves[moves.length]=rook
  344. }
  345. if (pieces[0][rook]!="") {
  346. if (pieces[1][rook]==true) {
  347. moves[moves.length]=rook;
  348. }
  349. }
  350.  
  351. break;
  352. }
  353.  
  354. if (pieces[0][rook]!="") {
  355. if (pieces[1][rook]==true) {
  356. moves[moves.length]=rook;
  357. }
  358. // alert(rook+","+u);
  359. break;
  360. }
  361. moves[moves.length]=rook;
  362. }
  363. // black rook moving to the left
  364. for (rook=u-1; rook>u-8; rook--) {
  365. if (u%8==0) {
  366. break;
  367. }
  368. if ((rook)%8==0) {
  369. if (pieces[0][rook]=="") {
  370. moves[moves.length]=rook
  371. }
  372. if (pieces[0][rook]!="") {
  373. if (pieces[1][rook]==true) {
  374. moves[moves.length]=rook;
  375. }
  376. }
  377.  
  378. break;
  379. }
  380.  
  381. if (pieces[0][rook]!="") {
  382. if (pieces[1][rook]==true) {
  383. moves[moves.length]=rook;
  384. }
  385. // alert(rook+","+u);
  386. break;
  387. }
  388. moves[moves.length]=rook;
  389. }
  390. }
  391. // white bishop movement
  392. if (pieces[0][u]=="b" && pieces[1][u]==true) {
  393.  
  394. // white bishop right-down movement
  395. for (bishop=1; (u+(bishop*8)+bishop)%8!=0; bishop++) {
  396. if (pieces[0][u+(bishop*8)+bishop]!="") {
  397. if (pieces[1][u+(bishop*8)+bishop]==false) {
  398. moves[moves.length]=u+(bishop*8)+bishop;
  399. }
  400. break;
  401. }
  402. moves[moves.length]=u+(bishop*8)+bishop;
  403. }
  404.  
  405. //white bishop right-up movement
  406. for (bishop=1; (u-(bishop*8)+bishop)%8!=0; bishop++) {
  407. if (pieces[0][u-(bishop*8)+bishop]!="") {
  408. if (pieces[1][u-(bishop*8)+bishop]==false) {
  409. moves[moves.length]=u-(bishop*8)+bishop;
  410. }
  411. break;
  412. }
  413. moves[moves.length]=u-(bishop*8)+bishop;
  414. }
  415.  
  416. //white bishop left-down movement
  417. for (bishop=1; (u+(bishop*8)-bishop+1)%8!=0; bishop++) {
  418. if (pieces[0][u+(bishop*8)-bishop]!="") {
  419. if (pieces[1][u+(bishop*8)-bishop]==false) {
  420. moves[moves.length]=u+(bishop*8)-bishop;
  421. }
  422. break;
  423. }
  424. moves[moves.length]=u+(bishop*8)-bishop;
  425. }
  426.  
  427. //white bishop left-up movement
  428. for (bishop=1; (u-(bishop*8)-bishop+1)%8!=0; bishop++) {
  429. if (pieces[0][u-(bishop*8)-bishop]!="") {
  430. if (pieces[1][u-(bishop*8)-bishop]==false) {
  431. moves[moves.length]=u-(bishop*8)-bishop;
  432. }
  433. break;
  434. }
  435. moves[moves.length]=u-(bishop*8)-bishop;
  436. }
  437.  
  438.  
  439. }
  440.  
  441. // black bishop movement
  442. if (pieces[0][u]=="b" && pieces[1][u]==false) {
  443.  
  444. // black bishop right-down movement
  445. for (bishop=1; (u+(bishop*8)+bishop)%8!=0; bishop++) {
  446. if (pieces[0][u+(bishop*8)+bishop]!="") {
  447. if (pieces[1][u+(bishop*8)+bishop]==true) {
  448. moves[moves.length]=u+(bishop*8)+bishop;
  449. }
  450. break;
  451. }
  452. moves[moves.length]=u+(bishop*8)+bishop;
  453. }
  454.  
  455. //black bishop right-up movement
  456. for (bishop=1; (u-(bishop*8)+bishop)%8!=0; bishop++) {
  457. if (pieces[0][u-(bishop*8)+bishop]!="") {
  458. if (pieces[1][u-(bishop*8)+bishop]==true) {
  459. moves[moves.length]=u-(bishop*8)+bishop;
  460. }
  461. break;
  462. }
  463. moves[moves.length]=u-(bishop*8)+bishop;
  464. }
  465.  
  466. //black bishop left-down movement
  467. for (bishop=1; (u+(bishop*8)-bishop+1)%8!=0; bishop++) {
  468. if (pieces[0][u+(bishop*8)-bishop]!="") {
  469. if (pieces[1][u+(bishop*8)-bishop]==true) {
  470. moves[moves.length]=u+(bishop*8)-bishop;
  471. }
  472. break;
  473. }
  474. moves[moves.length]=u+(bishop*8)-bishop;
  475. }
  476.  
  477. //black bishop left-up movement
  478. for (bishop=1; (u-(bishop*8)-bishop+1)%8!=0; bishop++) {
  479. if (pieces[0][u-(bishop*8)-bishop]!="") {
  480. if (pieces[1][u-(bishop*8)-bishop]==true) {
  481. moves[moves.length]=u-(bishop*8)-bishop;
  482. }
  483. break;
  484. }
  485. moves[moves.length]=u-(bishop*8)-bishop;
  486. }
  487.  
  488.  
  489. }
  490.  
  491. //white queen movement
  492. if (pieces[0][u]=="q" && pieces[1][u]==true) {
  493.  
  494. // white queen right-down movement
  495. for (queen=1; (u+(queen*8)+queen)%8!=0; queen++) {
  496. if (pieces[0][u+(queen*8)+queen]!="") {
  497. if (pieces[1][u+(queen*8)+queen]==false) {
  498. moves[moves.length]=u+(queen*8)+queen;
  499. }
  500. break;
  501. }
  502. moves[moves.length]=u+(queen*8)+queen;
  503. }
  504.  
  505. //white queen right-up movement
  506. for (queen=1; (u-(queen*8)+queen)%8!=0; queen++) {
  507. if (pieces[0][u-(queen*8)+queen]!="") {
  508. if (pieces[1][u-(queen*8)+queen]==false) {
  509. moves[moves.length]=u-(queen*8)+queen;
  510. }
  511. break;
  512. }
  513. moves[moves.length]=u-(queen*8)+queen;
  514. }
  515.  
  516. //white queen left-down movement
  517. for (queen=1; (u+(queen*8)-queen+1)%8!=0; queen++) {
  518. if (pieces[0][u+(queen*8)-queen]!="") {
  519. if (pieces[1][u+(queen*8)-queen]==false) {
  520. moves[moves.length]=u+(queen*8)-queen;
  521. }
  522. break;
  523. }
  524. moves[moves.length]=u+(queen*8)-queen;
  525. }
  526.  
  527. //white queen left-up movement
  528. for (queen=1; (u-(queen*8)-queen+1)%8!=0; queen++) {
  529. if (pieces[0][u-(queen*8)-queen]!="") {
  530. if (pieces[1][u-(queen*8)-queen]==false) {
  531. moves[moves.length]=u-(queen*8)-queen;
  532. }
  533. break;
  534. }
  535. moves[moves.length]=u-(queen*8)-queen;
  536. }
  537.  
  538. // white queen vertical movement
  539. // white queen movement down
  540. for (queen=8; queen<=63; queen+=8) {
  541. if (pieces[0][u+queen]=="") {
  542. moves[moves.length]=u+queen;
  543. }
  544. if (pieces[0][u+queen]!="") {
  545. if (pieces[1][u+queen]==false) {
  546. moves[moves.length]=u+queen;
  547. }
  548. break;
  549. }
  550.  
  551. }
  552. //white queen movement up
  553. for (queen=8; queen<=63; queen+=8) {
  554. if (pieces[0][u-queen]=="") {
  555. moves[moves.length]=u-queen;
  556. }
  557. if (pieces[0][u-queen]!="") {
  558. if (pieces[1][u-queen]==false) {
  559. moves[moves.length]=u-queen;
  560. }
  561. break;
  562. }
  563.  
  564. }
  565. // white queen horizontal movement
  566. // white queen moving to the right
  567. for (queen=u+1; queen<u+8; queen++) {
  568. if ((u+1)%8==0) {
  569. break;
  570. }
  571. if ((queen+1)%8==0) {
  572. if (pieces[0][queen]=="") {
  573. moves[moves.length]=queen
  574. }
  575. if (pieces[0][queen]!="") {
  576. if (pieces[1][queen]==false) {
  577. moves[moves.length]=queen;
  578. }
  579. }
  580.  
  581. break;
  582. }
  583.  
  584. if (pieces[0][queen]!="") {
  585. if (pieces[1][queen]==false) {
  586. moves[moves.length]=queen;
  587. }
  588. // alert(queen+","+u);
  589. break;
  590. }
  591. moves[moves.length]=queen;
  592. }
  593. // white queen moving to the left
  594. for (queen=u-1; queen>u-8; queen--) {
  595. if (u%8==0) {
  596. break;
  597. }
  598. if ((queen)%8==0) {
  599. if (pieces[0][queen]=="") {
  600. moves[moves.length]=queen
  601. }
  602. if (pieces[0][queen]!="") {
  603. if (pieces[1][queen]==false) {
  604. moves[moves.length]=queen;
  605. }
  606. }
  607.  
  608. break;
  609. }
  610.  
  611. if (pieces[0][queen]!="") {
  612. if (pieces[1][queen]==false) {
  613. moves[moves.length]=queen;
  614. }
  615. // alert(queen+","+u);
  616. break;
  617. }
  618. moves[moves.length]=queen;
  619. }
  620. }
  621.  
  622. //black queen movement
  623. if (pieces[0][u]=="q" && pieces[1][u]==false) {
  624.  
  625. // black queen right-down movement
  626. for (queen=1; (u+(queen*8)+queen)%8!=0; queen++) {
  627. if (pieces[0][u+(queen*8)+queen]!="") {
  628. if (pieces[1][u+(queen*8)+queen]==true) {
  629. moves[moves.length]=u+(queen*8)+queen;
  630. }
  631. break;
  632. }
  633. moves[moves.length]=u+(queen*8)+queen;
  634. }
  635.  
  636. //black queen right-up movement
  637. for (queen=1; (u-(queen*8)+queen)%8!=0; queen++) {
  638. if (pieces[0][u-(queen*8)+queen]!="") {
  639. if (pieces[1][u-(queen*8)+queen]==true) {
  640. moves[moves.length]=u-(queen*8)+queen;
  641. }
  642. break;
  643. }
  644. moves[moves.length]=u-(queen*8)+queen;
  645. }
  646.  
  647. //black queen left-down movement
  648. for (queen=1; (u+(queen*8)-queen+1)%8!=0; queen++) {
  649. if (pieces[0][u+(queen*8)-queen]!="") {
  650. if (pieces[1][u+(queen*8)-queen]==true) {
  651. moves[moves.length]=u+(queen*8)-queen;
  652. }
  653. break;
  654. }
  655. moves[moves.length]=u+(queen*8)-queen;
  656. }
  657.  
  658. //black queen left-up movement
  659. for (queen=1; (u-(queen*8)-queen+1)%8!=0; queen++) {
  660. if (pieces[0][u-(queen*8)-queen]!="") {
  661. if (pieces[1][u-(queen*8)-queen]==true) {
  662. moves[moves.length]=u-(queen*8)-queen;
  663. }
  664. break;
  665. }
  666. moves[moves.length]=u-(queen*8)-queen;
  667. }
  668.  
  669. // black queen vertical movement
  670. // black queen movement down
  671. for (queen=8; queen<=63; queen+=8) {
  672. if (pieces[0][u+queen]=="") {
  673. moves[moves.length]=u+queen;
  674. }
  675. if (pieces[0][u+queen]!="") {
  676. if (pieces[1][u+queen]==true) {
  677. moves[moves.length]=u+queen;
  678. }
  679. break;
  680. }
  681.  
  682. }
  683. //black queen movement up
  684. for (queen=8; queen<=63; queen+=8) {
  685. if (pieces[0][u-queen]=="") {
  686. moves[moves.length]=u-queen;
  687. }
  688. if (pieces[0][u-queen]!="") {
  689. if (pieces[1][u-queen]==true) {
  690. moves[moves.length]=u-queen;
  691. }
  692. break;
  693. }
  694.  
  695. }
  696. // black queen horizontal movement
  697. // black queen moving to the right
  698. for (queen=u+1; queen<u+8; queen++) {
  699. if ((u+1)%8==0) {
  700. break;
  701. }
  702. if ((queen+1)%8==0) {
  703. if (pieces[0][queen]=="") {
  704. moves[moves.length]=queen
  705. }
  706. if (pieces[0][queen]!="") {
  707. if (pieces[1][queen]==true) {
  708. moves[moves.length]=queen;
  709. }
  710. }
  711.  
  712. break;
  713. }
  714.  
  715. if (pieces[0][queen]!="") {
  716. if (pieces[1][queen]==true) {
  717. moves[moves.length]=queen;
  718. }
  719. // alert(queen+","+u);
  720. break;
  721. }
  722. moves[moves.length]=queen;
  723. }
  724. // black queen moving to the left
  725. for (queen=u-1; queen>u-8; queen--) {
  726. if (u%8==0) {
  727. break;
  728. }
  729. if ((queen)%8==0) {
  730. if (pieces[0][queen]=="") {
  731. moves[moves.length]=queen
  732. }
  733. if (pieces[0][queen]!="") {
  734. if (pieces[1][queen]==true) {
  735. moves[moves.length]=queen;
  736. }
  737. }
  738.  
  739. break;
  740. }
  741.  
  742. if (pieces[0][queen]!="") {
  743. if (pieces[1][queen]==true) {
  744. moves[moves.length]=queen;
  745. }
  746. // alert(queen+","+u);
  747. break;
  748. }
  749. moves[moves.length]=queen;
  750. }
  751. }
  752. // White Knight movement
  753. if (pieces[0][u]=="n" && pieces[1][u]==true) {
  754.  
  755. if ((u+1)%8!=0 && u>15) {
  756. if (pieces[0][u-15]=="") {
  757. moves[moves.length]=u-15;
  758. }
  759. if (pieces[1][u-15]==false) {
  760. moves[moves.length]=u-15;
  761. }
  762. }
  763. if ((u+1)%8!=0 && u<47) {
  764. if (pieces[0][u+17]=="") {
  765. moves[moves.length]=u+17;
  766. }
  767. if (pieces[1][u+17]==false) {
  768. moves[moves.length]=u+17;
  769. }
  770. }
  771.  
  772. if ((u)%8!=0 && u>15) {
  773. if (pieces[0][u-17]=="") {
  774. moves[moves.length]=u-17;
  775. }
  776. if (pieces[1][u-17]==false) {
  777. moves[moves.length]=u-17;
  778. }
  779. }
  780. if ((u)%8!=0 && u<47) {
  781. if (pieces[0][u+15]=="") {
  782. moves[moves.length]=u+15;
  783. }
  784. if (pieces[1][u+15]==false) {
  785. moves[moves.length]=u+15;
  786. }
  787. }
  788.  
  789. if ((u+1)%8!=0 && (u+2)%8!=0) {
  790. if (pieces[0][u-6]=="") {
  791. moves[moves.length]=u-6;
  792. }
  793. if (pieces[1][u-6]==false) {
  794. moves[moves.length]=u-6;
  795. }
  796. }
  797. if ((u+1)%8!=0 && (u+2)%8!=0) {
  798. if (pieces[0][u+10]=="") {
  799. moves[moves.length]=u+10;
  800. }
  801. if (pieces[1][u+10]==false) {
  802. moves[moves.length]=u+10;
  803. }
  804. }
  805.  
  806. if ((u)%8!=0 && (u-1)%8!=0) {
  807. if (pieces[0][u+6]=="") {
  808. moves[moves.length]=u+6;
  809. }
  810. if (pieces[1][u+6]==false) {
  811. moves[moves.length]=u+6;
  812. }
  813. }
  814. if ((u)%8!=0 && (u-1)%8!=0) {
  815. if (pieces[0][u-10]=="") {
  816. moves[moves.length]=u-10;
  817. }
  818. if (pieces[1][u-10]==false) {
  819. moves[moves.length]=u-10;
  820. }
  821. }
  822. }
  823. // Black Knight movement
  824. if (pieces[0][u]=="n" && pieces[1][u]==false) {
  825.  
  826. if ((u+1)%8!=0 && u>15) {
  827. if (pieces[0][u-15]=="") {
  828. moves[moves.length]=u-15;
  829. }
  830. if (pieces[1][u-15]==true) {
  831. moves[moves.length]=u-15;
  832. }
  833. }
  834. if ((u+1)%8!=0 && u<47) {
  835. if (pieces[0][u+17]=="") {
  836. moves[moves.length]=u+17;
  837. }
  838. if (pieces[1][u+17]==true) {
  839. moves[moves.length]=u+17;
  840. }
  841. }
  842.  
  843. if ((u)%8!=0 && u>15) {
  844. if (pieces[0][u-17]=="") {
  845. moves[moves.length]=u-17;
  846. }
  847. if (pieces[1][u-17]==true) {
  848. moves[moves.length]=u-17;
  849. }
  850. }
  851. if ((u)%8!=0 && u<47) {
  852. if (pieces[0][u+15]=="") {
  853. moves[moves.length]=u+15;
  854. }
  855. if (pieces[1][u+15]==true) {
  856. moves[moves.length]=u+15;
  857. }
  858. }
  859.  
  860. if ((u+1)%8!=0 && (u+2)%8!=0) {
  861. if (pieces[0][u-6]=="") {
  862. moves[moves.length]=u-6;
  863. }
  864. if (pieces[1][u-6]==true) {
  865. moves[moves.length]=u-6;
  866. }
  867. }
  868. if ((u+1)%8!=0 && (u+2)%8!=0) {
  869. if (pieces[0][u+10]=="") {
  870. moves[moves.length]=u+10;
  871. }
  872. if (pieces[1][u+10]==true) {
  873. moves[moves.length]=u+10;
  874. }
  875. }
  876.  
  877. if ((u)%8!=0 && (u-1)%8!=0) {
  878. if (pieces[0][u+6]=="") {
  879. moves[moves.length]=u+6;
  880. }
  881. if (pieces[1][u+6]==true) {
  882. moves[moves.length]=u+6;
  883. }
  884. }
  885. if ((u)%8!=0 && (u-1)%8!=0) {
  886. if (pieces[0][u-10]=="") {
  887. moves[moves.length]=u-10;
  888. }
  889. if (pieces[1][u-10]==true) {
  890. moves[moves.length]=u-10;
  891. }
  892. }
  893. }
  894.  
  895. // White kings moves
  896.  
  897. if (pieces[0][u]=="K" && pieces[1][u]==true) {
  898. if ((u+1)%8!=0) {
  899. if (pieces[0][u+1]=="") {
  900. moves[moves.length]=u+1;
  901. }
  902. if (pieces[1][u+1]==false) {
  903. moves[moves.length]=u+1;
  904. }
  905. if (pieces[0][u-7]=="") {
  906. moves[moves.length]=u-7;
  907. }
  908. if (pieces[1][u-7]==false) {
  909. moves[moves.length]=u-7;
  910. }
  911. if (pieces[0][u+9]=="") {
  912. moves[moves.length]=u+9;
  913. }
  914. if (pieces[1][u+9]==false) {
  915. moves[moves.length]=u+9;
  916. }
  917. }
  918. if (u%8!=0) {
  919. if (pieces[0][u-9]=="") {
  920. moves[moves.length]=u-9;
  921. }
  922. if (pieces[1][u-9]==false) {
  923. moves[moves.length]=u-9;
  924. }
  925. if (pieces[0][u-1]=="") {
  926. moves[moves.length]=u-1;
  927. }
  928. if (pieces[1][u-1]==false) {
  929. moves[moves.length]=u-1;
  930. }
  931. if (pieces[0][u+7]=="") {
  932. moves[moves.length]=u+7;
  933. }
  934. if (pieces[1][u+7]==false) {
  935. moves[moves.length]=u+7;
  936. }
  937. }
  938.  
  939. if (u>7) {
  940. if (pieces[0][u-8]=="") {
  941. moves[moves.length]=u-8;
  942. }
  943. if (pieces[1][u-8]==false) {
  944. moves[moves.length]=u-8;
  945. }
  946. }
  947.  
  948. if (u<56) {
  949. if (pieces[0][u+8]=="") {
  950. moves[moves.length]=u+8;
  951. }
  952. if (pieces[1][u+8]==false) {
  953. moves[moves.length]=u+8;
  954. }
  955. }
  956. }
  957.  
  958. // Black kings moves
  959.  
  960. if (pieces[0][u]=="K" && pieces[1][u]==false) {
  961. if ((u+1)%8!=0) {
  962. if (pieces[0][u+1]=="") {
  963. moves[moves.length]=u+1;
  964. }
  965. if (pieces[1][u+1]==true) {
  966. moves[moves.length]=u+1;
  967. }
  968. if (pieces[0][u-7]=="") {
  969. moves[moves.length]=u-7;
  970. }
  971. if (pieces[1][u-7]==true) {
  972. moves[moves.length]=u-7;
  973. }
  974. if (pieces[0][u+9]=="") {
  975. moves[moves.length]=u+9;
  976. }
  977. if (pieces[1][u+9]==true) {
  978. moves[moves.length]=u+9;
  979. }
  980. }
  981. if (u%8!=0) {
  982. if (pieces[0][u-9]=="") {
  983. moves[moves.length]=u-9;
  984. }
  985. if (pieces[1][u-9]==true) {
  986. moves[moves.length]=u-9;
  987. }
  988. if (pieces[0][u-1]=="") {
  989. moves[moves.length]=u-1;
  990. }
  991. if (pieces[1][u-1]==true) {
  992. moves[moves.length]=u-1;
  993. }
  994. if (pieces[0][u+7]=="") {
  995. moves[moves.length]=u+7;
  996. }
  997. if (pieces[1][u+7]==true) {
  998. moves[moves.length]=u+7;
  999. }
  1000. }
  1001.  
  1002. if (u>7) {
  1003. if (pieces[0][u-8]=="") {
  1004. moves[moves.length]=u-8;
  1005. }
  1006. if (pieces[1][u-8]==true) {
  1007. moves[moves.length]=u-8;
  1008. }
  1009. }
  1010.  
  1011. if (u<56) {
  1012. if (pieces[0][u+8]=="") {
  1013. moves[moves.length]=u+8;
  1014. }
  1015. if (pieces[1][u+8]==true) {
  1016. moves[moves.length]=u+8;
  1017. }
  1018. }
  1019. }
  1020.  
  1021. /*
  1022. if (u%8==0) {
  1023. for (rook=u+1; rook<u+8; rook++) {
  1024.  
  1025. if (pieces[0][rook]=="") {
  1026. moves[moves.length]=rook
  1027. }
  1028. if (pieces[0][rook]!="") {
  1029. if (pieces[1][rook]==false) {
  1030. moves[moves.length]=rook
  1031. }
  1032. break;
  1033. }
  1034. }
  1035. }
  1036. if ((u+1)%8==0) {
  1037. for (rook=u-1; rook>u-8; rook--) {
  1038.  
  1039. if (pieces[0][rook]=="") {
  1040. moves[moves.length]=rook
  1041. }
  1042. if (pieces[0][rook]!="") {
  1043. if (pieces[1][rook]==false) {
  1044. moves[moves.length]=rook
  1045. }
  1046. break;
  1047. }
  1048. }
  1049. }
  1050. */
  1051. /*
  1052. for (rook=0; pieces[0][u+rook]==""; rook++) {
  1053. if (u+rook
  1054. */
  1055.  
  1056.  
  1057.  
  1058. // moves cannot extend past board
  1059. for (t=0; t<moves.length; t++) {
  1060. if (moves[t]>63) {
  1061. moves[t]=undefined;
  1062. }
  1063. if (moves[t]<0) {
  1064. moves[t]=undefined;
  1065. }
  1066. }
  1067. /*
  1068. //check for white in check
  1069. if (turn==false && check==true) {
  1070. for (j=0; j<moves.length; j++) {
  1071. if (pieces[0][moves[j]]=="K" && pieces[1][moves[j]]==true) {
  1072. whiteincheck=true;
  1073. // alert("whiteincheck");
  1074. }
  1075.  
  1076. }
  1077. }
  1078.  
  1079. //check for black in check
  1080. if (turn==true && check==true) {
  1081. for (j=0; j<moves.length; j++) {
  1082. if (pieces[0][moves[j]]=="K" && pieces[1][moves[j]]==false) {
  1083. blackincheck=true;
  1084. // alert("blackincheck");
  1085. }
  1086. }
  1087. }
  1088. */
  1089.  
  1090.  
  1091. }
  1092.  
  1093. function movepiece(start,stop) {
  1094. pieces[0][stop]=pieces[0][start];
  1095. pieces[1][stop]=pieces[1][start];
  1096. pieces[2][stop]=pieces[2][start];
  1097. pieces[2][stop]=false;
  1098. pieces[0][start]=""
  1099. pieces[1][start]=null;
  1100. pieces[2][start]=null;
  1101. if (pieces[0][stop]=="p" && pieces[1][stop]==true && stop>=0 && stop<=7) {
  1102. pieces[0][stop]="q";
  1103. }
  1104. if (pieces[0][stop]=="p" && pieces[1][stop]==false && stop>=56 && stop<=63) {
  1105. pieces[0][stop]="q";
  1106. }
  1107. findallmoves(true);
  1108. findallmoves(false);
  1109. findmoves(stop,true);
  1110. if (whiteincheck) {
  1111.  
  1112. }
  1113. for (r=0; r<moves.length; r++) {
  1114.  
  1115.  
  1116. alltds[moves[r]].removeEventListener("click",listener2);
  1117.  
  1118. }
  1119. // alert(stop);
  1120. // alert(start);
  1121. }
  1122.  
  1123. function updateboard() {
  1124. iswitch=true;
  1125. for (i=0; i<alltds.length; i++) {
  1126. alltds[i].innerHTML="";
  1127. if (pieces[1][i]==false) {
  1128. piecespan = document.createElement("img");
  1129. /*
  1130. piecespan = document.createElement("span");
  1131. piecespan.style.color="#000000";
  1132. piecespan.innerHTML=pieces[0][i];
  1133. */
  1134. piecespan.setAttribute("src","b"+pieces[0][i]+".png");
  1135. alltds[i].appendChild(piecespan);
  1136.  
  1137. // alltds[i].innerHTML='<span style="color:#000000;">'+pieces[0][i]+'</span>';
  1138. }
  1139. if (pieces[1][i]==true) {
  1140. piecespan = document.createElement("img");
  1141. /*
  1142. piecespan = document.createElement("span");
  1143. piecespan.style.color="#ffffff";
  1144. piecespan.innerHTML=pieces[0][i];
  1145. */
  1146. piecespan.setAttribute("src","w"+pieces[0][i]+".png");
  1147. alltds[i].appendChild(piecespan);
  1148. // alltds[i].innerHTML='<span style="color:#ffffff;">'+pieces[0][i]+'</span>';
  1149. }
  1150. if (i%8==0) {
  1151. iswitch=!iswitch
  1152. // alert(iswitch);
  1153. }
  1154. if (!iswitch) {
  1155. if (i%2 == 0) {
  1156. alltds[i].style.background="#aaaaaa";
  1157. }
  1158. if (i%2 == 1) {
  1159. alltds[i].style.background="#666666";
  1160. // alltds[i].style.color="#ffffff";
  1161. }
  1162. }
  1163.  
  1164. if (iswitch) {
  1165. if (i%2 == 1) {
  1166. alltds[i].style.background="#aaaaaa";
  1167. }
  1168. if (i%2 == 0) {
  1169. alltds[i].style.background="#666666";
  1170. // alltds[i].style.color="#ffffff";
  1171. }
  1172. }
  1173. alltds[i].removeEventListener("click",listener1);
  1174. alltds[i].removeEventListener("click",listener2);
  1175. alltds[i].removeEventListener("click",cancelmove);
  1176.  
  1177. if (pieces[0][i]!=="" && pieces[1][i]==false && turn==true) {
  1178. alltds[i].addEventListener("click",listener1);
  1179. }
  1180. if (pieces[0][i]!=="" && pieces[1][i]==true && turn==false) {
  1181. alltds[i].addEventListener("click",listener1);
  1182. }
  1183. }
  1184. turn=!turn
  1185. if (turn) {
  1186. infoh3.style.backgroundColor="#ffffff";
  1187. infoh3.style.color="#000000";
  1188. infoh3.innerHTML="White's Turn";
  1189. if (whiteincheck) {
  1190. infoh3.innerHTML+=", White in check";
  1191. }
  1192. }
  1193. if (!turn) {
  1194. infoh3.style.backgroundColor="#000000";
  1195. infoh3.style.color="#ffffff";
  1196. infoh3.innerHTML="Black's Turn";
  1197. if (blackincheck) {
  1198. infoh3.innerHTML+=", Black in check";
  1199. }
  1200. }
  1201. }
  1202.  
  1203. function listener1(event) {
  1204.  
  1205. if (comparetd(event.currentTarget)!=null) {
  1206. // alert(pieces[0][comparetd(event.currentTarget)]+","+comparetd(event.currentTarget));
  1207. }
  1208. selectedpiece=event.currentTarget;
  1209. findmoves(comparetd(event.currentTarget));
  1210. // to do: make it so only one piece can be selected at a time
  1211. if (moves.length>0) {
  1212. selectedpiece.removeEventListener("click",listener1);
  1213. for (h=0; h<64; h++) {
  1214. alltds[h].removeEventListener("click",listener1);
  1215. }
  1216. selectedpiece.addEventListener("click",cancelmove);
  1217.  
  1218. for (r=0; r<moves.length; r++) {
  1219. if (moves[r]>=0 && moves[r]<64) {
  1220. alltds[moves[r]].style.background="linear-gradient(-135deg,#6666ff,#000055)";
  1221. alltds[moves[r]].addEventListener("click",listener2);
  1222. }
  1223.  
  1224. }
  1225. }
  1226. }
  1227.  
  1228. function listener2(event) {
  1229.  
  1230. movepiece(comparetd(selectedpiece),comparetd(event.currentTarget));
  1231. updateboard();
  1232. }
  1233. function cancelmove(event) {
  1234.  
  1235. for (r=0; r<moves.length; r++) {
  1236. if (moves[r]>=0 && moves[r]<64) {
  1237. alltds[moves[r]].removeEventListener("click",listener2);
  1238. }
  1239.  
  1240. }
  1241. iswitch=true
  1242. for (i=0; i<alltds.length; i++) {
  1243. if (i%8==0) {
  1244. iswitch=!iswitch
  1245. // alert(iswitch);
  1246. }
  1247. if (!iswitch) {
  1248. if (i%2 == 0) {
  1249. alltds[i].style.background="#aaaaaa";
  1250. }
  1251. if (i%2 == 1) {
  1252. alltds[i].style.background="#666666";
  1253. // alltds[i].style.color="#ffffff";
  1254. }
  1255. }
  1256.  
  1257. if (iswitch) {
  1258. if (i%2 == 1) {
  1259. alltds[i].style.background="#aaaaaa";
  1260. }
  1261. if (i%2 == 0) {
  1262. alltds[i].style.background="#666666";
  1263. // alltds[i].style.color="#ffffff";
  1264. }
  1265. }
  1266. }
  1267. event.currentTarget.removeEventListener("click",cancelmove);
  1268. for (h=0; h<64; h++) {
  1269. if (turn==true && pieces[0][h]!="" && pieces[1][h]==true) {
  1270. alltds[h].addEventListener("click",listener1);
  1271. }
  1272. if (turn==false && pieces[0][h]!="" && pieces[1][h]==false) {
  1273. alltds[h].addEventListener("click",listener1);
  1274. }
  1275.  
  1276. }
  1277.  
  1278. }
  1279. </script>
  1280. <style type="text/css">
  1281. html {
  1282.  
  1283. }
  1284. body {
  1285. background:linear-gradient(45deg,#444444,#aaaaaa,#444444);
  1286. }
  1287. table {
  1288. border: 20px inset #101010;
  1289. border-collapse:collapse;
  1290. /*
  1291. margin-left:auto;
  1292. margin-right:auto;
  1293. */
  1294. }
  1295. td {
  1296. width:65px;
  1297. height:65px;
  1298. text-align:center;
  1299. padding:0px;
  1300. padding-top:0px;
  1301. font-weight:bold;
  1302. }
  1303. h3 {
  1304. background-color:#ffffff;
  1305. margin:0px;
  1306. padding:0px;
  1307. margin-bottom:5px;
  1308. }
  1309. span:hover {
  1310. cursor:default;
  1311. }
  1312. span {
  1313. cursor:default;
  1314. }
  1315. #info {
  1316. color:#000000;
  1317. }
  1318. .scalechess {
  1319. height:100%;
  1320. width:auto;
  1321. }
  1322.  
  1323. /*
  1324. td:nth-of-type(3) {
  1325. background-color:#000000;
  1326. color:#ffffff;
  1327. }
  1328. td:nth-of-type(2) {
  1329. background-color:#eeeeee;
  1330. color:#000000;
  1331. }
  1332. */
  1333. </style>
  1334. </head>
  1335. <body onload="init()">
  1336. <div class="scalechess">
  1337. <h3 id="info">White's turn</h3>
  1338. <table>
  1339. <tr>
  1340. <td id="a8"></td>
  1341. <td id="b8"></td>
  1342. <td id="c8"></td>
  1343. <td id="d8"></td>
  1344. <td id="e8"></td>
  1345. <td id="f8"></td>
  1346. <td id="g8"></td>
  1347. <td id="h8"></td>
  1348. </tr>
  1349. <tr>
  1350. <td id="a7"></td>
  1351. <td id="b7"></td>
  1352. <td id="c7"></td>
  1353. <td id="d7"></td>
  1354. <td id="e7"></td>
  1355. <td id="f7"></td>
  1356. <td id="g7"></td>
  1357. <td id="h7"></td>
  1358. </tr>
  1359. <tr>
  1360. <td id="a6"></td>
  1361. <td id="b6"></td>
  1362. <td id="c6"></td>
  1363. <td id="d6"></td>
  1364. <td id="e6"></td>
  1365. <td id="f6"></td>
  1366. <td id="g6"></td>
  1367. <td id="h6"></td>
  1368. </tr>
  1369. <tr>
  1370. <td id="a5"></td>
  1371. <td id="b5"></td>
  1372. <td id="c5"></td>
  1373. <td id="d5"></td>
  1374. <td id="e5"></td>
  1375. <td id="f5"></td>
  1376. <td id="g5"></td>
  1377. <td id="h5"></td>
  1378. </tr>
  1379. <tr>
  1380. <td id="a4"></td>
  1381. <td id="b4"></td>
  1382. <td id="c4"></td>
  1383. <td id="d4"></td>
  1384. <td id="e4"></td>
  1385. <td id="f4"></td>
  1386. <td id="g4"></td>
  1387. <td id="h4"></td>
  1388. </tr>
  1389. <tr>
  1390. <td id="a3"></td>
  1391. <td id="b3"></td>
  1392. <td id="c3"></td>
  1393. <td id="d3"></td>
  1394. <td id="e3"></td>
  1395. <td id="f3"></td>
  1396. <td id="g3"></td>
  1397. <td id="h3"></td>
  1398. </tr>
  1399. <tr>
  1400. <td id="a2"></td>
  1401. <td id="b2"></td>
  1402. <td id="c2"></td>
  1403. <td id="d2"></td>
  1404. <td id="e2"></td>
  1405. <td id="f2"></td>
  1406. <td id="g2"></td>
  1407. <td id="h2"></td>
  1408. </tr>
  1409. <tr>
  1410. <td id="a1"></td>
  1411. <td id="b1"></td>
  1412. <td id="c1"></td>
  1413. <td id="d1"></td>
  1414. <td id="e1"></td>
  1415. <td id="f1"></td>
  1416. <td id="g1"></td>
  1417. <td id="h1"></td>
  1418. </tr>
  1419. </table>
  1420. </div>
  1421. </body>
  1422. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement