[Java] 中国象棋 →→→→→进入此内容的聊天室

来自 , 2019-05-18, 写在 Java, 查看 143 次.
URL http://www.code666.cn/view/5d79099f
  1. var play = play||{};
  2.  
  3. play.init = function (){
  4.        
  5.         play.my                         =       1;                              //玩家方
  6.         play.map                        =       com.arr2Clone (com.initMap);            //初始化棋盘
  7.         play.nowManKey          =       false;                  //现在要操作的棋子
  8.         play.pace                       =       [];                             //记录每一步
  9.         play.isPlay             =       true ;                  //是否能走棋
  10.         play.mans                       =       com.mans;
  11.         play.bylaw                      =       com.bylaw;
  12.         play.show                       =       com.show;
  13.         play.showPane           =       com.showPane;
  14.         play.isOffensive        =       true;                   //是否先手
  15.         play.depth                      =       play.depth || 3;                                //搜索深度
  16.        
  17.         play.isFoul                     =       false;  //是否犯规长将
  18.        
  19.        
  20.        
  21.         com.pane.isShow         =        false;                 //隐藏方块
  22.        
  23.         //初始化棋子
  24.         for (var i=0; i<play.map.length; i++){
  25.                 for (var n=0; n<play.map[i].length; n++){
  26.                         var key = play.map[i][n];
  27.                         if (key){
  28.                                 com.mans[key].x=n;
  29.                                 com.mans[key].y=i;
  30.                                 com.mans[key].isShow = true;
  31.                         }
  32.                 }
  33.         }
  34.         play.show();
  35.        
  36.         //绑定点击事件
  37.         com.canvas.addEventListener("click",play.clickCanvas)
  38.         //clearInterval(play.timer);
  39.         //com.get("autoPlay").addEventListener("click", function(e) {
  40.                 //clearInterval(play.timer);
  41.                 //play.timer = setInterval("play.AIPlay()",1000);
  42.         //      play.AIPlay()
  43.         //})
  44.         /*
  45.         com.get("offensivePlay").addEventListener("click", function(e) {
  46.                 play.isOffensive=true;
  47.                 play.isPlay=true ;     
  48.                 com.get("chessRight").style.display = "none";
  49.                 play.init();
  50.         })
  51.        
  52.         com.get("defensivePlay").addEventListener("click", function(e) {
  53.                 play.isOffensive=false;
  54.                 play.isPlay=true ;     
  55.                 com.get("chessRight").style.display = "none";
  56.                 play.init();
  57.         })
  58.         */
  59.        
  60.        
  61.         com.get("regretBn").addEventListener("click", function(e) {
  62.                 play.regret();
  63.         })
  64.        
  65.         /*
  66.         var initTime = new Date().getTime();
  67.         for (var i=0; i<=100000; i++){
  68.                
  69.                 var h=""
  70.                 var h=play.map.join();
  71.                 //for (var n in play.mans){
  72.                 //      if (play.mans[n].show) h+=play.mans[n].key+play.mans[n].x+play.mans[n].y
  73.                 //}
  74.         }
  75.         var nowTime= new Date().getTime();
  76.         z([h,nowTime-initTime])
  77.         */
  78.        
  79. }
  80.  
  81.  
  82.  
  83. //悔棋
  84. play.regret = function (){
  85.         var map  = com.arr2Clone(com.initMap);
  86.         //初始化所有棋子
  87.         for (var i=0; i<map.length; i++){
  88.                 for (var n=0; n<map[i].length; n++){
  89.                         var key = map[i][n];
  90.                         if (key){
  91.                                 com.mans[key].x=n;
  92.                                 com.mans[key].y=i;
  93.                                 com.mans[key].isShow = true;
  94.                         }
  95.                 }
  96.         }
  97.         var pace= play.pace;
  98.         pace.pop();
  99.         pace.pop();
  100.        
  101.         for (var i=0; i<pace.length; i++){
  102.                 var p= pace[i].split("")
  103.                 var x = parseInt(p[0], 10);
  104.                 var y = parseInt(p[1], 10);
  105.                 var newX = parseInt(p[2], 10);
  106.                 var newY = parseInt(p[3], 10);
  107.                 var key=map[y][x];
  108.                 //try{
  109.          
  110.                 var cMan=map[newY][newX];
  111.                 if (cMan) com.mans[map[newY][newX]].isShow = false;
  112.                 com.mans[key].x = newX;
  113.                 com.mans[key].y = newY;
  114.                 map[newY][newX] = key;
  115.                 delete map[y][x];
  116.                 if (i==pace.length-1){
  117.                         com.showPane(newX ,newY,x,y)   
  118.                 }
  119.                 //} catch (e){
  120.                 //      com.show()
  121.                 //      z([key,p,pace,map])
  122.                        
  123.                 //      }
  124.         }
  125.         play.map = map;
  126.         play.my=1;
  127.         play.isPlay=true;
  128.         com.show();
  129. }
  130.  
  131.  
  132.  
  133. //点击棋盘事件
  134. play.clickCanvas = function (e){
  135.         if (!play.isPlay) return false;
  136.         var key = play.getClickMan(e);
  137.         var point = play.getClickPoint(e);
  138.        
  139.         var x = point.x;
  140.         var y = point.y;
  141.        
  142.         if (key){
  143.                 play.clickMan(key,x,y);
  144.         }else {
  145.                 play.clickPoint(x,y);  
  146.         }
  147.         play.isFoul = play.checkFoul();//检测是不是长将
  148. }
  149.  
  150. //点击棋子,两种情况,选中或者吃子
  151. play.clickMan = function (key,x,y){
  152.         var man = com.mans[key];
  153.         //吃子
  154.         if (play.nowManKey&&play.nowManKey != key && man.my != com.mans[play.nowManKey ].my){
  155.                 //man为被吃掉的棋子
  156.                 if (play.indexOfPs(com.mans[play.nowManKey].ps,[x,y])){
  157.                         man.isShow = false;
  158.                         var pace=com.mans[play.nowManKey].x+""+com.mans[play.nowManKey].y
  159.                         //z(bill.createMove(play.map,man.x,man.y,x,y))
  160.                         delete play.map[com.mans[play.nowManKey].y][com.mans[play.nowManKey].x];
  161.                         play.map[y][x] = play.nowManKey;
  162.                         com.showPane(com.mans[play.nowManKey].x ,com.mans[play.nowManKey].y,x,y)
  163.                         com.mans[play.nowManKey].x = x;
  164.                         com.mans[play.nowManKey].y = y;
  165.                         com.mans[play.nowManKey].alpha = 1
  166.                        
  167.                         play.pace.push(pace+x+y);
  168.                         play.nowManKey = false;
  169.                         com.pane.isShow = false;
  170.                         com.dot.dots = [];
  171.                         com.show()
  172.                         com.get("clickAudio").play();
  173.                         setTimeout("play.AIPlay()",500);
  174.                         if (key == "j0") play.showWin (-1);
  175.                         if (key == "J0") play.showWin (1);
  176.                 }
  177.         // 选中棋子
  178.         }else{
  179.                 if (man.my===1){
  180.                         if (com.mans[play.nowManKey]) com.mans[play.nowManKey].alpha = 1 ;
  181.                         man.alpha = 0.6;
  182.                         com.pane.isShow = false;
  183.                         play.nowManKey = key;
  184.                         com.mans[key].ps = com.mans[key].bl(); //获得所有能着点
  185.                         com.dot.dots = com.mans[key].ps
  186.                         com.show();
  187.                         //com.get("selectAudio").start(0);
  188.                         com.get("selectAudio").play();
  189.                 }
  190.         }
  191. }
  192.  
  193. //点击着点
  194. play.clickPoint = function (x,y){
  195.         var key=play.nowManKey;
  196.         var man=com.mans[key];
  197.         if (play.nowManKey){
  198.                 if (play.indexOfPs(com.mans[key].ps,[x,y])){
  199.                         var pace=man.x+""+man.y
  200.                         //z(bill.createMove(play.map,man.x,man.y,x,y))
  201.                         delete play.map[man.y][man.x];
  202.                         play.map[y][x] = key;
  203.                         com.showPane(man.x ,man.y,x,y)
  204.                         man.x = x;
  205.                         man.y = y;
  206.                         man.alpha = 1;
  207.                         play.pace.push(pace+x+y);
  208.                         play.nowManKey = false;
  209.                         com.dot.dots = [];
  210.                         com.show();
  211.                         com.get("clickAudio").play();
  212.                         setTimeout("play.AIPlay()",500);
  213.                 }else{
  214.                         //alert("不能这么走哦!")       
  215.                 }
  216.         }
  217.        
  218. }
  219.  
  220. //Ai自动走棋
  221. play.AIPlay = function (){
  222.         //return
  223.         play.my = -1 ;
  224.         var pace=AI.init(play.pace.join(""))
  225.         if (!pace) {
  226.                 play.showWin (1);
  227.                 return ;
  228.         }
  229.         play.pace.push(pace.join(""));
  230.         var key=play.map[pace[1]][pace[0]]
  231.                 play.nowManKey = key;
  232.        
  233.         var key=play.map[pace[3]][pace[2]];
  234.         if (key){
  235.                 play.AIclickMan(key,pace[2],pace[3]);  
  236.         }else {
  237.                 play.AIclickPoint(pace[2],pace[3]);    
  238.         }
  239.         com.get("clickAudio").play();
  240.        
  241.        
  242. }
  243.  
  244. //检查是否长将
  245. play.checkFoul = function(){
  246.         var p=play.pace;
  247.         var len=parseInt(p.length,10);
  248.         if (len>11&&p[len-1] == p[len-5] &&p[len-5] == p[len-9]){
  249.                 return p[len-4].split("");
  250.         }
  251.         return false;
  252. }
  253.  
  254.  
  255.  
  256. play.AIclickMan = function (key,x,y){
  257.         var man = com.mans[key];
  258.         //吃子
  259.         man.isShow = false;
  260.         delete play.map[com.mans[play.nowManKey].y][com.mans[play.nowManKey].x];
  261.         play.map[y][x] = play.nowManKey;
  262.         play.showPane(com.mans[play.nowManKey].x ,com.mans[play.nowManKey].y,x,y)
  263.        
  264.         com.mans[play.nowManKey].x = x;
  265.         com.mans[play.nowManKey].y = y;
  266.         play.nowManKey = false;
  267.        
  268.         com.show()
  269.         if (key == "j0") play.showWin (-1);
  270.         if (key == "J0") play.showWin (1);
  271. }
  272.  
  273. play.AIclickPoint = function (x,y){
  274.         var key=play.nowManKey;
  275.         var man=com.mans[key];
  276.         if (play.nowManKey){
  277.                 delete play.map[com.mans[play.nowManKey].y][com.mans[play.nowManKey].x];
  278.                 play.map[y][x] = key;
  279.                
  280.                 com.showPane(man.x,man.y,x,y)
  281.                
  282.        
  283.                 man.x = x;
  284.                 man.y = y;
  285.                 play.nowManKey = false;
  286.                
  287.         }
  288.         com.show();
  289. }
  290.  
  291.  
  292. play.indexOfPs = function (ps,xy){
  293.         for (var i=0; i<ps.length; i++){
  294.                 if (ps[i][0]==xy[0]&&ps[i][1]==xy[1]) return true;
  295.         }
  296.         return false;
  297.        
  298. }
  299.  
  300. //获得点击的着点
  301. play.getClickPoint = function (e){
  302.         var domXY = com.getDomXY(com.canvas);
  303.         var x=Math.round((e.pageX-domXY.x-com.pointStartX-20)/com.spaceX)
  304.         var y=Math.round((e.pageY-domXY.y-com.pointStartY-20)/com.spaceY)
  305.         return {"x":x,"y":y}
  306. }
  307.  
  308. //获得棋子
  309. play.getClickMan = function (e){
  310.         var clickXY=play.getClickPoint(e);
  311.         var x=clickXY.x;
  312.         var y=clickXY.y;
  313.         if (x < 0 || x>8 || y < 0 || y > 9) return false;
  314.         return (play.map[y][x] && play.map[y][x]!="0") ? play.map[y][x] : false;
  315. }
  316.  
  317. play.showWin = function (my){
  318.         play.isPlay = false;
  319.         if (my===1){
  320.                 alert("恭喜你,你赢了!");
  321.         }else{
  322.                 alert("很遗憾,你输了!");
  323.         }
  324. }
  325.  

回复 "中国象棋"

这儿你可以回复上面这条便签

captcha