board.js
changeset 151 bb5994be7eda
parent 150 cab72d83a6e6
child 153 5a2d38d67319
equal deleted inserted replaced
150:cab72d83a6e6 151:bb5994be7eda
   796 BoardArr2d.prototype.left = BoardArr2d.prototype.shiftLeft_mostly_unrolled;
   796 BoardArr2d.prototype.left = BoardArr2d.prototype.shiftLeft_mostly_unrolled;
   797 BoardArr2d.prototype.right = BoardArr2d.prototype.shiftRight_mostly_unrolled;
   797 BoardArr2d.prototype.right = BoardArr2d.prototype.shiftRight_mostly_unrolled;
   798 BoardArr2d.prototype.up = BoardArr2d.prototype.shiftUp_mostly_unrolled;
   798 BoardArr2d.prototype.up = BoardArr2d.prototype.shiftUp_mostly_unrolled;
   799 BoardArr2d.prototype.down = BoardArr2d.prototype.shiftDown_mostly_unrolled;
   799 BoardArr2d.prototype.down = BoardArr2d.prototype.shiftDown_mostly_unrolled;
   800 
   800 
       
   801 /** Array of which values will be merged. */
       
   802 BoardObj.prototype.rightMerges = function() {
       
   803     var merges = [];
       
   804     var brd = this.brd;
       
   805     for (var i = 0; i < 3; i++) {
       
   806         var f0 = brd[i][0], f1 = brd[i][1], f2 = brd[i][2], f3 = brd[i][3];
       
   807         if (f2 === f3) {
       
   808             if (f2 === 0) {
       
   809                 if (f0 === f1 && f0 !== 0) {
       
   810                     merges.push(f0);
       
   811                 }
       
   812             } else {
       
   813                 merges.push(f2);
       
   814             }
       
   815         } else if (f1 === f2) {
       
   816             if (f1 !== 0) {
       
   817                 merges.push(f1);
       
   818             }
       
   819         } else if (f0 === f1 && f0 !== 0) {
       
   820             merges.push(f0);
       
   821         }
       
   822     }
       
   823     return merges;
       
   824 }
       
   825 /** Array of which values will be merged. */
       
   826 BoardObj.prototype.downMerges = function() {
       
   827     var merges = [];
       
   828     var brd = this.brd;
       
   829     for (var j = 0; j < 3; j++) {
       
   830         var f0 = brd[0][j], f1 = brd[1][j], f2 = brd[2][j], f3 = brd[3][j];
       
   831         if (f2 === f3) {
       
   832             if (f2 === 0) {
       
   833                 if (f0 === f1 && f0 !== 0) {
       
   834                     merges.push(f0);
       
   835                 }
       
   836             } else {
       
   837                 merges.push(f2);
       
   838             }
       
   839         } else if (f1 === f2) {
       
   840             if (f1 !== 0) {
       
   841                 merges.push(f1);
       
   842             }
       
   843         } else if (f0 === f1 && f0 !== 0) {
       
   844             merges.push(f0);
       
   845         }
       
   846     }
       
   847     return merges;
       
   848 }
       
   849 /** Array of which values will be merged. */
       
   850 BoardObj.prototype.leftMerges = function() {
       
   851     var merges = [];
       
   852     var brd = this.brd;
       
   853     for (var i = 0; i < 3; i++) {
       
   854         var f0 = brd[i][0], f1 = brd[i][1], f2 = brd[i][2], f3 = brd[i][3];
       
   855         if (f1 === f0) {
       
   856             if (f1 === 0) {
       
   857                 if (f3 === f2 && f3 !== 0) {
       
   858                     merges.push(f3);
       
   859                 }
       
   860             } else {
       
   861                 merges.push(f1);
       
   862             }
       
   863         } else if (f2 === f1) {
       
   864             if (f2 !== 0) {
       
   865                 merges.push(f2);
       
   866             }
       
   867         } else if (f3 === f2 && f3 !== 0) {
       
   868             merges.push(f3);
       
   869         }
       
   870     }
       
   871     return merges;
       
   872 }
       
   873 /** Array of which values will be merged. */
       
   874 BoardObj.prototype.upMerges = function() {
       
   875     var merges = [];
       
   876     var brd = this.brd;
       
   877     for (var j = 0; j < 3; j++) {
       
   878         var f0 = brd[0][j], f1 = brd[1][j], f2 = brd[2][j], f3 = brd[3][j];
       
   879         if (f1 === f0) {
       
   880             if (f1 === 0) {
       
   881                 if (f3 === f2 && f3 !== 0) {
       
   882                     merges.push(f3);
       
   883                 }
       
   884             } else {
       
   885                 merges.push(f1);
       
   886             }
       
   887         } else if (f2 === f1) {
       
   888             if (f2 !== 0) {
       
   889                 merges.push(f2);
       
   890             }
       
   891         } else if (f3 === f2 && f3 !== 0) {
       
   892             merges.push(f3);
       
   893         }
       
   894     }
       
   895     return merges;
       
   896 }
       
   897 
   801 
   898 
   802 
   899 
   803 ////////////////////////////////////////////////////////////////
   900 ////////////////////////////////////////////////////////////////
   804 /** Create board as properties of object.
   901 /** Create board as properties of object.
   805  * Extract data from 'brd' if present.
   902  * Extract data from 'brd' if present.
  2573             }
  2670             }
  2574         }
  2671         }
  2575     }
  2672     }
  2576     return updated;
  2673     return updated;
  2577 }
  2674 }
       
  2675 
       
  2676 /** Array of which values will be merged. */
       
  2677 BoardObj.prototype.rightMerges = function() {
       
  2678     var merges = [];
       
  2679     var brd = this.brd;
       
  2680     var f0 = brd.aa, f1 = brd.ab, f2 = brd.ac, f3 = brd.ad;
       
  2681     if (f2 === f3) {
       
  2682         if (f2 === 0) {
       
  2683             if (f0 === f1 && f0 !== 0) {
       
  2684                 merges.push(f0);
       
  2685             }
       
  2686         } else {
       
  2687             merges.push(f2);
       
  2688         }
       
  2689     } else if (f1 === f2) {
       
  2690         if (f1 !== 0) {
       
  2691             merges.push(f1);
       
  2692         }
       
  2693     } else if (f0 === f1 && f0 !== 0) {
       
  2694         merges.push(f0);
       
  2695     }
       
  2696     var f0 = brd.ba, f1 = brd.bb, f2 = brd.bc, f3 = brd.bd;
       
  2697     if (f2 === f3) {
       
  2698         if (f2 === 0) {
       
  2699             if (f0 === f1 && f0 !== 0) {
       
  2700                 merges.push(f0);
       
  2701             }
       
  2702         } else {
       
  2703             merges.push(f2);
       
  2704         }
       
  2705     } else if (f1 === f2) {
       
  2706         if (f1 !== 0) {
       
  2707             merges.push(f1);
       
  2708         }
       
  2709     } else if (f0 === f1 && f0 !== 0) {
       
  2710         merges.push(f0);
       
  2711     }
       
  2712     var f0 = brd.ca, f1 = brd.cb, f2 = brd.cc, f3 = brd.cd;
       
  2713     if (f2 === f3) {
       
  2714         if (f2 === 0) {
       
  2715             if (f0 === f1 && f0 !== 0) {
       
  2716                 merges.push(f0);
       
  2717             }
       
  2718         } else {
       
  2719             merges.push(f2);
       
  2720         }
       
  2721     } else if (f1 === f2) {
       
  2722         if (f1 !== 0) {
       
  2723             merges.push(f1);
       
  2724         }
       
  2725     } else if (f0 === f1 && f0 !== 0) {
       
  2726         merges.push(f0);
       
  2727     }
       
  2728     var f0 = brd.da, f1 = brd.db, f2 = brd.dc, f3 = brd.dd;
       
  2729     if (f2 === f3) {
       
  2730         if (f2 === 0) {
       
  2731             if (f0 === f1 && f0 !== 0) {
       
  2732                 merges.push(f0);
       
  2733             }
       
  2734         } else {
       
  2735             merges.push(f2);
       
  2736         }
       
  2737     } else if (f1 === f2) {
       
  2738         if (f1 !== 0) {
       
  2739             merges.push(f1);
       
  2740         }
       
  2741     } else if (f0 === f1 && f0 !== 0) {
       
  2742         merges.push(f0);
       
  2743     }
       
  2744     return merges;
       
  2745 }
       
  2746 /** Array of which values will be merged. */
       
  2747 BoardObj.prototype.downMerges = function() {
       
  2748     var merges = [];
       
  2749     var brd = this.brd;
       
  2750     var f0 = brd.aa, f1 = brd.ba, f2 = brd.ca, f3 = brd.da;
       
  2751     if (f2 === f3) {
       
  2752         if (f2 === 0) {
       
  2753             if (f0 === f1 && f0 !== 0) {
       
  2754                 merges.push(f0);
       
  2755             }
       
  2756         } else {
       
  2757             merges.push(f2);
       
  2758         }
       
  2759     } else if (f1 === f2) {
       
  2760         if (f1 !== 0) {
       
  2761             merges.push(f1);
       
  2762         }
       
  2763     } else if (f0 === f1 && f0 !== 0) {
       
  2764         merges.push(f0);
       
  2765     }
       
  2766     var f0 = brd.ab, f1 = brd.bb, f2 = brd.cb, f3 = brd.db;
       
  2767     if (f2 === f3) {
       
  2768         if (f2 === 0) {
       
  2769             if (f0 === f1 && f0 !== 0) {
       
  2770                 merges.push(f0);
       
  2771             }
       
  2772         } else {
       
  2773             merges.push(f2);
       
  2774         }
       
  2775     } else if (f1 === f2) {
       
  2776         if (f1 !== 0) {
       
  2777             merges.push(f1);
       
  2778         }
       
  2779     } else if (f0 === f1 && f0 !== 0) {
       
  2780         merges.push(f0);
       
  2781     }
       
  2782     var f0 = brd.ac, f1 = brd.bc, f2 = brd.cc, f3 = brd.dc;
       
  2783     if (f2 === f3) {
       
  2784         if (f2 === 0) {
       
  2785             if (f0 === f1 && f0 !== 0) {
       
  2786                 merges.push(f0);
       
  2787             }
       
  2788         } else {
       
  2789             merges.push(f2);
       
  2790         }
       
  2791     } else if (f1 === f2) {
       
  2792         if (f1 !== 0) {
       
  2793             merges.push(f1);
       
  2794         }
       
  2795     } else if (f0 === f1 && f0 !== 0) {
       
  2796         merges.push(f0);
       
  2797     }
       
  2798     var f0 = brd.ad, f1 = brd.bd, f2 = brd.cd, f3 = brd.dd;
       
  2799     if (f2 === f3) {
       
  2800         if (f2 === 0) {
       
  2801             if (f0 === f1 && f0 !== 0) {
       
  2802                 merges.push(f0);
       
  2803             }
       
  2804         } else {
       
  2805             merges.push(f2);
       
  2806         }
       
  2807     } else if (f1 === f2) {
       
  2808         if (f1 !== 0) {
       
  2809             merges.push(f1);
       
  2810         }
       
  2811     } else if (f0 === f1 && f0 !== 0) {
       
  2812         merges.push(f0);
       
  2813     }
       
  2814     return merges;
       
  2815 }
       
  2816 /** Array of which values will be merged. */
       
  2817 BoardObj.prototype.leftMerges = function() {
       
  2818     var merges = [];
       
  2819     var brd = this.brd;
       
  2820     var f0 = brd.aa, f1 = brd.ab, f2 = brd.ac, f3 = brd.ad;
       
  2821     if (f1 === f0) {
       
  2822         if (f1 === 0) {
       
  2823             if (f3 === f2 && f3 !== 0) {
       
  2824                 merges.push(f3);
       
  2825             }
       
  2826         } else {
       
  2827             merges.push(f1);
       
  2828         }
       
  2829     } else if (f2 === f1) {
       
  2830         if (f2 !== 0) {
       
  2831             merges.push(f2);
       
  2832         }
       
  2833     } else if (f3 === f2 && f3 !== 0) {
       
  2834         merges.push(f3);
       
  2835     }
       
  2836     var f0 = brd.ba, f1 = brd.bb, f2 = brd.bc, f3 = brd.bd;
       
  2837     if (f1 === f0) {
       
  2838         if (f1 === 0) {
       
  2839             if (f3 === f2 && f3 !== 0) {
       
  2840                 merges.push(f3);
       
  2841             }
       
  2842         } else {
       
  2843             merges.push(f1);
       
  2844         }
       
  2845     } else if (f2 === f1) {
       
  2846         if (f2 !== 0) {
       
  2847             merges.push(f2);
       
  2848         }
       
  2849     } else if (f3 === f2 && f3 !== 0) {
       
  2850         merges.push(f3);
       
  2851     }
       
  2852     var f0 = brd.ca, f1 = brd.cb, f2 = brd.cc, f3 = brd.cd;
       
  2853     if (f1 === f0) {
       
  2854         if (f1 === 0) {
       
  2855             if (f3 === f2 && f3 !== 0) {
       
  2856                 merges.push(f3);
       
  2857             }
       
  2858         } else {
       
  2859             merges.push(f1);
       
  2860         }
       
  2861     } else if (f2 === f1) {
       
  2862         if (f2 !== 0) {
       
  2863             merges.push(f2);
       
  2864         }
       
  2865     } else if (f3 === f2 && f3 !== 0) {
       
  2866         merges.push(f3);
       
  2867     }
       
  2868     var f0 = brd.da, f1 = brd.db, f2 = brd.dc, f3 = brd.dd;
       
  2869     if (f1 === f0) {
       
  2870         if (f1 === 0) {
       
  2871             if (f3 === f2 && f3 !== 0) {
       
  2872                 merges.push(f3);
       
  2873             }
       
  2874         } else {
       
  2875             merges.push(f1);
       
  2876         }
       
  2877     } else if (f2 === f1) {
       
  2878         if (f2 !== 0) {
       
  2879             merges.push(f2);
       
  2880         }
       
  2881     } else if (f3 === f2 && f3 !== 0) {
       
  2882         merges.push(f3);
       
  2883     }
       
  2884     return merges;
       
  2885 }
       
  2886 /** Array of which values will be merged. */
       
  2887 BoardObj.prototype.upMerges = function() {
       
  2888     var merges = [];
       
  2889     var brd = this.brd;
       
  2890     var f0 = brd.aa, f1 = brd.ba, f2 = brd.ca, f3 = brd.da;
       
  2891     if (f1 === f0) {
       
  2892         if (f1 === 0) {
       
  2893             if (f3 === f2 && f3 !== 0) {
       
  2894                 merges.push(f3);
       
  2895             }
       
  2896         } else {
       
  2897             merges.push(f1);
       
  2898         }
       
  2899     } else if (f2 === f1) {
       
  2900         if (f2 !== 0) {
       
  2901             merges.push(f2);
       
  2902         }
       
  2903     } else if (f3 === f2 && f3 !== 0) {
       
  2904         merges.push(f3);
       
  2905     }
       
  2906     var f0 = brd.ab, f1 = brd.bb, f2 = brd.cb, f3 = brd.db;
       
  2907     if (f1 === f0) {
       
  2908         if (f1 === 0) {
       
  2909             if (f3 === f2 && f3 !== 0) {
       
  2910                 merges.push(f3);
       
  2911             }
       
  2912         } else {
       
  2913             merges.push(f1);
       
  2914         }
       
  2915     } else if (f2 === f1) {
       
  2916         if (f2 !== 0) {
       
  2917             merges.push(f2);
       
  2918         }
       
  2919     } else if (f3 === f2 && f3 !== 0) {
       
  2920         merges.push(f3);
       
  2921     }
       
  2922     var f0 = brd.ac, f1 = brd.bc, f2 = brd.cc, f3 = brd.dc;
       
  2923     if (f1 === f0) {
       
  2924         if (f1 === 0) {
       
  2925             if (f3 === f2 && f3 !== 0) {
       
  2926                 merges.push(f3);
       
  2927             }
       
  2928         } else {
       
  2929             merges.push(f1);
       
  2930         }
       
  2931     } else if (f2 === f1) {
       
  2932         if (f2 !== 0) {
       
  2933             merges.push(f2);
       
  2934         }
       
  2935     } else if (f3 === f2 && f3 !== 0) {
       
  2936         merges.push(f3);
       
  2937     }
       
  2938     var f0 = brd.ad, f1 = brd.bd, f2 = brd.cd, f3 = brd.dd;
       
  2939     if (f1 === f0) {
       
  2940         if (f1 === 0) {
       
  2941             if (f3 === f2 && f3 !== 0) {
       
  2942                 merges.push(f3);
       
  2943             }
       
  2944         } else {
       
  2945             merges.push(f1);
       
  2946         }
       
  2947     } else if (f2 === f1) {
       
  2948         if (f2 !== 0) {
       
  2949             merges.push(f2);
       
  2950         }
       
  2951     } else if (f3 === f2 && f3 !== 0) {
       
  2952         merges.push(f3);
       
  2953     }
       
  2954     return merges;
       
  2955 }