web前端项目-中国象棋【附源码】

中国象棋

【中国象棋】是一款历史悠久、深受人们喜爱的策略类游戏。在Web前端技术中,我们可以使用HTMLCSSJavaScript等语言来制作一款中国象棋游戏。玩家使用棋子(帅/相/士/炮/马/车/炮/卒)在棋盘上相互对弈,将对手的“帅”棋子吃掉即为胜利。

运行效果:
在这里插入图片描述
在这里插入图片描述

HTML源码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>中国象棋</title>
<link href="css/zzsc.css" type="text/css" rel="stylesheet" />
</head>
<body>
<div class="box" id="box"><div class="chess_left"><canvas id="chess">对不起,您的浏览器不支持HTML5,请升级浏览器至IE9、firefox或者谷歌浏览器!</canvas><audio src="audio/click.wav" id="clickAudio" preload="auto"></audio><audio src="audio/select.wav" id="selectAudio" preload="auto"></audio><div><div class="bn_box" id="bnBox"><input type="button" name="offensivePlay" id="tyroPlay" value="新手水平" /><input type="button" name="offensivePlay" id="superPlay" value="中级水平" /><input type="button" name="button" id="" value="大师水平" disabled /><input type="button" name="regret" id="regretBn" value="悔棋" /><input type="button" name="billBn" id="billBn" value="棋谱" class="bn_box" /><input type="button" name="stypeBn" id="stypeBn" value="换肤" /></div></div></div><div class="chess_right" id="chessRight"><select name="billList" id="billList"></select><ol id="billBox" class="bill_box"></ol></div><div id="moveInfo" class="move_info"> </div>
</div>
<script src="js/common.js"></script> 
<script src="js/play.js"></script> 
<script src="js/AI.js"></script> 
<script src="js/bill.js"></script> 
<script src="js/gambit.js"></script>
<div style="text-align:center;clear:both">
<p>适用浏览器:360、FireFox、Chrome、Safari、Opera、傲游、搜狗、世界之窗. 不支持IE8及以下浏览器。</p>
</div>
</body>
</html>

CSS源码:

@charset "gb2312";
body {font-size: 12px;line-height: 150%;
}
.box {margin:0 auto;width:460px;position: relative;
}
.chess_left {float:left;text-align:center
}
.chess_right {float:left;display:none
}
.move_info {float:left;margin-top:20px
}
.bill_box {height: 320px;width: 80px;overflow:auto;
}
.bill_box li {cursor:pointer;text-align:left
}
.bill_box li:hover {cursor:pointer;background: #C6A577;
}
.bill_box li:active {cursor:pointer;background: #fff;
}
#billList {margin-top:20px
}
.bn_box {display:none
}

JS文件:

(1)AI.js

var AI = AI||{};AI.historyTable	=	{};AI.init = function(pace){var bill = AI.historyBill || com.gambit;if (bill.length){var len=pace.length;var arr=[];for (var i=0;i< bill.length;i++){if (bill[i].slice(0,len)==pace) {arr.push(bill[i]);}}if (arr.length){var inx=Math.floor( Math.random() * arr.length );AI.historyBill = arr ;return arr[inx].slice(len,len+4).split("");}else{AI.historyBill = [] ;}}var initTime = new Date().getTime();AI.treeDepth=play.depth;AI.number=0;AI.setHistoryTable.lenght = 0var val=AI.getAlphaBeta(-99999 ,99999, AI.treeDepth, com.arr2Clone(play.map),play.my);if (!val||val.value==-8888) {AI.treeDepth=2;val=AI.getAlphaBeta(-99999 ,99999, AI.treeDepth, com.arr2Clone(play.map),play.my);}if (val&&val.value!=-8888) {var man = play.mans[val.key];var nowTime= new Date().getTime();return [man.x,man.y,val.x,val.y]}else {return false;	}
}
AI.iterativeSearch = function (map, my){var timeOut=100;var initDepth = 1;var maxDepth = 8;AI.treeDepth=0;var initTime = new Date().getTime();var val = {};for (var i=initDepth; i<=maxDepth; i++){var nowTime= new Date().getTime();AI.treeDepth=i;AI.aotuDepth=i;var val = AI.getAlphaBeta(-99999, 99999, AI.treeDepth , map ,my)if (nowTime-initTime > timeOut){return val;}}return false;
}
AI.getMapAllMan = function (map, my){var mans=[];for (var i=0; i<map.length; i++){for (var n=0; n<map[i].length; n++){var key = map[i][n];if (key && play.mans[key].my == my){play.mans[key].x = n;play.mans[key].y = i;mans.push(play.mans[key])}}}return mans;
}AI.getMoves = function (map, my){var manArr = AI.getMapAllMan (map, my);var moves = [];var foul=play.isFoul;for (var i=0; i<manArr.length; i++){var man = manArr[i];var val=man.bl(map);for (var n=0; n<val.length; n++){var x=man.x;var y=man.y;var newX=val[n][0];var newY=val[n][1];if (foul[0]!=x || foul[1]!=y || foul[2]!=newX || foul[3]!=newY ){moves.push([x,y,newX,newY,man.key])}}}return moves;
}
AI.getAlphaBeta = function (A, B, depth, map ,my) {if (depth == 0) {return {"value":AI.evaluate(map , my)};}var moves = AI.getMoves(map , my );for (var i=0; i < moves.length; i++) {var move= moves[i];var key = move[4];var oldX= move[0];var oldY= move[1];var newX= move[2];var newY= move[3];var clearKey = map[ newY ][ newX ]||"";map[ newY ][ newX ] = key;delete map[ oldY ][ oldX ];play.mans[key].x = newX;play.mans[key].y = newY;if (clearKey=="j0"||clearKey=="J0") {play.mans[key]	.x = oldX;play.mans[key]	.y = oldY;map[ oldY ][ oldX ] = key;delete map[ newY ][ newX ];if (clearKey){map[ newY ][ newX ] = clearKey;}return {"key":key,"x":newX,"y":newY,"value":8888};}else {var val = -AI.getAlphaBeta(-B, -A, depth - 1, map , -my).value;play.mans[key]	.x = oldX;play.mans[key]	.y = oldY;map[ oldY ][ oldX ] = key;delete map[ newY ][ newX ];if (clearKey){map[ newY ][ newX ] = clearKey;}if (val >= B) {return {"key":key,"x":newX,"y":newY,"value":B}; } if (val > A) { A = val;if (AI.treeDepth == depth) var rootKey={"key":key,"x":newX,"y":newY,"value":A};} } }if (AI.treeDepth == depth) {if (!rootKey){return false;}else{return rootKey;}}return {"key":key,"x":newX,"y":newY,"value":A};
}
AI.setHistoryTable = function (txtMap,depth,value,my){AI.setHistoryTable.lenght ++;AI.historyTable[txtMap] = {depth:depth,value:value} 
}
AI.evaluate = function (map,my){var val=0;for (var i=0; i<map.length; i++){for (var n=0; n<map[i].length; n++){var key = map[i][n];if (key){val += play.mans[key].value[i][n] * play.mans[key].my;}}}AI.number++;return val*my;
}
AI.evaluate1 = function (map,my){var val=0;for (var i in play.mans){var man=play.mans[i];if (man.isShow){val += man.value[man.y][man.x] * man.my;}}AI.number++;return val*my;
}
(2)bill.js

var bill = bill || {};bill.init = function (){if (com.store){clearInterval(bill.timer);bill.setBillList(com.arr2Clone(com.initMap));play.isPlay=false;	com.show();}else {bill.timer = setInterval("bill.init()",300);	}
}bill.setBillList = function (map){var list=com.get("billList")for (var i=0; i < com.store.length ; i++){var option = document.createElement('option');option.text='����'+(i+1);option.value=i;list.add(option , null);}list.addEventListener("change", function(e) {bill.setBox (com.store[this.value], map)})bill.setBox (com.store[0], map)
}bill.setMove = function (bl,inx,map){var map = com.arr2Clone(map);for (var i=0; i<map.length; i++){for (var n=0; n<map[i].length; n++){var key = map[i][n];if (key){com.mans[key].x=n;com.mans[key].y=i;com.mans[key].isShow = true;}}}for (var i=0; i<= inx ; i++){var n = i*4var y = bl[n+1]var newX = bl[n+2]var x = bl[n+0]var newY = bl[n+3]if (com.mans[map[newY][newX]]) {com.mans[map[newY][newX]].isShow = false;}com.mans[map[y][x]].x = newX;com.mans[map[y][x]].y = newY;if (i == inx) {com.showPane(x ,y,newX,newY);}map[newY][newX] = map[y][x];delete map[y][x];}return map;
}
bill.setBox = function (bl,initMap){var map = com.arr2Clone(initMap);var bl= bl.split("");var h='';for (var i=0; i< bl.length ; i+=4){h +='<li id="move_'+(i/4)+'">';var x = bl[i+0];var y = bl[i+1];var newX = bl[i+2];var newY = bl[i+3];h += com.createMove(map,x,y,newX,newY);h +='</li>\n\r';}com.get("billBox").innerHTML = h;var doms=com.get("billBox").getElementsByTagName("li");for (var i=0; i<doms.length; i++){doms[i].addEventListener("click", function(e) {var inx = this.getAttribute("id").split("_")[1];bill.setMove (bl , inx , initMap)com.show();})}}
(3)common.js
var com = com||{};com.init = function (stype){com.nowStype= stype || com.getCookie("stype") ||"stype1";var stype = com.stype[com.nowStype];com.width			=	stype.width;com.height			=	stype.height;com.spaceX			=	stype.spaceX;com.spaceY			=	stype.spaceY;com.pointStartX		=	stype.pointStartX;com.pointStartY		=	stype.pointStartY;com.page			=	stype.page;com.get("box").style.width = com.width+130+"px";com.canvas			=	document.getElementById("chess"); com.ct				=	com.canvas.getContext("2d") ; com.canvas.width	=	com.width;com.canvas.height	=	com.height;com.childList		=	com.childList||[];com.loadImages(com.page);
}
com.stype = {stype1:{width:325,height:402,spaceX:35,spaceY:36,pointStartX:5,pointStartY:19,page:"stype_1"},stype2:{width:530,height:567,spaceX:57,spaceY:57,pointStartX:-2,pointStartY:0,page:"stype_2"}		
}
com.get = function (id){return document.getElementById(id)
}window.onload = function(){  com.bg=new com.class.Bg();com.dot = new com.class.Dot();com.pane=new com.class.Pane();com.pane.isShow=false;com.childList=[com.bg,com.dot,com.pane];	com.mans	 ={};com.createMans(com.initMap)com.bg.show();com.get("bnBox").style.display = "block";//play.init();com.get("billBn").addEventListener("click", function(e) {if (confirm("�Ƿ�����Ծ֣���ʼ����о���")){com.init();com.get("chessRight").style.display = "block";com.get("moveInfo").style.display = "none";bill.init();}})com.get("superPlay").addEventListener("click", function(e) {if (confirm("ȷ�Ͽ�ʼ��ʦ�����ģ�")){play.isPlay=true ;	com.get("chessRight").style.display = "none";com.get("moveInfo").style.display = "block";com.get("moveInfo").innerHTML="";play.depth = 4;play.init();}})com.get("tyroPlay").addEventListener("click", function(e) {if (confirm("ȷ�Ͽ�ʼ���ּ����ģ�")){play.isPlay=true ;	com.get("chessRight").style.display = "none";com.get("moveInfo").style.display = "block";com.get("moveInfo").innerHTML="";play.depth = 3;play.init();}})com.get("stypeBn").addEventListener("click", function(e) {var stype =com.nowStype;if (stype=="stype1") stype="stype2";else if (stype=="stype2") stype="stype1";com.init(stype);com.show();play.depth = 4;play.init();document.cookie="stype=" +stype;clearInterval(timer);var i=0;var timer = setInterval(function (){com.show();if (i++>=5) clearInterval(timer);},2000);})com.getData("js/gambit.all.js",function(data){com.gambit=data.split(" ");AI.historyBill = com.gambit;})com.getData("js/store.js",function(data){com.store=data.split(" ");})
}com.loadImages = function(stype){com.bgImg = new Image();com.bgImg.src  = "img/"+stype+"/bg.png";com.dotImg = new Image();com.dotImg.src  = "img/"+stype+"/dot.png";for (var i in com.args){com[i] = {};com[i].img = new Image();com[i].img.src = "img/"+stype+"/"+ com.args[i].img +".png";}com.paneImg = new Image();com.paneImg.src  = "img/"+stype+"/r_box.png";document.getElementsByTagName("body")[0].style.background= "url(img/"+stype+"/bg.jpg)";}
com.show = function (){com.ct.clearRect(0, 0, com.width, com.height);  for (var i=0; i<com.childList.length ; i++){com.childList[i].show();}
}com.showPane  = function (x,y,newX,newY){com.pane.isShow=true;com.pane.x= x ;com.pane.y= y ;com.pane.newX= newX ;com.pane.newY= newY ;
}com.createMans = function(map){for (var i=0; i<map.length; i++){for (var n=0; n<map[i].length; n++){var key = map[i][n];if (key){com.mans[key]=new com.class.Man(key);com.mans[key].x=n;com.mans[key].y=i;com.childList.push(com.mans[key])}}}
}com.alert = function (obj,f,n){if (typeof obj !== "object") {try{console.log(obj)} catch (e){}}var arr = [];for (var i in obj) arr.push(i+" = "+obj[i]);try{console.log(arr.join(n||"\n"))} catch (e){}
}var z = com.alert;com.getDomXY = function (dom){var left = dom.offsetLeft;var top = dom.offsetTop;var current = dom.offsetParent;while (current !== null){left += current.offsetLeft;top += current.offsetTop;current = current.offsetParent;}return {x:left,y:top};
}com.getCookie = function(name){if (document.cookie.length>0){start=document.cookie.indexOf(name + "=")if (start!=-1){ start=start + name.length+1 end=document.cookie.indexOf(";",start)if (end==-1) end=document.cookie.lengthreturn unescape(document.cookie.substring(start,end))} }return false;
}
com.arr2Clone = function (arr){var newArr=[];for (var i=0; i<arr.length ; i++){	newArr[i] = arr[i].slice();}return newArr;
}com.getData = function (url,fun){var XMLHttpRequestObject=false;if(window.XMLHttpRequest){XMLHttpRequestObject=new XMLHttpRequest();}else if(window.ActiveXObject){XMLHttpRequestObject=new ActiveXObject("Microsoft.XMLHTTP");}if(XMLHttpRequestObject){XMLHttpRequestObject.open("GET",url);XMLHttpRequestObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');XMLHttpRequestObject.onreadystatechange=function (){if(XMLHttpRequestObject.readyState==4 && XMLHttpRequestObject.status==200){fun (XMLHttpRequestObject.responseText)}}XMLHttpRequestObject.send(null);}
}
com.createMove = function (map,x,y,newX,newY){var h="";var man = com.mans[map[y][x]];h+= man.text;map[newY][newX] = map[y][x];delete map[y][x];if (man.my===1){var mumTo=["һ","��","��","��","��","��","��","��","��","ʮ"];	newX=8-newX;h+= mumTo[8-x];if (newY > y) {h+= "��";if (man.pater == "m" || man.pater == "s" || man.pater == "x"){h+= mumTo[newX];}else {h+= mumTo[newY - y -1];}}else if (newY < y) {h+= "��";if (man.pater == "m" || man.pater == "s" || man.pater == "x"){h+= mumTo[newX];}else {h+= mumTo[y - newY -1];}}else {h+= "ƽ";h+= mumTo[newX];}}else{var mumTo=["��","��","��","��","��","��","��","��","��","10"];h+= mumTo[x];if (newY > y) {h+= "��";if (man.pater == "M" || man.pater == "S" || man.pater == "X"){h+= mumTo[newX];}else {h+= mumTo[newY - y-1];}}else if (newY < y) {h+= "��";if (man.pater == "M" || man.pater == "S" || man.pater == "X"){h+= mumTo[newX];}else {h+= mumTo[y - newY-1];}}else {h+= "ƽ";h+= mumTo[newX];}}return h;
}com.initMap = [['C0','M0','X0','S0','J0','S1','X1','M1','C1'],[    ,    ,    ,    ,    ,    ,    ,    ,    ],[    ,'P0',    ,    ,    ,    ,    ,'P1',    ],['Z0',    ,'Z1',    ,'Z2',    ,'Z3',    ,'Z4'],[    ,    ,    ,    ,    ,    ,    ,    ,    ],[    ,    ,    ,    ,    ,    ,    ,    ,    ],['z0',    ,'z1',    ,'z2',    ,'z3',    ,'z4'],[    ,'p0',    ,    ,    ,    ,    ,'p1',    ],[    ,    ,    ,    ,    ,    ,    ,    ,    ],['c0','m0','x0','s0','j0','s1','x1','m1','c1']
];com.initMap1 = [[    ,    ,    ,, "J0"   ,    ,    ,    ,    ],[    ,    ,    ,    ,    ,    ,    ,    ,    ],[    ,    ,    ,    ,    ,"c0",    ,    ,    ],[    ,    ,    ,    ,    ,    ,    ,    ,    ],[    ,    ,    ,    ,    ,    ,    ,    ,    ],[    ,    ,    ,    ,    ,    ,    ,    ,    ],[    ,    ,    ,    ,    ,    ,    ,    ,    ],[    ,    ,    ,    ,    ,	  ,    ,    ,    ],[    ,    ,    ,    ,"s0",    ,    ,"C0",    ],[    ,    ,    ,"s1",    ,"j0",    ,    ,    ]
];com.initMap1 = [[    ,    ,    ,, "J0"   ,    ,    ,    ,    ],[    ,    ,    ,    ,    , ,    ,    ,    ],[    ,    ,    ,    ,    ,"z0",    ,    ,    ],[    ,    ,    ,    ,    ,    ,    ,    ,    ],[    ,    ,    ,    ,    ,    ,    ,    ,    ],[    ,    ,    ,    ,    ,    ,    ,    ,    ],[    ,    ,    ,    ,    ,    ,    ,    ,    ],[    ,    ,    ,    ,    ,	  ,    ,    ,    ],[    ,    ,    ,    ,    ,    ,    ,    ,    ],[    ,    ,    , "j0"   ,,    ,    ,    ]
];com.keys = {"c0":"c","c1":"c","m0":"m","m1":"m","x0":"x","x1":"x","s0":"s","s1":"s","j0":"j","p0":"p","p1":"p","z0":"z","z1":"z","z2":"z","z3":"z","z4":"z","z5":"z","C0":"c","C1":"C","M0":"M","M1":"M","X0":"X","X1":"X","S0":"S","S1":"S","J0":"J","P0":"P","P1":"P","Z0":"Z","Z1":"Z","Z2":"Z","Z3":"Z","Z4":"Z","Z5":"Z",
}com.bylaw ={}
com.bylaw.c = function (x,y,map,my){var d=[];//������for (var i=x-1; i>= 0; i--){if (map[y][i]) {if (com.mans[map[y][i]].my!=my) d.push([i,y]);break}else{d.push([i,y])	}}for (var i=x+1; i <= 8; i++){if (map[y][i]) {if (com.mans[map[y][i]].my!=my) d.push([i,y]);break}else{d.push([i,y])	}}for (var i = y-1 ; i >= 0; i--){if (map[i][x]) {if (com.mans[map[i][x]].my!=my) d.push([x,i]);break}else{d.push([x,i])	}}for (var i = y+1 ; i<= 9; i++){if (map[i][x]) {if (com.mans[map[i][x]].my!=my) d.push([x,i]);break}else{d.push([x,i])	}}return d;
}com.bylaw.m = function (x,y,map,my){var d=[];if ( y-2>= 0 && x+1<= 8 && !play.map[y-1][x] &&(!com.mans[map[y-2][x+1]] || com.mans[map[y-2][x+1]].my!=my)) d.push([x+1,y-2]);if ( y-1>= 0 && x+2<= 8 && !play.map[y][x+1] &&(!com.mans[map[y-1][x+2]] || com.mans[map[y-1][x+2]].my!=my)) d.push([x+2,y-1]);if ( y+1<= 9 && x+2<= 8 && !play.map[y][x+1] &&(!com.mans[map[y+1][x+2]] || com.mans[map[y+1][x+2]].my!=my)) d.push([x+2,y+1]);if ( y+2<= 9 && x+1<= 8 && !play.map[y+1][x] &&(!com.mans[map[y+2][x+1]] || com.mans[map[y+2][x+1]].my!=my)) d.push([x+1,y+2]);if ( y+2<= 9 && x-1>= 0 && !play.map[y+1][x] &&(!com.mans[map[y+2][x-1]] || com.mans[map[y+2][x-1]].my!=my)) d.push([x-1,y+2]);if ( y+1<= 9 && x-2>= 0 && !play.map[y][x-1] &&(!com.mans[map[y+1][x-2]] || com.mans[map[y+1][x-2]].my!=my)) d.push([x-2,y+1]);if ( y-1>= 0 && x-2>= 0 && !play.map[y][x-1] &&(!com.mans[map[y-1][x-2]] || com.mans[map[y-1][x-2]].my!=my)) d.push([x-2,y-1]);if ( y-2>= 0 && x-1>= 0 && !play.map[y-1][x] &&(!com.mans[map[y-2][x-1]] || com.mans[map[y-2][x-1]].my!=my)) d.push([x-1,y-2]);return d;
}com.bylaw.x = function (x,y,map,my){var d=[];if (my===1){if ( y+2<= 9 && x+2<= 8 && !play.map[y+1][x+1] && (!com.mans[map[y+2][x+2]] || com.mans[map[y+2][x+2]].my!=my)) d.push([x+2,y+2]);if ( y+2<= 9 && x-2>= 0 && !play.map[y+1][x-1] && (!com.mans[map[y+2][x-2]] || com.mans[map[y+2][x-2]].my!=my)) d.push([x-2,y+2]);if ( y-2>= 5 && x+2<= 8 && !play.map[y-1][x+1] && (!com.mans[map[y-2][x+2]] || com.mans[map[y-2][x+2]].my!=my)) d.push([x+2,y-2]);if ( y-2>= 5 && x-2>= 0 && !play.map[y-1][x-1] && (!com.mans[map[y-2][x-2]] || com.mans[map[y-2][x-2]].my!=my)) d.push([x-2,y-2]);}else{if ( y+2<= 4 && x+2<= 8 && !play.map[y+1][x+1] && (!com.mans[map[y+2][x+2]] || com.mans[map[y+2][x+2]].my!=my)) d.push([x+2,y+2]);if ( y+2<= 4 && x-2>= 0 && !play.map[y+1][x-1] && (!com.mans[map[y+2][x-2]] || com.mans[map[y+2][x-2]].my!=my)) d.push([x-2,y+2]);if ( y-2>= 0 && x+2<= 8 && !play.map[y-1][x+1] && (!com.mans[map[y-2][x+2]] || com.mans[map[y-2][x+2]].my!=my)) d.push([x+2,y-2]);if ( y-2>= 0 && x-2>= 0 && !play.map[y-1][x-1] && (!com.mans[map[y-2][x-2]] || com.mans[map[y-2][x-2]].my!=my)) d.push([x-2,y-2]);}return d;
}
com.bylaw.s = function (x,y,map,my){var d=[];if (my===1){if ( y+1<= 9 && x+1<= 5 && (!com.mans[map[y+1][x+1]] || com.mans[map[y+1][x+1]].my!=my)) d.push([x+1,y+1]);if ( y+1<= 9 && x-1>= 3 && (!com.mans[map[y+1][x-1]] || com.mans[map[y+1][x-1]].my!=my)) d.push([x-1,y+1]);if ( y-1>= 7 && x+1<= 5 && (!com.mans[map[y-1][x+1]] || com.mans[map[y-1][x+1]].my!=my)) d.push([x+1,y-1]);if ( y-1>= 7 && x-1>= 3 && (!com.mans[map[y-1][x-1]] || com.mans[map[y-1][x-1]].my!=my)) d.push([x-1,y-1]);}else{if ( y+1<= 2 && x+1<= 5 && (!com.mans[map[y+1][x+1]] || com.mans[map[y+1][x+1]].my!=my)) d.push([x+1,y+1]);if ( y+1<= 2 && x-1>= 3 && (!com.mans[map[y+1][x-1]] || com.mans[map[y+1][x-1]].my!=my)) d.push([x-1,y+1]);if ( y-1>= 0 && x+1<= 5 && (!com.mans[map[y-1][x+1]] || com.mans[map[y-1][x+1]].my!=my)) d.push([x+1,y-1]);if ( y-1>= 0 && x-1>= 3 && (!com.mans[map[y-1][x-1]] || com.mans[map[y-1][x-1]].my!=my)) d.push([x-1,y-1]);}return d;}
com.bylaw.j = function (x,y,map,my){var d=[];var isNull=(function (y1,y2){var y1=com.mans["j0"].y;var x1=com.mans["J0"].x;var y2=com.mans["J0"].y;for (var i=y1-1; i>y2; i--){if (map[i][x1]) return false;}return true;})();if (my===1){if ( y+1<= 9  && (!com.mans[map[y+1][x]] || com.mans[map[y+1][x]].my!=my)) d.push([x,y+1]);if ( y-1>= 7 && (!com.mans[map[y-1][x]] || com.mans[map[y-1][x]].my!=my)) d.push([x,y-1]);if ( com.mans["j0"].x == com.mans["J0"].x &&isNull) d.push([com.mans["J0"].x,com.mans["J0"].y]);}else{if ( y+1<= 2  && (!com.mans[map[y+1][x]] || com.mans[map[y+1][x]].my!=my)) d.push([x,y+1]);if ( y-1>= 0 && (!com.mans[map[y-1][x]] || com.mans[map[y-1][x]].my!=my)) d.push([x,y-1]);if ( com.mans["j0"].x == com.mans["J0"].x &&isNull) d.push([com.mans["j0"].x,com.mans["j0"].y]);}if ( x+1<= 5  && (!com.mans[map[y][x+1]] || com.mans[map[y][x+1]].my!=my)) d.push([x+1,y]);if ( x-1>= 3 && (!com.mans[map[y][x-1]] || com.mans[map[y][x-1]].my!=my))d.push([x-1,y]);return d;
}
com.bylaw.p = function (x,y,map,my){var d=[];var n=0;for (var i=x-1; i>= 0; i--){if (map[y][i]) {if (n==0){n++;continue;}else{if (com.mans[map[y][i]].my!=my) d.push([i,y]);break	}}else{if(n==0) d.push([i,y])	}}var n=0;for (var i=x+1; i <= 8; i++){if (map[y][i]) {if (n==0){n++;continue;}else{if (com.mans[map[y][i]].my!=my) d.push([i,y]);break	}}else{if(n==0) d.push([i,y])	}}var n=0;for (var i = y-1 ; i >= 0; i--){if (map[i][x]) {if (n==0){n++;continue;}else{if (com.mans[map[i][x]].my!=my) d.push([x,i]);break	}}else{if(n==0) d.push([x,i])	}}var n=0;for (var i = y+1 ; i<= 9; i++){if (map[i][x]) {if (n==0){n++;continue;}else{if (com.mans[map[i][x]].my!=my) d.push([x,i]);break	}}else{if(n==0) d.push([x,i])	}}return d;
}
com.bylaw.z = function (x,y,map,my){var d=[];if (my===1){if ( y-1>= 0 && (!com.mans[map[y-1][x]] || com.mans[map[y-1][x]].my!=my)) d.push([x,y-1]);if ( x+1<= 8 && y<=4  && (!com.mans[map[y][x+1]] || com.mans[map[y][x+1]].my!=my)) d.push([x+1,y]);if ( x-1>= 0 && y<=4 && (!com.mans[map[y][x-1]] || com.mans[map[y][x-1]].my!=my))d.push([x-1,y]);}else{if ( y+1<= 9  && (!com.mans[map[y+1][x]] || com.mans[map[y+1][x]].my!=my)) d.push([x,y+1]);if ( x+1<= 8 && y>=6  && (!com.mans[map[y][x+1]] || com.mans[map[y][x+1]].my!=my)) d.push([x+1,y]);if ( x-1>= 0 && y>=6 && (!com.mans[map[y][x-1]] || com.mans[map[y][x-1]].my!=my))d.push([x-1,y]);}return d;
}com.value = {c:[[206, 208, 207, 213, 214, 213, 207, 208, 206],[206, 212, 209, 216, 233, 216, 209, 212, 206],[206, 208, 207, 214, 216, 214, 207, 208, 206],[206, 213, 213, 216, 216, 216, 213, 213, 206],[208, 211, 211, 214, 215, 214, 211, 211, 208],[208, 212, 212, 214, 215, 214, 212, 212, 208],[204, 209, 204, 212, 214, 212, 204, 209, 204],[198, 208, 204, 212, 212, 212, 204, 208, 198],[200, 208, 206, 212, 200, 212, 206, 208, 200],[194, 206, 204, 212, 200, 212, 204, 206, 194]],m:[[90, 90, 90, 96, 90, 96, 90, 90, 90],[90, 96,103, 97, 94, 97,103, 96, 90],[92, 98, 99,103, 99,103, 99, 98, 92],[93,108,100,107,100,107,100,108, 93],[90,100, 99,103,104,103, 99,100, 90],[90, 98,101,102,103,102,101, 98, 90],[92, 94, 98, 95, 98, 95, 98, 94, 92],[93, 92, 94, 95, 92, 95, 94, 92, 93],[85, 90, 92, 93, 78, 93, 92, 90, 85],[88, 85, 90, 88, 90, 88, 90, 85, 88]],x:[[0, 0,20, 0, 0, 0,20, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0,23, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0],[0, 0,20, 0, 0, 0,20, 0, 0],[0, 0,20, 0, 0, 0,20, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0, 0],[18,0, 0, 0,23, 0, 0, 0,18],[0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0,20, 0, 0, 0,20, 0, 0]],s:[[0, 0, 0,20, 0,20, 0, 0, 0],[0, 0, 0, 0,23, 0, 0, 0, 0],[0, 0, 0,20, 0,20, 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, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0,20, 0,20, 0, 0, 0],[0, 0, 0, 0,23, 0, 0, 0, 0], [0, 0, 0,20, 0,20, 0, 0, 0]],j:[[0, 0, 0, 8888, 8888, 8888, 0, 0, 0],[0, 0, 0, 8888, 8888, 8888, 0, 0, 0], [0, 0, 0, 8888, 8888, 8888, 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, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 8888, 8888, 8888, 0, 0, 0],[0, 0, 0, 8888, 8888, 8888, 0, 0, 0], [0, 0, 0, 8888, 8888, 8888, 0, 0, 0]],p:[[100, 100,  96, 91,  90, 91,  96, 100, 100],[ 98,  98,  96, 92,  89, 92,  96,  98,  98],[ 97,  97,  96, 91,  92, 91,  96,  97,  97],[ 96,  99,  99, 98, 100, 98,  99,  99,  96],[ 96,  96,  96, 96, 100, 96,  96,  96,  96], [ 95,  96,  99, 96, 100, 96,  99,  96,  95],[ 96,  96,  96, 96,  96, 96,  96,  96,  96],[ 97,  96, 100, 99, 101, 99, 100,  96,  97],[ 96,  97,  98, 98,  98, 98,  98,  97,  96],[ 96,  96,  97, 99,  99, 99,  97,  96,  96]],z:[[ 9,  9,  9, 11, 13, 11,  9,  9,  9],[19, 24, 34, 42, 44, 42, 34, 24, 19],[19, 24, 32, 37, 37, 37, 32, 24, 19],[19, 23, 27, 29, 30, 29, 27, 23, 19],[14, 18, 20, 27, 29, 27, 20, 18, 14],[ 7,  0, 13,  0, 16,  0, 13,  0,  7],[ 7,  0,  7,  0, 15,  0,  7,  0,  7], [ 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]]
}com.value.C = com.arr2Clone(com.value.c).reverse();
com.value.M = com.arr2Clone(com.value.m).reverse();
com.value.X = com.value.x;
com.value.S = com.value.s;
com.value.J = com.value.j;
com.value.P = com.arr2Clone(com.value.p).reverse();
com.value.Z = com.arr2Clone(com.value.z).reverse();com.args={'c':{text:"��", img:'r_c', my:1 ,bl:"c", value:com.value.c},'m':{text:"��", img:'r_m', my:1 ,bl:"m", value:com.value.m},'x':{text:"��", img:'r_x', my:1 ,bl:"x", value:com.value.x},'s':{text:"��", img:'r_s', my:1 ,bl:"s", value:com.value.s},'j':{text:"��", img:'r_j', my:1 ,bl:"j", value:com.value.j},'p':{text:"��", img:'r_p', my:1 ,bl:"p", value:com.value.p},'z':{text:"��", img:'r_z', my:1 ,bl:"z", value:com.value.z},'C':{text:"܇", img:'b_c', my:-1 ,bl:"c", value:com.value.C},'M':{text:"�R", img:'b_m', my:-1 ,bl:"m", value:com.value.M},'X':{text:"��", img:'b_x', my:-1 ,bl:"x", value:com.value.X},'S':{text:"ʿ", img:'b_s', my:-1 ,bl:"s", value:com.value.S},'J':{text:"˧", img:'b_j', my:-1 ,bl:"j", value:com.value.J},'P':{text:"��", img:'b_p', my:-1 ,bl:"p", value:com.value.P},'Z':{text:"��", img:'b_z', my:-1 ,bl:"z", value:com.value.Z}
};com.class = com.class || {}
com.class.Man = function (key, x, y){this.pater = key.slice(0,1);var o=com.args[this.pater]this.x = x||0;   this.y = y||0;this.key = key ;this.my = o.my;this.text = o.text;this.value = o.value;this.isShow = true;this.alpha = 1;this.ps = [];this.show = function (){if (this.isShow) {com.ct.save();com.ct.globalAlpha = this.alpha;com.ct.drawImage(com[this.pater].img,com.spaceX * this.x + com.pointStartX , com.spaceY *  this.y +com.pointStartY);com.ct.restore(); }}this.bl = function (map){var map = map || play.mapreturn com.bylaw[o.bl](this.x,this.y,map,this.my)}
}com.class.Bg = function (img, x, y){this.x = x||0; this.y = y||0;this.isShow = true;this.show = function (){if (this.isShow) com.ct.drawImage(com.bgImg, com.spaceX * this.x,com.spaceY *  this.y);}
}
com.class.Pane = function (img, x, y){this.x = x||0; this.y = y||0;this.newX = x||0; this.newY = y||0;this.isShow = true;this.show = function (){if (this.isShow) {com.ct.drawImage(com.paneImg, com.spaceX * this.x + com.pointStartX , com.spaceY *  this.y + com.pointStartY)com.ct.drawImage(com.paneImg, com.spaceX * this.newX + com.pointStartX  , com.spaceY *  this.newY + com.pointStartY)}}
}com.class.Dot = function (img, x, y){this.x = x||0; this.y = y||0;this.isShow = true;this.dots=[]this.show = function (){for (var i=0; i<this.dots.length;i++){if (this.isShow) com.ct.drawImage(com.dotImg, com.spaceX * this.dots[i][0]+10  + com.pointStartX ,com.spaceY *  this.dots[i][1]+10 + com.pointStartY)}}
}com.init();
(4)play.js
var play = play||{};play.init = function (){play.my				=	1;play.map 			=	com.arr2Clone (com.initMap);play.nowManKey		=	false;play.pace 			=	[];play.isPlay 		=	true ;play.mans 			=	com.mans;play.bylaw 			= 	com.bylaw;play.show 			= 	com.show;play.showPane 		= 	com.showPane;play.isOffensive	=	true;play.depth			=	play.depth || 3;play.isFoul			=	false;com.pane.isShow		=	 false;for (var i=0; i<play.map.length; i++){for (var n=0; n<play.map[i].length; n++){var key = play.map[i][n];if (key){com.mans[key].x=n;com.mans[key].y=i;com.mans[key].isShow = true;}}}play.show();com.canvas.addEventListener("click",play.clickCanvas)com.get("regretBn").addEventListener("click", function(e) {play.regret();})}play.regret = function (){var map  = com.arr2Clone(com.initMap);for (var i=0; i<map.length; i++){for (var n=0; n<map[i].length; n++){var key = map[i][n];if (key){com.mans[key].x=n;com.mans[key].y=i;com.mans[key].isShow = true;}}}var pace= play.pace;pace.pop();pace.pop();for (var i=0; i<pace.length; i++){var p= pace[i].split("")var x = parseInt(p[0], 10);var y = parseInt(p[1], 10);var newX = parseInt(p[2], 10);var newY = parseInt(p[3], 10);var key=map[y][x];//try{var cMan=map[newY][newX];if (cMan) com.mans[map[newY][newX]].isShow = false;com.mans[key].x = newX;com.mans[key].y = newY;map[newY][newX] = key;delete map[y][x];if (i==pace.length-1){com.showPane(newX ,newY,x,y)	}}play.map = map;play.my=1;play.isPlay=true;com.show();
}play.clickCanvas = function (e){if (!play.isPlay) return false;var key = play.getClickMan(e);var point = play.getClickPoint(e);var x = point.x;var y = point.y;if (key){play.clickMan(key,x,y);	}else {play.clickPoint(x,y);	}play.isFoul = play.checkFoul();
}play.clickMan = function (key,x,y){var man = com.mans[key];if (play.nowManKey&&play.nowManKey != key && man.my != com.mans[play.nowManKey ].my){if (play.indexOfPs(com.mans[play.nowManKey].ps,[x,y])){man.isShow = false;var pace=com.mans[play.nowManKey].x+""+com.mans[play.nowManKey].ydelete play.map[com.mans[play.nowManKey].y][com.mans[play.nowManKey].x];play.map[y][x] = play.nowManKey;com.showPane(com.mans[play.nowManKey].x ,com.mans[play.nowManKey].y,x,y)com.mans[play.nowManKey].x = x;com.mans[play.nowManKey].y = y;com.mans[play.nowManKey].alpha = 1play.pace.push(pace+x+y);play.nowManKey = false;com.pane.isShow = false;com.dot.dots = [];com.show()com.get("clickAudio").play();setTimeout("play.AIPlay()",500);if (key == "j0") play.showWin (-1);if (key == "J0") play.showWin (1);}}else{if (man.my===1){if (com.mans[play.nowManKey]) com.mans[play.nowManKey].alpha = 1 ;man.alpha = 0.6;com.pane.isShow = false;play.nowManKey = key;com.mans[key].ps = com.mans[key].bl();com.dot.dots = com.mans[key].pscom.show();com.get("selectAudio").play();}}
}play.clickPoint = function (x,y){var key=play.nowManKey;var man=com.mans[key];if (play.nowManKey){if (play.indexOfPs(com.mans[key].ps,[x,y])){var pace=man.x+""+man.ydelete play.map[man.y][man.x];play.map[y][x] = key;com.showPane(man.x ,man.y,x,y)man.x = x;man.y = y;man.alpha = 1;play.pace.push(pace+x+y);play.nowManKey = false;com.dot.dots = [];com.show();com.get("clickAudio").play();setTimeout("play.AIPlay()",500);}else{}}}
play.AIPlay = function (){play.my = -1 ;var pace=AI.init(play.pace.join(""))if (!pace) {play.showWin (1);return ;}play.pace.push(pace.join(""));var key=play.map[pace[1]][pace[0]]play.nowManKey = key;var key=play.map[pace[3]][pace[2]];if (key){play.AIclickMan(key,pace[2],pace[3]);	}else {play.AIclickPoint(pace[2],pace[3]);	}com.get("clickAudio").play();}play.checkFoul = function(){var p=play.pace;var len=parseInt(p.length,10);if (len>11&&p[len-1] == p[len-5] &&p[len-5] == p[len-9]){return p[len-4].split("");}return false;
}play.AIclickMan = function (key,x,y){var man = com.mans[key];man.isShow = false;delete play.map[com.mans[play.nowManKey].y][com.mans[play.nowManKey].x];play.map[y][x] = play.nowManKey;play.showPane(com.mans[play.nowManKey].x ,com.mans[play.nowManKey].y,x,y)com.mans[play.nowManKey].x = x;com.mans[play.nowManKey].y = y;play.nowManKey = false;com.show()if (key == "j0") play.showWin (-1);if (key == "J0") play.showWin (1);
}play.AIclickPoint = function (x,y){var key=play.nowManKey;var man=com.mans[key];if (play.nowManKey){delete play.map[com.mans[play.nowManKey].y][com.mans[play.nowManKey].x];play.map[y][x] = key;com.showPane(man.x,man.y,x,y)man.x = x;man.y = y;play.nowManKey = false;}com.show();
}play.indexOfPs = function (ps,xy){for (var i=0; i<ps.length; i++){if (ps[i][0]==xy[0]&&ps[i][1]==xy[1]) return true;}return false;}play.getClickPoint = function (e){var domXY = com.getDomXY(com.canvas);var x=Math.round((e.pageX-domXY.x-com.pointStartX-20)/com.spaceX)var y=Math.round((e.pageY-domXY.y-com.pointStartY-20)/com.spaceY)return {"x":x,"y":y}
}play.getClickMan = function (e){var clickXY=play.getClickPoint(e);var x=clickXY.x;var y=clickXY.y;if (x < 0 || x>8 || y < 0 || y > 9) return false;return (play.map[y][x] && play.map[y][x]!="0") ? play.map[y][x] : false;
}play.showWin = function (my){play.isPlay = false;if (my===1){alert("��ϲ�㣬��Ӯ�ˣ�");}else{alert("���ź��������ˣ�");}
}

注意:

由于博客字数限制,本篇文章只展示了部分代码。本项目的完整代码及素材包关注+私信我获取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/633529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

工作流管理框架airflow-安装部署教程

1 概述 Airflow是一个以编程方式编写&#xff0c;用于管理和调度工作流的平台。可以帮助你定义复杂的工作流程,然后在集群上执行和监控这些工作流。 Airflow计划程序在遵循指定的依赖项&#xff0c;同时在一组工作线程上执行任务。丰富的命令实用程序使在DAG上执行复杂的调度…

国产开源模型标杆,能力比肩ChatGPT!书生·浦语2.0发布,支持免费商用

1月17日&#xff0c;新一代大语言模型书⽣浦语2.0&#xff08;InternLM2&#xff09;正式发布并开源。 2种参数规格、3种模型版本&#xff0c;共计6个模型&#xff0c;全部免费可商用。 它支持200K超长上下文&#xff0c;可轻松读200页财报。200K文本全文范围关键信息召回准确…

Springboot日志框架logback与log4j2

目录 Springboot日志使用 Logback日志 日志格式 自定义日志格式 日志文件输出 Springboot启用log4j2日志框架 Springboot日志使用 Springboot底层是使用slf4jlogback的方式进行日志记录 Logback日志 trace&#xff1a;级别最低 debug&#xff1a;调试级别的&#xff0c…

Windows平台反调试技术学习

前言 前俩天的学习记录Windows上面的反调试学习&#xff0c;主要是参考《恶意代码实战分析》和《加密与解密》里面的&#xff0c;给每个小技术都写了程序示例&#xff0c;自己编译反调试了一遍。对于加解密一书是还有很多不理解的地方的&#xff0c;目前只能记录到这了&#x…

建筑类中级工程师职称证明业绩材料有哪些?

三、建筑类中级工程师职称造价类工程业绩材料 1.合同&#xff1a;证明项目合作关系的凭证。 2.预&#xff08;结&#xff09;算报告等(重点是体现封面有你的名字和执业印章等) 3.单位证明或任命书(本人在项目中的职务聘书) 4.工程获奖证明&#xff1a;项目获得市优的证书、省优…

Ubuntu 22.04.1 LTS VirtualBox7.0 解决虚拟机窗口失去焦点一段时间后,虚拟机显示不刷新问题

故障描述&#xff1a; virtualbox安装在ubuntu系统上&#xff0c;虚拟机内安装了windows操作系统。使用中发现&#xff0c;当linux系统窗口被激活&#xff0c;如firefox浏览器&#xff0c;虚拟机的显示一段时间后会暂停刷新&#xff0c;鼠标划入虚拟机窗口后&#xff0c;才会立…

分布式概念

文章目录 一、CAP定理和BASE定理1.1 CAP定理1.2 CAP取舍1.3 BASE定理 二、分布式事务2.1 柔性事务2.2 两阶段提交协议2.3 三阶段提交协议 三、分布式ID3.1 数据库自增ID3.2 数据库多主模式3.3 号段模式3.4 雪花算法3.5 Leaf3.6 使用Redis生成ID 四、限流算法4.1 固定窗口计数器…

TypeScript实现一个贪吃蛇小游戏

游戏效果 文件目录 准备1&#xff1a;新建index.html&#xff0c;编写游戏静态页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-…

小程序开发实战案例五 | 小程序如何嵌入H5页面

在接入小程序过程中会遇到需要将 H5 页面集成到小程序中情况&#xff0c;今天我们就来聊一聊怎么把 H5 页面塞到小程序中。 本篇文章将会从下面这几个方面来介绍&#xff1a; 小程序承载页面的前期准备小程序如何承载 H5小程序和 H5 页面如何通讯小程序和 H5 页面的相互跳转 小…

安全加速SCDN是什么

安全加速SCDN&#xff08;Secure Content Delivery Network&#xff0c;SCDN&#xff09; 是集分布式DDoS防护、CC防护、WAF防护、BOT行为分析为一体的安全加速解决方案。已使用内容分发网络&#xff08;CDN&#xff09;或全站加速网络&#xff08;ECDN&#xff09;的用户&…

【JavaEE】_网络通信原理

目录 1. 网络发展史 2. 网络通信基础 1.1 IP地址 1.2 端口号 1.3 协议 1.3.1 概念 1.3.2 五元组 1.4 协议分层 1.4.1 协议分层的优点 1.4.2 协议分层的分类 1.4.3网络设备所在分层 1.4.4 两台主机通过TCP/IP协议通讯过程 1.5 封装与分用 1.5.1 封装 1.5.2 分用…

Docker 容器连接

Docker 容器连接 前面我们实现了通过网络端口来访问运行在 docker 容器内的服务。 容器中可以运行一些网络应用&#xff0c;要让外部也可以访问这些应用&#xff0c;可以通过 -P 或 -p 参数来指定端口映射。 下面我们来实现通过端口连接到一个 docker 容器。 网络端口映射 …

算法练习-A+B/财务管理/实现四舍五入/牛牛的菱形字符(题目链接+题解打卡)

难度参考 难度&#xff1a;简单 分类&#xff1a;熟悉OJ与IDE的操作 难度与分类由我所参与的培训课程提供&#xff0c;但需要注意的是&#xff0c;难度与分类仅供参考。以下内容均为个人笔记&#xff0c;旨在督促自己认真学习。 题目 A B1. A B - AcWing题库财务管理1004:财…

VsCode + CMake构建项目 C/C++连接Mysql数据库 | 数据库增删改查C++封装 | 信息管理系统通用代码 ---- 课程笔记

这个是B站Up主&#xff1a;程序员程子青的视频 C封装Mysql增删改查操作_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1m24y1a79o/?p6&spm_id_frompageDriver&vd_sourcea934d7fc6f47698a29dac90a922ba5a3安装mysql:mysql 下载和安装和修改MYSQL8.0 数据库存储…

【现代密码学】笔记9-10.3-- 公钥(非对称加密)、混合加密理论《introduction to modern cryphtography》

【现代密码学】笔记9-10.3-- 公钥&#xff08;非对称加密&#xff09;、混合加密理论《introduction to modern cryphtography》 写在最前面8.1 公钥加密理论随机预言机模型&#xff08;Random Oracle Model&#xff0c;ROM&#xff09; 写在最前面 主要在 哈工大密码学课程 张…

深入vue响应式原理

当你把一个普通的 JavaScript 对象传入 Vue 实例作为 data 选项&#xff0c;Vue 将遍历此对象所有的 property&#xff0c;并使用 Object.defineProperty 把这些 property 全部转为 getter/setter。 这些 getter/setter 对用户来说是不可见的&#xff0c;但是在内部它们让 Vue …

Docker 47 个常见故障的原因和解决方法

本文针对Docker容器部署、维护过程中&#xff0c;产生的问题和故障&#xff0c;做出有针对性的说明和解决方案&#xff0c;希望可以帮助到大家去快速定位和解决类似问题故障。 Docker是一种相对使用较简单的容器&#xff0c;我们可以通过以下几种方式获取信息&#xff1a; 1、…

简单理解自动驾驶-看这篇够了!

本文主要介绍自动驾驶技术的整体框架&#xff0c;旨在从宏观理解自动驾驶技术。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;自动驾驶技术 &#x1f380;CSDN主页 发狂的小花 &#x1f304;人生秘诀&#xff1a…

第6章 现代通信技术

文章目录 6.1 图像与多媒体通信6.1.1 图像通信6.1.2 多媒体通信技术1、多媒体通信概念2、多媒体通信的组成3、多媒体通信的业务分类4、实用化的多媒体通信系统类型5、多媒体通信应用系统&#xff08;1&#xff09;多媒体会议电视系统&#xff08;2&#xff09;IPTV 6.2 移动通信…

【机器学习300问】12、为什么要进行特征归一化?

当线性回归模型的特征量变多之后&#xff0c;会出现不同的特征量&#xff0c;然而对于那些同是数值型的特征量为什么要做归一化处理呢&#xff1f; 一、为了消除数据特征之间的量纲影响 使得不同指标之间具有可比性。例如&#xff0c;分析一个人的身高和体重对健康的影响&…