Advertisement
AkaruiKuraku

Chess HTML game

Apr 30th, 2022 (edited)
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 39.78 KB | Gaming | 0 0
  1. <!--eyy what's up welcome to the chess html game, i hope you enjoy!-->
  2.  
  3. <!--Unknown source, not mine-->
  4.  
  5. <!doctype html>
  6. <html>
  7.  <head>
  8.   <title>Chess</title>
  9.   <meta name="viewport" content="width=device-width, initial-scale=1">
  10.   <meta charset="UTF-8">
  11.   <style>
  12.      body
  13. {
  14.     font-family:chess;
  15.     margin: 0;
  16.     background-color:#000;
  17. }
  18. .square
  19. {
  20.     background:#afa;
  21.     display:inline-block;
  22.     border:1px solid #fff;
  23.     text-align:center;
  24.     position: absolute;
  25.     cursor: pointer;
  26. }
  27.   </style>
  28.  </head>
  29.  <body>
  30.   <div id="container"></div>
  31.   <script>
  32.       window.onload = function(){
  33.     var w = window.innerWidth || 360;
  34.     var h = window.innerHeight || 500;
  35.    
  36.     var tsw = (w > h) ? h : w;
  37.    
  38.     var sw = (tsw - 16)/8;
  39.    
  40.     var container = document.getElementById("container");
  41.     for(var n = 0; n < 64; n++){
  42.        var square = document.createElement("div");
  43.        square.classList.add("square");
  44.        square.classList.add("s"+n);
  45.        square.style.height = sw + 'px';
  46.        square.style.width = sw + 'px';
  47.        square.style.top = 7+(h-tsw)/2+sw*(Math.floor(n/8)) + 'px';
  48.        square.style.left = 7+(w-tsw)/2+sw*(Math.floor(n%8)) + 'px';
  49.        square.style.fontSize = sw*3/4 + 'px';
  50.        container.appendChild(square);
  51.    }
  52.  
  53.    var fonts = {
  54.        'k' : '♚',
  55.        'q' : '♛',
  56.        'r' : '♜',
  57.        'b' : '♝',
  58.        'n' : '♞',
  59.        'p' : '♟',
  60.        'l' : '♔',
  61.        'w' : '♕',
  62.        't' : '♖',
  63.        'v' : '♗',
  64.        'm' : '♘',
  65.        'o' : '♙',
  66.        
  67.    }
  68.    
  69.    var values = ['r','n','b','q','k','b','n','r','p','p','p','p','p','p','p','p',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'o','o','o','o','o','o','o','o','t','m','v','w','l','v','m','t'];
  70.    var ck = false;
  71.    var cr1 = false;
  72.    var cr2 = false;
  73.    var cl;
  74.    
  75.    var sqs = document.getElementsByClassName("square");
  76.  
  77.    for(var n = 0; n < 64; n++){
  78.        if(values[n] !== 0){
  79.           sqs[n].innerHTML = fonts[values[n]];
  80.        }
  81.        sqs[n].addEventListener("click",check);
  82.    }
  83.    
  84.    function updateSquarecolor(){
  85.        for(var n = 0; n < 64; n++){
  86.            if(Math.floor(n/8)%2 === 0){
  87.                if(n%2 === 0){
  88.                    sqs[n].style.background = '#9ff';
  89.                }
  90.                else {
  91.                    sqs[n].style.background = '#5fa';
  92.                }
  93.            }
  94.            else {
  95.                if(n%2 === 1){
  96.                    sqs[n].style.background = '#9ff';
  97.                }
  98.                else {
  99.                    sqs[n].style.background = '#5fa';
  100.                }
  101.            }
  102.        }
  103.    }
  104.    
  105.    updateSquarecolor();
  106.  
  107.    var moveable = false;
  108.    var moveTarget = "";
  109.    var moveScopes = [];
  110.  
  111.  
  112.    function checkBlack(n,values){
  113.        var target = values[n];
  114.        var scopes = [];
  115.        var x = n;
  116.      
  117.        if(target === "o"){
  118.            x -= 8;
  119.            if("prnbkq".indexOf(values[x-1]) >= 0 && x%8 != 0){
  120.                scopes.push(x-1);
  121.             }
  122.             if("prnbkq".indexOf(values[x+1]) >= 0 && x%8 != 7){
  123.                scopes.push(x+1);
  124.             }
  125.             if(x >= 0 && values[x] === 0){
  126.                scopes.push(x);
  127.                 if(x >= 40){
  128.                     if(x-8 >= 0 && values[x-8] === 0){
  129.                        scopes.push(x-8);
  130.                     }
  131.                 }
  132.             }
  133.         }
  134.        
  135.         else if(target === "t"){
  136.             x = n;
  137.             x -= 8;
  138.             while(x >= 0){
  139.                 if(values[x] === 0){
  140.                     scopes.push(x);
  141.                 }
  142.                 else if("prnbqk".indexOf(values[x]) >= 0){
  143.                     scopes.push(x);
  144.                     break;
  145.                 }
  146.                 else {
  147.                     break;
  148.                 }
  149.                 x -= 8;
  150.             }
  151.             x = n;
  152.             x += 8;
  153.             while(x < 64){
  154.                if(values[x] === 0){
  155.                    scopes.push(x);
  156.                }
  157.                else if("prnbqk".indexOf(values[x]) >= 0){
  158.                     scopes.push(x);
  159.                     break;
  160.                 }
  161.                 else {
  162.                     break;
  163.                 }
  164.                 x += 8;
  165.             }
  166.             x = n;
  167.             x++;
  168.             while(x%8 != 0){
  169.                 if(values[x] === 0){
  170.                     scopes.push(x);
  171.                 }
  172.                 else if("prnbqk".indexOf(values[x]) >= 0){
  173.                     scopes.push(x);
  174.                     break;
  175.                 }
  176.                 else {
  177.                     break;
  178.                 }
  179.                 x++;
  180.             }
  181.             x = n;
  182.             x--;
  183.             while(x%8 != 7){
  184.                 if(values[x] === 0){
  185.                     scopes.push(x);
  186.                 }
  187.                 else if("prnbqk".indexOf(values[x]) >= 0){
  188.                     scopes.push(x);
  189.                     break;
  190.                 }
  191.                 else {
  192.                     break;
  193.                 }
  194.                 x--;
  195.             }
  196.         }
  197.        
  198.         else if(target === "m"){
  199.             x = n;
  200.             if(x%8 > 1 && x%8 < 6){
  201.                x -= 17;
  202.                 if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  203.                    scopes.push(x);
  204.                 }
  205.                 x = n;
  206.                 x -= 15;
  207.                 if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  208.                    scopes.push(x);
  209.                 }
  210.  
  211.                 x = n;
  212.                 x -= 10;
  213.                 if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  214.                    scopes.push(x);
  215.                 }
  216.                 x = n;
  217.                 x -= 6;
  218.                 if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  219.                    scopes.push(x);
  220.                 }
  221.                 x = n;
  222.                 x += 6;
  223.                 if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  224.                    scopes.push(x);
  225.                 }
  226.                 x = n;
  227.                 x += 10;
  228.                 if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  229.                    scopes.push(x);
  230.                 }
  231.                 x = n;
  232.                 x += 15;
  233.                 if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  234.                    scopes.push(x);
  235.                 }
  236.                 x = n;
  237.                 x += 17;
  238.                 if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  239.                    scopes.push(x);
  240.                 }
  241.             }
  242.             else {
  243.                 x = n;
  244.                 if(x%8 <= 1){
  245.                    x = n;
  246.                    x -= 15;
  247.                    if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  248.                        scopes.push(x);
  249.                     }
  250.                     x = n;
  251.                     x -= 6;
  252.                     if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  253.                        scopes.push(x);
  254.                     }
  255.                     x = n;
  256.                     x += 10;
  257.                     if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  258.                        scopes.push(x);
  259.                     }
  260.                     x = n;
  261.                     x += 17;
  262.                     if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  263.                        scopes.push(x);
  264.                     }
  265.                 }
  266.                 x = n;
  267.                 if(x%8 === 1){
  268.                     x -= 17;
  269.                     if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  270.                        scopes.push(x);
  271.                     }
  272.                     x = n;
  273.                     x += 15;
  274.                     if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  275.                        scopes.push(x);
  276.                     }
  277.                 }
  278.                 if(x%8 >= 6){
  279.                     x = n;
  280.                     x -= 17;
  281.                     if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  282.                        scopes.push(x);
  283.                     }
  284.                     x = n;
  285.                     x -= 10;
  286.                     if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  287.                        scopes.push(x);
  288.                     }
  289.                     x = n;
  290.                     x += 6;
  291.                     if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  292.                        scopes.push(x);
  293.                     }
  294.                     x = n;
  295.                     x += 15;
  296.                     if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  297.                        scopes.push(x);
  298.                     }
  299.                 }
  300.                 x = n;
  301.                 if(x%8 === 6){
  302.                     x = n;
  303.                     x -= 15;
  304.                     if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  305.                        scopes.push(x);
  306.                     }
  307.                     x = n;
  308.                     x += 17;
  309.                     if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  310.                        scopes.push(x);
  311.                     }
  312.                 }
  313.             }
  314.         }
  315.        
  316.         else if(target === "v"){
  317.             x = n;
  318.             x -= 9;
  319.             while(x >= 0 && x%8 !== 7){
  320.                if(values[x] === 0){
  321.                    scopes.push(x);
  322.                 }
  323.                 else if("prnbqk".indexOf(values[x]) >= 0){
  324.                     scopes.push(x);
  325.                     break;
  326.                 }
  327.                 else {
  328.                     break;
  329.                 }
  330.                 x -= 9;
  331.             }
  332.             x = n;
  333.             x += 7;
  334.             while(x < 64 && x%8 !== 7){
  335.                if(values[x] === 0){
  336.                    scopes.push(x);
  337.                }
  338.                else if("prnbqk".indexOf(values[x]) >= 0){
  339.                     scopes.push(x);
  340.                     break;
  341.                 }
  342.                 else {
  343.                     break;
  344.                 }
  345.                 x += 7;
  346.             }
  347.             x = n;
  348.             x += 9;
  349.             while(x%8 != 0 && x%8 !== 0){
  350.                if(values[x] === 0){
  351.                    scopes.push(x);
  352.                 }
  353.                 else if("prnbqk".indexOf(values[x]) >= 0){
  354.                     scopes.push(x);
  355.                     break;
  356.                 }
  357.                 else {
  358.                     break;
  359.                 }
  360.                 x += 9;
  361.             }
  362.             x = n;
  363.             x -= 7;
  364.             while(x%8 != 0){
  365.                 if(values[x] === 0){
  366.                     scopes.push(x);
  367.                 }
  368.                 else if("prnbqk".indexOf(values[x]) >= 0){
  369.                     scopes.push(x);
  370.                     break;
  371.                 }
  372.                 else {
  373.                     break;
  374.                 }
  375.                 x -= 7;
  376.             }
  377.         }
  378.        
  379.         else if(target === "w"){
  380.             x = n;
  381.             x -= 8;
  382.             while(x >= 0){
  383.                 if(values[x] === 0){
  384.                     scopes.push(x);
  385.                 }
  386.                 else if("prnbqk".indexOf(values[x]) >= 0){
  387.                     scopes.push(x);
  388.                     break;
  389.                 }
  390.                 else {
  391.                     break;
  392.                 }
  393.                 x -= 8;
  394.             }
  395.             x = n;
  396.             x += 8;
  397.             while(x < 64){
  398.                if(values[x] === 0){
  399.                    scopes.push(x);
  400.                }
  401.                else if("prnbqk".indexOf(values[x]) >= 0){
  402.                     scopes.push(x);
  403.                     break;
  404.                 }
  405.                 else {
  406.                     break;
  407.                 }
  408.                 x += 8;
  409.             }
  410.             x = n;
  411.             x++;
  412.             while(x%8 != 0){
  413.                 if(values[x] === 0){
  414.                     scopes.push(x);
  415.                 }
  416.                 else if("prnbqk".indexOf(values[x]) >= 0){
  417.                     scopes.push(x);
  418.                     break;
  419.                 }
  420.                 else {
  421.                     break;
  422.                 }
  423.                 x++;
  424.             }
  425.             x = n;
  426.             x--;
  427.             while(x%8 != 7){
  428.                 if(values[x] === 0){
  429.                     scopes.push(x);
  430.                 }
  431.                 else if("prnbqk".indexOf(values[x]) >= 0){
  432.                     scopes.push(x);
  433.                     break;
  434.                 }
  435.                 else {
  436.                     break;
  437.                 }
  438.                 x--;
  439.             }
  440.             x = n;
  441.             x -= 9;
  442.             while(x >= 0 && x%8 !== 7){
  443.                if(values[x] === 0){
  444.                    scopes.push(x);
  445.                 }
  446.                 else if("prnbqk".indexOf(values[x]) >= 0){
  447.                     scopes.push(x);
  448.                     break;
  449.                 }
  450.                 else {
  451.                     break;
  452.                 }
  453.                 x -= 9;
  454.             }
  455.             x = n;
  456.             x += 7;
  457.             while(x < 64 && x%8 !== 7){
  458.                if(values[x] === 0){
  459.                    scopes.push(x);
  460.                }
  461.                else if("prnbqk".indexOf(values[x]) >= 0){
  462.                     scopes.push(x);
  463.                     break;
  464.                 }
  465.                 else {
  466.                     break;
  467.                 }
  468.                 x += 7;
  469.             }
  470.             x = n;
  471.             x += 9;
  472.             while(x%8 != 0 && x%8 !== 0){
  473.                if(values[x] === 0){
  474.                    scopes.push(x);
  475.                 }
  476.                 else if("prnbqk".indexOf(values[x]) >= 0){
  477.                     scopes.push(x);
  478.                     break;
  479.                 }
  480.                 else {
  481.                     break;
  482.                 }
  483.                 x += 9;
  484.             }
  485.             x = n;
  486.             x -= 7;
  487.             while(x%8 != 0){
  488.                 if(values[x] === 0){
  489.                     scopes.push(x);
  490.                 }
  491.                 else if("prnbqk".indexOf(values[x]) >= 0){
  492.                     scopes.push(x);
  493.                     break;
  494.                 }
  495.                 else {
  496.                     break;
  497.                 }
  498.                 x -= 7;
  499.             }
  500.         }
  501.        
  502.         else if(target === "l"){
  503.             x = n;
  504.             x += 8;
  505.             if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  506.                scopes.push(x);
  507.             }
  508.             x = n;
  509.             x -= 8;
  510.             if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  511.                scopes.push(x);
  512.             }
  513.             x = n;
  514.             if(x%8 > 0){
  515.                 x = n;
  516.                 x -= 1;
  517.                 if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  518.                    scopes.push(x);
  519.                 }
  520.                 x = n;
  521.                 x -= 9;
  522.                 if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  523.                    scopes.push(x);
  524.                 }
  525.  
  526.                 x = n;
  527.                 x += 7;
  528.                 if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  529.                    scopes.push(x);
  530.                 }
  531.             }
  532.             x = n;
  533.             if(x%8 < 7){
  534.                x = n;
  535.                x += 1;
  536.                if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  537.                    scopes.push(x);
  538.                 }
  539.                 x = n;
  540.                 x += 9;
  541.                 if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  542.                    scopes.push(x);
  543.                 }
  544.                 x = n;
  545.                 x -= 7;
  546.                 if(("prnbqk".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  547.                    scopes.push(x);
  548.                 }
  549.             }
  550.             x = n;
  551.             if(!ck){
  552.                 cl = false;
  553.                 if(!cr2){
  554.                 //    cl = false;
  555.                     if(values[n+1] === 0 && values[n+2] === 0 && values[n+3] === "t"){
  556.                        scopes.push(x+2);
  557.                         cl = true;
  558.                     }
  559.                 }
  560.                 if(!cr1){
  561.                 //    cl = false;
  562.                     if(values[n-1] === 0 && values[n-2] === 0 && values[n-3] === 0 && values[n-4] === "t"){
  563.                        scopes.push(x-2);
  564.                         cl = true;
  565.                     }
  566.                 }
  567.             }
  568.         }
  569.         if(scopes.length) return scopes;
  570.     }
  571.  
  572.     function checkWhite(n,values){
  573.         var target = values[n];
  574.         var scopes = [];
  575.         var x = n;
  576.         if(target === "p"){
  577.             x += 8;
  578.             if("otmvlw".indexOf(values[x-1]) >= 0 && x%8 != 0){
  579.                scopes.push(x-1);
  580.             }
  581.             if("otmvlw".indexOf(values[x+1]) >= 0 && x%8 != 7){
  582.                scopes.push(x+1);
  583.             }
  584.             if(x < 64 && values[x] === 0){
  585.                scopes.push(x);
  586.                if(x <= 23){
  587.                    if(x+8 >= 0 && values[x+8] === 0){
  588.                        scopes.push(x+8);
  589.                     }
  590.                 }
  591.             }
  592.         }
  593.        
  594.         else if(target === "r"){
  595.             x = n;
  596.             x -= 8;
  597.             while(x >= 0){
  598.                 if(values[x] === 0){
  599.                     scopes.push(x);
  600.                 }
  601.                 else if("otmvlw".indexOf(values[x]) >= 0){
  602.                     scopes.push(x);
  603.                     break;
  604.                 }
  605.                 else {
  606.                     break;
  607.                 }
  608.                 x -= 8;
  609.             }
  610.             x = n;
  611.             x += 8;
  612.             while(x < 64){
  613.                if(values[x] === 0){
  614.                    scopes.push(x);
  615.                }
  616.                else if("otmvlw".indexOf(values[x]) >= 0){
  617.                     scopes.push(x);
  618.                     break;
  619.                 }
  620.                 else {
  621.                     break;
  622.                 }
  623.                 x += 8;
  624.             }
  625.             x = n;
  626.             x++;
  627.             while(x%8 != 0){
  628.                 if(values[x] === 0){
  629.                     scopes.push(x);
  630.                 }
  631.                 else if("otmvlw".indexOf(values[x]) >= 0){
  632.                     scopes.push(x);
  633.                     break;
  634.                 }
  635.                 else {
  636.                     break;
  637.                 }
  638.                 x++;
  639.             }
  640.             x = n;
  641.             x--;
  642.             while(x%8 != 7){
  643.                 if(values[x] === 0){
  644.                     scopes.push(x);
  645.                 }
  646.                 else if("otmvlw".indexOf(values[x]) >= 0){
  647.                     scopes.push(x);
  648.                     break;
  649.                 }
  650.                 else {
  651.                     break;
  652.                 }
  653.                 x--;
  654.             }
  655.         }
  656.        
  657.         else if(target === "n"){
  658.             x = n;
  659.             if(x%8 > 1 && x%8 < 6){
  660.                x -= 17;
  661.                 if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  662.                    scopes.push(x);
  663.                 }
  664.                 x = n;
  665.                 x -= 15;
  666.                 if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  667.                    scopes.push(x);
  668.                 }
  669.  
  670.                 x = n;
  671.                 x -= 10;
  672.                 if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  673.                    scopes.push(x);
  674.                 }
  675.                 x = n;
  676.                 x -= 6;
  677.                 if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  678.                    scopes.push(x);
  679.                 }
  680.                 x = n;
  681.                 x += 6;
  682.                 if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  683.                    scopes.push(x);
  684.                 }
  685.                 x = n;
  686.                 x += 10;
  687.                 if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  688.                    scopes.push(x);
  689.                 }
  690.                 x = n;
  691.                 x += 15;
  692.                 if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  693.                    scopes.push(x);
  694.                 }
  695.                 x = n;
  696.                 x += 17;
  697.                 if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  698.                    scopes.push(x);
  699.                 }
  700.             }
  701.             else {
  702.                 x = n;
  703.                 if(x%8 <= 1){
  704.                    x = n;
  705.                    x -= 15;
  706.                    if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  707.                        scopes.push(x);
  708.                     }
  709.                     x = n;
  710.                     x -= 6;
  711.                     if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  712.                        scopes.push(x);
  713.                     }
  714.                     x = n;
  715.                     x += 10;
  716.                     if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  717.                        scopes.push(x);
  718.                     }
  719.                     x = n;
  720.                     x += 17;
  721.                     if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  722.                        scopes.push(x);
  723.                     }
  724.                 }
  725.                 x = n;
  726.                 if(x%8 === 1){
  727.                     x -= 17;
  728.                     if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  729.                        scopes.push(x);
  730.                     }
  731.                     x = n;
  732.                     x += 15;
  733.                     if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  734.                        scopes.push(x);
  735.                     }
  736.                 }
  737.                 if(x%8 >= 6){
  738.                     x = n;
  739.                     x -= 17;
  740.                     if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  741.                        scopes.push(x);
  742.                     }
  743.                     x = n;
  744.                     x -= 10;
  745.                     if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  746.                        scopes.push(x);
  747.                     }
  748.                     x = n;
  749.                     x += 6;
  750.                     if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  751.                        scopes.push(x);
  752.                     }
  753.                     x = n;
  754.                     x += 15;
  755.                     if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  756.                        scopes.push(x);
  757.                     }
  758.                 }
  759.                 x = n;
  760.                 if(x%8 === 6){
  761.                     x = n;
  762.                     x -= 15;
  763.                     if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  764.                        scopes.push(x);
  765.                     }
  766.                     x = n;
  767.                     x += 17;
  768.                     if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  769.                        scopes.push(x);
  770.                     }
  771.                 }
  772.             }
  773.         }
  774.      
  775.         else if(target === "b"){
  776.             x = n;
  777.             x -= 9;
  778.             while(x >= 0 && x%8 !== 7){
  779.                if(values[x] === 0){
  780.                    scopes.push(x);
  781.                 }
  782.                 else if("otmvlw".indexOf(values[x]) >= 0){
  783.                     scopes.push(x);
  784.                     break;
  785.                 }
  786.                 else {
  787.                     break;
  788.                 }
  789.                 x -= 9;
  790.             }
  791.             x = n;
  792.             x += 7;
  793.             while(x < 64 && x%8 !== 7){
  794.                if(values[x] === 0){
  795.                    scopes.push(x);
  796.                }
  797.                else if("otmvlw".indexOf(values[x]) >= 0){
  798.                     scopes.push(x);
  799.                     break;
  800.                 }
  801.                 else {
  802.                     break;
  803.                 }
  804.                 x += 7;
  805.             }
  806.             x = n;
  807.             x += 9;
  808.             while(x%8 != 0 && x%8 !== 0){
  809.                if(values[x] === 0){
  810.                    scopes.push(x);
  811.                 }
  812.                 else if("otmvlw".indexOf(values[x]) >= 0){
  813.                     scopes.push(x);
  814.                     break;
  815.                 }
  816.                 else {
  817.                     break;
  818.                 }
  819.                 x += 9;
  820.             }
  821.             x = n;
  822.             x -= 7;
  823.             while(x%8 != 0){
  824.                 if(values[x] === 0){
  825.                     scopes.push(x);
  826.                 }
  827.                 else if("otmvlw".indexOf(values[x]) >= 0){
  828.                     scopes.push(x);
  829.                     break;
  830.                 }
  831.                 else {
  832.                     break;
  833.                 }
  834.                 x -= 7;
  835.             }
  836.         }
  837.        
  838.         else if(target === "q"){
  839.             x = n;
  840.             x -= 8;
  841.             while(x >= 0){
  842.                 if(values[x] === 0){
  843.                     scopes.push(x);
  844.                 }
  845.                 else if("otmvlw".indexOf(values[x]) >= 0){
  846.                     scopes.push(x);
  847.                     break;
  848.                 }
  849.                 else {
  850.                     break;
  851.                 }
  852.                 x -= 8;
  853.             }
  854.             x = n;
  855.             x += 8;
  856.             while(x < 64){
  857.                if(values[x] === 0){
  858.                    scopes.push(x);
  859.                }
  860.                else if("otmvlw".indexOf(values[x]) >= 0){
  861.                     scopes.push(x);
  862.                     break;
  863.                 }
  864.                 else {
  865.                     break;
  866.                 }
  867.                 x += 8;
  868.             }
  869.             x = n;
  870.             x++;
  871.             while(x%8 != 0){
  872.                 if(values[x] === 0){
  873.                     scopes.push(x);
  874.                 }
  875.                 else if("otmvlw".indexOf(values[x]) >= 0){
  876.                     scopes.push(x);
  877.                     break;
  878.                 }
  879.                 else {
  880.                     break;
  881.                 }
  882.                 x++;
  883.             }
  884.             x = n;
  885.             x--;
  886.             while(x%8 != 7){
  887.                 if(values[x] === 0){
  888.                     scopes.push(x);
  889.                 }
  890.                 else if("otmvlw".indexOf(values[x]) >= 0){
  891.                     scopes.push(x);
  892.                     break;
  893.                 }
  894.                 else {
  895.                     break;
  896.                 }
  897.                 x--;
  898.             }
  899.             x = n;
  900.             x -= 9;
  901.             while(x >= 0 && x%8 !== 7){
  902.                if(values[x] === 0){
  903.                    scopes.push(x);
  904.                 }
  905.                 else if("otmvlw".indexOf(values[x]) >= 0){
  906.                     scopes.push(x);
  907.                     break;
  908.                 }
  909.                 else {
  910.                     break;
  911.                 }
  912.                 x -= 9;
  913.             }
  914.             x = n;
  915.             x += 7;
  916.             while(x < 64 && x%8 !== 7){
  917.                if(values[x] === 0){
  918.                    scopes.push(x);
  919.                }
  920.                else if("otmvlw".indexOf(values[x]) >= 0){
  921.                     scopes.push(x);
  922.                     break;
  923.                 }
  924.                 else {
  925.                     break;
  926.                 }
  927.                 x += 7;
  928.             }
  929.             x = n;
  930.             x += 9;
  931.             while(x%8 != 0 && x%8 !== 0){
  932.                if(values[x] === 0){
  933.                    scopes.push(x);
  934.                 }
  935.                 else if("otmvlw".indexOf(values[x]) >= 0){
  936.                     scopes.push(x);
  937.                     break;
  938.                 }
  939.                 else {
  940.                     break;
  941.                 }
  942.                 x += 9;
  943.             }
  944.             x = n;
  945.             x -= 7;
  946.             while(x%8 != 0){
  947.                 if(values[x] === 0){
  948.                     scopes.push(x);
  949.                 }
  950.                 else if("otmvlw".indexOf(values[x]) >= 0){
  951.                     scopes.push(x);
  952.                     break;
  953.                 }
  954.                 else {
  955.                     break;
  956.                 }
  957.                 x -= 7;
  958.             }
  959.         }
  960.        
  961.         else if(target === "k"){
  962.             x = n;
  963.             x += 8;
  964.             if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  965.                scopes.push(x);
  966.             }
  967.             x = n;
  968.             x -= 8;
  969.             if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  970.                scopes.push(x);
  971.             }
  972.             x = n;
  973.             if(x%8 > 0){
  974.                 x = n;
  975.                 x -= 1;
  976.                 if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  977.                    scopes.push(x);
  978.                 }
  979.                 x = n;
  980.                 x -= 9;
  981.                 if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  982.                    scopes.push(x);
  983.                 }
  984.  
  985.                 x = n;
  986.                 x += 7;
  987.                 if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  988.                    scopes.push(x);
  989.                 }
  990.             }
  991.             x = n;
  992.             if(x%8 < 7){
  993.                x = n;
  994.                x += 1;
  995.                if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  996.                    scopes.push(x);
  997.                 }
  998.                 x = n;
  999.                 x += 9;
  1000.                 if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  1001.                    scopes.push(x);
  1002.                 }
  1003.                 x = n;
  1004.                 x -= 7;
  1005.                 if(("otmvlw".indexOf(values[x]) >= 0 || values[x] === 0) && x < 64 && x >= 0){
  1006.                    scopes.push(x);
  1007.                 }
  1008.             }
  1009.         }
  1010.         if(scopes.length) return scopes;
  1011.     }
  1012.  
  1013.     var myTurn = true;
  1014.  
  1015.     function check(){
  1016.         if(myTurn){
  1017.             var n = Number(this.classList[1].slice(1));
  1018.             var target = values[n];
  1019.  
  1020.             var scopes = checkBlack(n,values) || [];
  1021.  
  1022.             var x = n;
  1023.  
  1024.             if(!moveable){
  1025.                 if(scopes.length > 0){
  1026.                     moveable = true;
  1027.                     moveTarget = n;
  1028.                     moveScopes = scopes.join(",").split(",");
  1029.                 }
  1030.                 else {
  1031.  
  1032.                 }
  1033.             }
  1034.             else {
  1035.                 if(moveScopes.indexOf(String(n)) >= 0){
  1036.                     var checkArr = [];
  1037.                     var saveKing = false;
  1038.                     for(var z = 0; z < 64; z++){
  1039.                        checkArr[z] = values[z];
  1040.                    }
  1041.                    
  1042.                    checkArr[n] = checkArr[moveTarget];
  1043.                    checkArr[moveTarget] = 0;
  1044.                    
  1045.                    for(var y = 0; y < 64; y++){
  1046.                        if("prnbkq".indexOf(checkArr[y]) >= 0){
  1047.                             var checkScp = checkWhite(y,checkArr) || [];
  1048.                             for(var z = 0; z < checkScp.length; z++){
  1049.                                if(checkArr[checkScp[z]] === 'l'){
  1050.                                    if(!saveKing){
  1051.                                        alert('Save Your King');
  1052.                                        saveKing = true;
  1053.                                    }
  1054.                                }
  1055.                            }
  1056.                        }
  1057.                    }
  1058.                    
  1059.                    if(!saveKing){
  1060.                        values[n] = values[moveTarget];
  1061.                        values[moveTarget] = 0;
  1062.                        if(cl){
  1063.                            if(n === 62 && moveTarget === 60){
  1064.                                values[63] = 0;
  1065.                                values[61] = "t";
  1066.                            }
  1067.                            else if(n === 58 && moveTarget === 60){
  1068.                                values[59] = "t";
  1069.                                values[56] = 0;
  1070.                            }
  1071.                        }
  1072.                        if(moveTarget === 60){
  1073.                            ck = true;
  1074.                        }
  1075.                        else if(moveTarget === 63){
  1076.                            cr2 = true;
  1077.                        }
  1078.                        else if(moveTarget === 56){
  1079.                            cr1 = true;
  1080.                        }
  1081.                        if(values[n] === "o" && n < 8){
  1082.                            values[n] = "w";
  1083.                        }
  1084.                        moveable = false;
  1085.                        scopes = [];
  1086.                        myTurn = false;
  1087.                        setTimeout(chooseTurn,1000);
  1088.                    }
  1089.                }
  1090.                else {
  1091.                    moveScopes = [];
  1092.                    moveable = false;
  1093.                }
  1094.            }
  1095.  
  1096.            updateSquarecolor();
  1097.            
  1098.            for(var x = 0; x < 64; x++){
  1099.                sqs[x].innerHTML = fonts[values[x]];
  1100.                if(values[x] === 0){
  1101.                    sqs[x].innerHTML = "";
  1102.                }
  1103.            }
  1104.  
  1105.            for(var x = 0; x < scopes.length; x++){
  1106.                sqs[scopes[x]].style.background = "#f45";//.classList.add("scope");
  1107.            //    alert(scopes)
  1108.            }
  1109.        }
  1110.    }
  1111.  
  1112.  
  1113.    var arr = [];
  1114.  
  1115.    function chooseTurn(){
  1116.        var approved = [];
  1117.        var actions = [];
  1118.        var effects = [];
  1119.  
  1120.  
  1121.        for(var n = 0; n < 64; n++){
  1122.            if("prnbqk".indexOf(values[n]) >= 0){
  1123.                 var scopes = checkWhite(n,values) || [];
  1124.                 for(var x = 0; x < scopes.length; x++){
  1125.                    var tmp = []//values.join(',').split(',');
  1126.                    for(var xx = 0; xx < 64; xx++){
  1127.                        tmp[xx] = values[xx]
  1128.                    }
  1129.                    var effect = 0;
  1130.                    var action = Math.random()*3;
  1131.                    //Action value
  1132.                    var actionValue = tmp[scopes[x]];
  1133.                    if(actionValue === "l"){
  1134.                        action = 100 + Math.random()*3;
  1135.                    }
  1136.                    else if(actionValue === "w"){
  1137.                        action = 50 + Math.random()*3;
  1138.                    }
  1139.                    else if(actionValue === "v"){
  1140.                        action = 30 + Math.random()*3;
  1141.                    }
  1142.                    else if(actionValue === "m"){
  1143.                        action = 30 + Math.random()*3;
  1144.                    }
  1145.                    else if(actionValue === "t"){
  1146.                        action = 30 + Math.random()*3;
  1147.                    }
  1148.                    else if(actionValue === "o"){
  1149.                        action = 15 + Math.random()*3;
  1150.                    }
  1151.                    //Effect value
  1152.                    tmp[scopes[x]] = tmp[n];
  1153.                    tmp[n] = 0;
  1154.                    for(var y = 0; y < 64; y++){
  1155.                        if("otmvlw".indexOf(values[y]) >= 0){
  1156.                             var tmpScp = checkBlack(y,tmp) || [];
  1157.                             for(var z = 0; z < tmpScp.length; z++){
  1158.                                var effectValue = tmp[tmpScp[z]];
  1159.                                if(effectValue == "k"){
  1160.                                    if(effect < 100){
  1161.                                        effect = 100;
  1162.                                    }
  1163.                                }
  1164.                                else if(effectValue == "q"){
  1165.                                    if(effect < 50){
  1166.                                        effect = 50;
  1167.                                    }
  1168.                                }
  1169.                                else if(effectValue == "b"){
  1170.                                    if(effect < 30){
  1171.                                        effect = 30;
  1172.                                    }
  1173.                                }
  1174.                                else if(effectValue == "n"){
  1175.                                    if(effect < 30){
  1176.                                        effect = 30;
  1177.                                    }
  1178.                                }
  1179.                                else if(effectValue == "r"){
  1180.                                    if(effect < 30){
  1181.                                        effect = 30;
  1182.                                    }
  1183.                                }
  1184.                                else if(effectValue == "p"){
  1185.                                    if(effect < 15){
  1186.                                        effect = 15;
  1187.                                    }
  1188.                                }
  1189.                            }
  1190.                        }
  1191.                    }
  1192.  
  1193.  
  1194.  
  1195.  
  1196.                    actions.push(action);
  1197.                    effects.push(effect);
  1198.                    approved.push(n+"-"+scopes[x]);
  1199.                }
  1200.            }
  1201.        }
  1202.  
  1203.        //alert(actions);
  1204.  
  1205.        var bestEffect = Math.min.apply(null,effects);
  1206.        //alert(bestEffect);
  1207.        if(bestEffect >= 100){
  1208.             alert("You Win");
  1209.             setTimeout(function(){
  1210.                 values = ['r','n','b','q','k','b','n','r','p','p','p','p','p','p','p','p',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'o','o','o','o','o','o','o','o','t','m','v','w','l','v','m','t'];
  1211.         },100);
  1212.         }
  1213.  
  1214.         var tmpA = [];
  1215.         var tmpB = [];
  1216.         var tmpC = [];
  1217.         var bestMove = "";
  1218.  
  1219.         for(var n = 0; n < effects.length; n++){
  1220.            if(effects[n] === bestEffect){
  1221.                tmpA.push(actions[n]);
  1222.                tmpB.push(approved[n]);
  1223.                tmpC.push(effects[n]);
  1224.            }
  1225.        }
  1226.        bestMove = tmpB[tmpA.indexOf(Math.max.apply(null,tmpA))];
  1227.    //    alert(effects)
  1228.        //alert(bestMove);
  1229.  
  1230.  
  1231.        if(bestMove){
  1232.            values[Number(bestMove.split("-")[1])] = values[Number(bestMove.split("-")[0])];
  1233.            values[Number(bestMove.split("-")[0])] = 0;
  1234.            if(values[Number(bestMove.split("-")[1])] === "p" && Number(bestMove.split("-")[1]) >= 56){
  1235.                 values[Number(bestMove.split("-")[1])] = "q";
  1236.             }
  1237.  
  1238.             sqs[bestMove.split("-")[1]].style.background = '#aaf';
  1239.             sqs[bestMove.split("-")[0]].style.background = '#aaf';
  1240.  
  1241.             for(var x = 0; x < 64; x++){
  1242.                //sqs[x].style.background = "#afa"//classList.add("scope");
  1243.                sqs[x].innerHTML = fonts[values[x]];
  1244.                if(values[x] === 0){
  1245.                    sqs[x].innerHTML = "";
  1246.                }
  1247.            }
  1248.            myTurn = true;
  1249.        }
  1250.        else {
  1251.            //alert('You Win');
  1252.        }
  1253.    }
  1254. }
  1255. //chooseTurn();
  1256.  
  1257.  </script>
  1258.  </body>
  1259. </html>
  1260.  
Tags: html Chess
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement