[原创]html5_PC游戏_图片俄罗斯方块
来源:互联网 发布:ps4安装linux 编辑:程序博客网 时间:2024/05/16 11:02
PC游戏_图片俄罗斯方块
以前的了,快一年了。。。
使用了离线canvas复制的方法,启动预览效果需要服务器支持
另外,AC娘图片可以自己做加载功能,这样游戏图片显示更顺畅
效果:
---
代码:
html:
<!DOCTYPE html> <head> <title>CGM001</title> <script src="js/libs/jquery-1.11.0.js"></script> <script src="js/libs/requestNextAnimationFrame.js"></script> <script src="js/data/blockTypeData.js"></script> <style> body { font-size:13px; } </style> </head> <body> <h1 id="LoadH1" style="margin:auto;">加载图片中......</h1> <div style="margin-top:20px;"> [方向键 <span style="color:blue;font-weight:bold;">左</span>:<span style="color:red;font-weight:bold;">左移</span>方块 <span style="color:blue;font-weight:bold;">右</span>:<span style="color:red;font-weight:bold;">右移</span>方块 <span style="color:blue;font-weight:bold;">上</span>:<span style="color:red;font-weight:bold;">旋转</span>方块 <span style="color:blue;font-weight:bold;">下</span>:<span style="color:red;font-weight:bold;">下移</span>方块] <br /> <span style="color:red;font-weight:bold">当下落位置不正确时,会重新下落该方块。</span> </div> <div style="position:absolute;left:10px;bottom:10px; text-align:center"> <br /> 版权所有©王欣盛 <a href="mailTo:wangxsh42@126.com">wangxsh42@126.com</a> 制作时间:2014/04/14 ~ 2014/04/18 </div> </body> <script src="js/entity/canvas_Entity.js"></script> <script src="js/entity/block_Entity.js"></script> <script src="js/entity/blocks_Entity.js"></script> <script src="js/action/CGM001_Action.js"></script></html>
js:
Action:
1 //score 2 var maxFail = 200; 3 var maxMsg = "无解了?还是你没好好玩?"; 4 var stsId = "stsId"; 5 var countId = "countId"; 6 var failCountId = "failCountId"; 7 var fixCountId = "fixCountId"; 8 9 var countB = 0; 10 var currB = 0; 11 var failB = 0; 12 var fixB = 0; 13 14 //acNiang 15 var acSrc = ""; 16 var acNiangId = "acNiangId"; 17 var goodSize = 9; 18 var failSize = 24; 19 var nomalSize = 19; 20 var acRootPath = "imgs/acNiang/"; 21 var goodPath = "good"; 22 var failPath = "fail"; 23 var nomalPath = "nomal"; 24 var defaultPath = "imgs/acNiang/nomal0.png"; 25 26 // background image 27 var goMax = 27; 28 var image; 29 var imageBG; 30 var bgColor; 31 var bgColorLst = [ 32 "#E0FFFF", 33 "#FFC0CB", 34 "#9932CC", 35 "#90EE90", 36 "#7B68EE", 37 "#4169E1", 38 "#C0C0C0", 39 "#7CFC00" 40 ]; 41 var bgId = "bgDiv"; 42 //canvas 43 var abs = "absolute"; 44 var width = 400; 45 var height = 600; 46 var x = 10; 47 var y = 10; 48 var idC = "CGM001Canvas"; 49 var idCOff = "CGM001OffCanvas"; 50 var idCOffBG = "CGM001OffBGCanvas"; 51 var idCOffAnimation = "CGM001OffCanvasAnimation"; 52 var CGM001canvasObj = null; 53 var CGM001canvasOffObj = null; 54 var CGM001canvasOffBGObj = null; 55 var CGM001canvasOffObjAnimation = null; 56 var CGM001canvasParent = "body"; 57 var border = "1px red solid"; 58 border = "none"; 59 //picture 60 var picWidth = width; 61 var picHeight = height; 62 //block 63 var blockCol = 10; 64 var blockRow = 15; 65 var blockWidth = picWidth / blockCol; 66 var blockHeight = picHeight / blockRow; 67 var blockSize = blockWidth < blockHeight ? blockWidth : blockHeight; 68 //blockLst 69 var blockLst = []; 70 var blockBoxLst = []; // to judge weather blockPos Right and isempty 71 var cuttedBlocksLst = []; 72 //blocks order 73 var blocksOrderRow = []; 74 var blocksOrderCol = []; 75 76 $(function () { 77 CGM001canvasObj = createCanvas(abs,x,y,width,height,idC,CGM001canvasParent,border,false,CGM001canvasObj); 78 CGM001canvasOffObj = createCanvas(abs, x + width + 20, y, width, height, idCOff, CGM001canvasParent, border, false, CGM001canvasOffObj); 79 CGM001canvasOffBGObj = createCanvas(abs, x, y, width, height, idCOffBG, CGM001canvasParent, border, true, CGM001canvasOffBGObj); 80 CGM001canvasOffObjAnimation = createCanvas(abs, x + width * 2 + 20, y, width, height, idCOffAnimation, CGM001canvasParent, border, true, CGM001canvasOffObjAnimation); 81 82 /* imageBG = new Image(); 83 imageBG.src = 'imgs/bg.jpg'; 84 imageBG.onload = function (e) { 85 CGM001canvasOffObjAnimation.context.drawImage(imageBG, 0, 0, picWidth, picHeight); 86 drawPic(); 87 calcBlockLst(); 88 }*/ 89 90 drawPic(); 91 calcBlockLst(); 92 }); 93 94 function createBgColor(abs, x, y, width, height, bgId, hideFlg) { 95 var bgStr = "<div id='" + bgId + "' width='" + width + "' height='" + height + "' style='position:" + abs + ";left:" + x + "px;top:" + y + "px;background:" + bgColor + ";'></div>"; 96 var bgOgj = $(bgStr); 97 $(CGM001canvasParent).append(bgOgj.width(width).height(height).css('opacity', '0.2')); 98 } 99 100 function createScoreDiv(abs, x, y, width, height, bgId, hideFlg) {101 var tmpLeft = parseInt(x) + parseInt(width) - 75;102 var tmpTop = parseInt(y) + 40;103 var imgDivStr = "<div id='scoreId' style='position:" + abs + ";left:" + tmpLeft + "px;top:" + tmpTop + "px;text-align:left;'></div>"104 var imgStr = "<img width='75' height='65' src='" + defaultPath + "' id='" + acNiangId + "' />";105 var tmpStsWidth = 100;106 var stsStr = "<div width='" + tmpStsWidth + "' height='65' style='font-weight:bold; position:relative;right:" + 0 + "px;top:-50px;' id='" + stsId + "' >" +107 "方块:<span id='" + countId + "' style='color:red;'>第 " + currB + " 块/共 " + countB + " 块</span>" +108 "<br />失败次数:<span id='" + failCountId + "' style='color:red;'>" + failB + "</span> 块" +109 "<br />已固定:<span id='" + fixCountId + "' style='color:red;'>" + fixB + "</span> 块" +110 "</div>";111 var tmpObj = $(imgDivStr).append($(imgStr));112 tmpObj.append($(stsStr));113 $(CGM001canvasParent).append(tmpObj);114 $("#" + stsId).css({ 'left': ($("#" + stsId).width() + 100) * -1 });115 };116 117 function createCanvas(abs,x,y,width,height,idC,CGM001canvasParent,border,hideFlg,canvasObj){118 canvasObj = new CGM001_canvas(abs,x,y,width,height,idC,CGM001canvasParent,border,hideFlg);119 canvasObj.create();120 canvasObj.init();121 return canvasObj;122 }123 function clearCanvas(){124 CGM001canvasObj.context.clearRect(0,0,CGM001canvasObj.width,CGM001canvasObj.height);125 }126 function drawPic() {127 image = new Image();128 image.src = 'imgs/goImg/go'+parseInt(Math.random()*goMax)+'.jpg';129 image.onload = function(e) {130 $("#LoadH1").hide();131 132 bgColor = bgColorLst[parseInt(Math.random() * bgColorLst.length - 1)];133 createBgColor(abs, x, y, width, height, bgId, false);134 createScoreDiv(abs, x, y, width, height, bgId, false);135 136 CGM001canvasObj.context.drawImage(image, 0, 0, picWidth, picHeight);137 CGM001canvasOffObj.context.putImageData(CGM001canvasObj.context.getImageData(0,0,CGM001canvasObj.width,CGM001canvasObj.height),0,0);138 CGM001canvasOffBGObj.context.putImageData(CGM001canvasObj.context.getImageData(0,0,CGM001canvasObj.width,CGM001canvasObj.height),0,0);139 cutPic();140 141 countB = cuttedBlocksLst.length;142 $("#" + countId).html("第 " + currB + " 块/共 " + countB + " 块");143 $("#" + stsId).css({ 'left': ($("#" + stsId).width() + 10) * -1 });144 145 if(cuttedBlocksLst.length>0){146 initList();147 clearCanvas();148 $(document).keydown(function (event) { onKeyUp(event); });149 animate();150 }151 /*for(var i = 0 ;i < blockLst.length; i ++){152 blockLst[i].draw();153 }*/154 };155 }156 157 function calcBlockLst(){158 var w = blockSize * blockCol;159 var wc = picWidth - w;160 var h = blockSize * blockRow;161 var hc = picHeight - h;162 var s = blockSize;163 var r = blockRow;164 var c = blockCol;165 166 blockLst = [];167 for(i = r - 1; i >= 0; i--){168 for(j = c - 1; j >= 0; j--){169 blockLst.push(new CGM001_block(s, (s * j) + wc, (s * i) + hc, "rgba(255,0,0,0.2)", "blue", CGM001canvasObj.context, i, j, CGM001canvasOffObj.context));170 blockBoxLst.push({x: (s * j) + wc,y:(s * i) + hc,empty:true});171 }172 }173 }174 175 function cutPic(){176 var colorLst = [177 "rgba(255,0,0,0.1)",178 "rgba(0,255,0,0.1)",179 "rgba(0,0,255,0.1)",180 "rgba(197,144,144,0.1)",181 "rgba(209,207,66,0.1)",182 "rgba(150,209,66,0.1)",183 "rgba(66,209,147,0.1)",184 "rgba(66,194,209,0.1)",185 "rgba(157,66,209,0.1)",186 "rgba(209,66,187,0.1)",187 "rgba(176,133,141,0.1)"188 ];189 var time = 0;190 var picCutfinish = false;191 while(time<200){192 193 for(var i = 0 ;i < blockLst.length; i ++){194 blockLst[i].cutted = false;195 }196 197 //console.log(time);198 cuttedBlocksLst = [];199 var cutOverNum = 0;200 var r = blockRow - 1;201 var c = blockCol - 1;202 var maxR = r;203 var maxC = c;204 var goOn = true;205 var blocks = null;206 var stop = 1;207 var rx = maxR - r;208 var cx = maxC - c;209 var goR = rx;210 var goC = cx;211 var randomBlockLst = [];212 while(goOn){213 //stop ++;214 var randomLst = [];215 216 if(null == blocks){217 blocks = new CGM001_blocks(CGM001canvasObj.context);218 }219 220 var colorIndex = cuttedBlocksLst.length % colorLst.length;221 222 var blockTmp = blockLst[rx*blockCol+cx];223 if(!blockTmp.cutted){224 blocks.blockLst.push(blockTmp);225 //console.log("blockTmp",blockTmp.x1,blockTmp.x2);226 blockTmp.cutted = true;227 blockTmp.setFillColor(colorLst[colorIndex]);228 cutOverNum++;229 if(blocks.blockLst.length % 4 == 0){230 cuttedBlocksLst.push(blocks);231 blocks = null;232 while(blockLst[goR*blockCol+goC].cutted){233 //console.log("go",goC,maxC,goR);234 goR = goC >= maxC ? goR + 1 : goR;235 goC = goC >= maxC ? 0 : goC +1;236 if(goC == maxC && goR == maxR){break;}237 }238 rx = goR;239 cx = goC;240 randomBlockLst = [];241 //console.log("goEnd",rx,cx);242 continue;243 //break;244 }245 246 // T247 //if(blocks.blockLst.length % 4 != 0){248 if(Math.random()>0.3){249 randomBlockLst.push({r:rx,c:cx});250 var randomBlockLstTmp = [];251 for(checkIndex = 0; checkIndex < randomBlockLst.length; checkIndex++){252 var rTmp = randomBlockLst[checkIndex].r;253 var cTmp = randomBlockLst[checkIndex].c;254 var canMoveFlg = false;255 256 if(rTmp != maxR && !blockLst[(rTmp+1)*blockCol+cTmp].cutted) // up257 canMoveFlg = true;258 if(rTmp != 0 && !blockLst[(rTmp-1)*blockCol+cTmp].cutted) // down259 canMoveFlg = true;260 if(cTmp != maxC && !blockLst[(rTmp)*blockCol+cTmp+1].cutted){ // left261 var leftGo = true;262 if(cTmp == maxC - 1 && rTmp!=0 && blocks.blockLst.length % 3 == 0){263 if(!blockLst[(rTmp-1)*blockCol+cTmp+1].cutted)264 leftGo = false;265 }266 if(leftGo)267 canMoveFlg = true;268 }269 if(cTmp != 0 && !blockLst[(rTmp)*blockCol+cTmp-1].cutted) // right270 canMoveFlg = true;271 if(canMoveFlg){272 randomBlockLstTmp.push(randomBlockLst[checkIndex]);273 }274 }275 randomBlockLst = randomBlockLstTmp;276 //console.log(randomBlockLst);277 if(randomBlockLst.length==1){278 rx = randomBlockLst[0].r;279 cx = randomBlockLst[0].c;280 }else if(randomBlockLst.length>1){281 var blockI = parseInt(Math.random() * (randomBlockLst.length-1));282 rx = randomBlockLst[blockI].r;283 cx = randomBlockLst[blockI].c;284 }285 }else{286 //randomBlockLst = [];287 }288 289 }290 if(rx != maxR && !blockLst[(rx+1)*blockCol+cx].cutted) // up291 //if(rx+1>=maxR || blockLst[(rx+2)*blockCol+cx].cutted || (cx < maxC && !blockLst[(rx+2)*blockCol+cx+1].cutted) || (cx>0 && !blockLst[(rx+2)*blockCol+cx-1].cutted))292 randomLst.push({r:1,c:0});293 if(rx != 0 && !blockLst[(rx-1)*blockCol+cx].cutted) // down294 //if(rx-1<=0 || blockLst[(rx-2)*blockCol+cx].cutted || (cx < maxC && !blockLst[(rx-2)*blockCol+cx+1].cutted) || (cx>0 && !blockLst[(rx-2)*blockCol+cx-1].cutted))295 randomLst.push({r:-1,c:0});296 if(cx != maxC && !blockLst[(rx)*blockCol+cx+1].cutted){ // left297 var leftGo = true;298 if(cx == maxC - 1 && rx!=0 && blocks.blockLst.length % 3 == 0){299 if(!blockLst[(rx-1)*blockCol+cx+1].cutted)300 leftGo = false;301 }302 if(leftGo)303 //if(cx+1>=maxC || blockLst[(rx)*blockCol+cx+2].cutted || (rx < maxC && !blockLst[(rx+1)*blockCol+cx+2].cutted) || (rx>0 && !blockLst[(rx-1)*blockCol+cx+2].cutted))304 randomLst.push({r:0,c:1});305 }306 if(cx != 0 && !blockLst[(rx)*blockCol+cx-1].cutted) // right307 //if(cx-1<=0 || blockLst[(rx)*blockCol+cx-2].cutted || (rx < maxC && !blockLst[(rx+1)*blockCol+cx-2].cutted) || (rx>0 && !blockLst[(rx-1)*blockCol+cx-2].cutted))308 randomLst.push({r:0,c:-1});309 if(randomLst.length == 1)310 {311 rx += randomLst[0].r;312 cx += randomLst[0].c;313 }else if(randomLst.length > 1){314 var i = parseInt(Math.random() * randomLst.length);315 rx += randomLst[i].r;316 cx += randomLst[i].c;317 }else if(randomLst.length == 0){318 goOn = false;319 }320 321 if(cutOverNum >= blockLst.length){322 goOn = false;323 picCutfinish = true;324 }325 //if(stop >= 101){goOn = false;}326 }327 //console.log(cuttedBlocksLst);328 //test to draw all blocks329 for(i=0;i<cuttedBlocksLst.length;i++){330 for (j=0; j<cuttedBlocksLst[i].blockLst.length; j++)331 {332 cuttedBlocksLst[i].blockLst[j].draw();333 }334 }335 // big while to finish all loop336 if(picCutfinish){337 console.log(time);338 break;339 }else{340 CGM001canvasObj.context.clearRect(0,0,CGM001canvasObj.width,CGM001canvasObj.height);341 CGM001canvasObj.context.putImageData(CGM001canvasOffBGObj.context.getImageData(0, 0, CGM001canvasOffBGObj.width, CGM001canvasOffBGObj.height), 0, 0);342 time++;343 //console.log(time);344 }345 }346 }347 348 function initList(){349 var cuttedBlocksLstTmp;350 for(cbli = 0; cbli < cuttedBlocksLst.length; cbli++){351 cuttedBlocksLstTmp = null;352 cuttedBlocksLstTmp = cuttedBlocksLst[cbli];353 cuttedBlocksLstTmp.calcMinXY();354 cuttedBlocksLstTmp.calcType();355 //console.log((cbli+1)+"/"+cuttedBlocksLst.length);356 }357 358 for(i=0;i<cuttedBlocksLst[0].type.length;i++){359 //for(j=0;j<cuttedBlocksLst[0].type[i].length;j++){360 //console.log(cuttedBlocksLst[0].type[i][0],cuttedBlocksLst[0].type[i][1],cuttedBlocksLst[0].type[i][2],cuttedBlocksLst[0].type[i][3]);361 //}362 }363 //console.log(cuttedBlocksLst[0].blockLst[0].tag,cuttedBlocksLst[0].blockLst[1].tag,cuttedBlocksLst[0].blockLst[2].tag,cuttedBlocksLst[0].blockLst[3].tag,'index:',cuttedBlocksLst[0].typeNo,cuttedBlocksLst[0].typeRoateNo);364 365 /*cuttedBlocksLst[0].rotateBlocks(5);366 367 for(i=0;i<cuttedBlocksLst[0].type.length;i++){368 //for(j=0;j<cuttedBlocksLst[0].type[i].length;j++){369 console.log(cuttedBlocksLst[0].type[i][0],cuttedBlocksLst[0].type[i][1],cuttedBlocksLst[0].type[i][2],cuttedBlocksLst[0].type[i][3]);370 //}371 }372 console.log('rotate:', cuttedBlocksLst[0].rotate);*/373 // sort the down order374 //blocksOrder375 var sortCuttedBlocksTmp = [[],[]];376 var maxYTmp = cuttedBlocksLst[0].maxY;377 var sortj = 0,sorti=0;378 for(sortiTmp=0;sortiTmp<cuttedBlocksLst.length;sortiTmp++){379 if(maxYTmp != cuttedBlocksLst[sortiTmp].maxY){sortj++;sorti=0;sortCuttedBlocksTmp.push([]);maxYTmp = cuttedBlocksLst[sortiTmp].maxY;}380 sortCuttedBlocksTmp[sortj].push([]);381 sortCuttedBlocksTmp[sortj][sorti] = {no:sortiTmp,typeFirst:cuttedBlocksLst[sortiTmp].typeFirst};382 sorti++;383 }384 /*console.log(sortCuttedBlocksTmp);*/385 386 var blocksOrderColTmp = [[], []];387 388 for (x = 0; x < sortCuttedBlocksTmp.length; x++) {389 blocksOrderRow.push([[],[],[]]);390 }391 var addX = 0;392 for(x=0;x<sortCuttedBlocksTmp.length;x++){393 for(y=0;y<sortCuttedBlocksTmp[x].length;y++){394 //395 if (sortCuttedBlocksTmp[x][y].typeFirst == 3) {396 if (blocksOrderRow.length - 1 > x + 2) {397 addX = x + 2;398 } else if (blocksOrderRow.length - 1 > x + 1) {399 addX = x + 2;400 } else { addX = x;}401 blocksOrderRow[addX][sortCuttedBlocksTmp[x][y].typeFirst - 3].push(sortCuttedBlocksTmp[x][y].no); 402 } else {403 blocksOrderRow[x][sortCuttedBlocksTmp[x][y].typeFirst].push(sortCuttedBlocksTmp[x][y].no);404 }405 }406 /*console.log("blocksOrderColTmp",blocksOrderColTmp);*/407 //blocksOrderRow[x]=blocksOrderColTmp;408 }409 for(xx=0;xx<blocksOrderRow.length;xx++){410 //for(yy=0;yy<blocksOrderRow[xx].length;yy++)411 //console.log(xx,yy,":",xx,blocksOrderRow[xx][yy]);412 }413 //gameOverFlg = true;414 }415 416 // Animation.....................................................417 // select the block418 var drawBlocks = null;419 var drawBlocksRow = 0;420 var drawBlocksCol = 0;421 var drawBlocksFirst = 0;422 var paused = false;423 var gameOverFlg = false;424 var initDownBlockOverFlg = false;425 var calTmpCol123 = [];426 var calTmpCol123Tmp = [];427 428 // move and change the block429 var operationLst = [];430 var moveRotate = 0;431 var moveX = 0;432 var moveY = 0;433 var getNew = true;434 435 // fps -> time436 437 var lastFpsUpdateTime = 0;438 439 function animate(time) {440 if (!paused) {441 /*context.clearRect(0,0,canvas.width,canvas.height);442 drawBackground();443 update();444 draw();*/445 updateCanvas();446 drawCanvas();447 if (!gameOverFlg) {448 window.requestNextAnimationFrame(animate);449 //console.log(drawBlocksRow,blocksOrderRow.length-1,"goon",gameOverFlg);450 }else{451 console.log(drawBlocksRow,blocksOrderRow.length-1,"stop",gameOverFlg);452 }453 }454 }455 456 function initDownBlocks(){457 drawBlocks = null;458 while(drawBlocks==null && !initDownBlockOverFlg){459 if(drawBlocksRow < blocksOrderRow.length-1){460 if(drawBlocksCol < 3){461 if(blocksOrderRow[drawBlocksRow][drawBlocksCol].length > drawBlocksFirst){462 //decide which one!463 var calTmpColOrg = blocksOrderRow[drawBlocksRow][drawBlocksCol];464 var selectIndex = 0;465 var selectedNo = 0;466 //tmp init467 if(calTmpCol123.length == 0){468 for(i123 = 0;i123<calTmpColOrg.length;i123++){469 calTmpCol123.push(calTmpColOrg[i123]);470 calTmpCol123Tmp.push(calTmpColOrg[i123]);471 }472 }473 //console.log("in:",calTmpCol123);474 switch(drawBlocksCol){475 case 1:476 //select477 selectIndex = calTmpCol123.length-1;478 break;479 case 0:480 case 2:481 default:482 //select483 selectIndex = parseInt(Math.random() * (calTmpCol123.length-1));484 break;485 }486 selectedNo = calTmpCol123[selectIndex];487 //delete tmp488 calTmpCol123 = [];489 for(i123=0;i123<calTmpCol123Tmp.length;i123++){490 if(selectIndex != i123){491 calTmpCol123.push(calTmpCol123Tmp[i123]);492 }493 }494 //copy to tmp495 calTmpCol123Tmp = [];496 for(i123=0;i123<calTmpCol123.length;i123++){497 calTmpCol123Tmp.push(calTmpCol123[i123]);498 }499 drawBlocks = cuttedBlocksLst[selectedNo];500 501 //console.log("aa",drawBlocks.typeNo,drawBlocks.typeRoateNo,drawBlocks.rotate );502 var initRotateTime = parseInt(Math.random() * 3);503 // initRotateTime = 0; test504 if(initRotateTime>=1){505 //console.log('step1',drawBlocks.typeNo ,drawBlocks.typeRoateNo ,drawBlocks.rotate,drawBlocks.gorotate);506 //drawBlocks.typeRoateNo = (drawBlocks.typeRoateNo + initRotateTime) % 4;507 drawBlocks.gorotate = (initRotateTime * 90) % 360;508 //console.log('step2',drawBlocks.typeNo ,drawBlocks.typeRoateNo ,drawBlocks.rotate,drawBlocks.gorotate);509 //drawBlocks.gorotate = (initRotateTime * 90) % 360;510 }511 //drawBlocks.gorotate = drawBlocks.rotate;512 //console.log("aa",drawBlocks.typeNo,drawBlocks.typeRoateNo,drawBlocks.rotate );513 514 //console.log("out:",calTmpCol123,selectIndex);515 //console.log("selectNo",selectedNo);516 drawBlocksFirst++;517 // crash check(gameOver)518 drawBlocks.godisY = 0;519 drawBlocks.godisX = 0;520 drawBlocks.gorotate = drawBlocks.gorotate;521 if(drawBlocks.testCrash(blockBoxLst)){522 gameOverFlg = true;523 }524 //console.log('step3',drawBlocks.typeNo ,drawBlocks.typeRoateNo ,drawBlocks.rotate,drawBlocks.gorotate);525 drawBlocks.godisY = 0;526 drawBlocks.godisX = 0;527 drawBlocks.gorotate = drawBlocks.gorotate;528 if(drawBlocks.testCrash(blockBoxLst)){529 gameOverFlg = true;530 }531 //console.log('step4',drawBlocks.typeNo ,drawBlocks.typeRoateNo ,drawBlocks.rotate,drawBlocks.gorotate);532 drawBlocks.draw();533 //gameOverFlg = true;534 CGM001canvasOffObj.context.clearRect(0, 0, CGM001canvasOffObj.width, CGM001canvasOffObj.height);535 CGM001canvasOffObj.context.drawImage(image, 0, 0, picWidth, picHeight);536 drawBlocks.drawToOff();537 538 }else{539 drawBlocksFirst = 0;540 drawBlocksCol++;541 calTmpCol123 = [];542 calTmpCol123Tmp = [];543 }544 }else{545 drawBlocksCol = 0;546 drawBlocksRow++;547 }548 }else{549 initDownBlockOverFlg = true;550 //console.log("over");551 }552 }553 }554 function updateCanvas(){555 556 var now = (+new Date);557 558 if (now - lastFpsUpdateTime > 800) {559 lastFpsUpdateTime = now;560 // action in one second561 if (getNew) {562 acSrc = acRootPath + failPath + parseInt(Math.random() * failSize) + ".png";563 initDownBlocks();564 if (initDownBlockOverFlg) {565 clearCanvas();566 console.log("you Win!");567 568 acSrc = acRootPath + goodPath + parseInt(Math.random() * goodSize) + ".png";569 $("#" + acNiangId).attr("src", acSrc);570 571 var overStr = "<div style='width:" + width + "px;position:absolute;left:10px;top:150px; text-align:center;'><span style='color:red;font-size:50px;font-weight:bold;'>恭喜,你赢啦!</span><br /><input type='button' value='再来一次' onclick='javascript: location.reload();' /></div>"572 573 $("body").append($(overStr));574 $("#" + bgId).hide();575 $("#" + idC).hide();576 $("#" + stsId).hide();577 gameOverFlg = true;578 return;579 }580 moveX = 0;581 moveY = 0;582 moveRotate = drawBlocks.rotate;583 getNew = false;584 currB++;585 $("#" + countId).html("第 " + currB + " 块/共 " + countB + " 块");586 $("#" + stsId).css({ 'left': ($("#" + stsId).width() + 10) * -1 });587 } else {588 acSrc = acRootPath + nomalPath + parseInt(Math.random() * nomalSize) + ".png";589 }590 $("#" + acNiangId).attr("src",acSrc);591 if(!gameOverFlg){592 if(initDownBlockOverFlg || drawBlocks==null){593 gameOverFlg = true;594 moveX = 0;595 moveY = 0;596 moveRotate = 0;597 return;598 }599 moveY += drawBlocks.blockSize;600 drawBlocks.godisX = moveX;601 drawBlocks.godisY = moveY;602 drawBlocks.gorotate = moveRotate;603 //peng zhuang604 drawBlocks.crash(blockBoxLst);605 //console.log(drawBlocks.crashFlg,drawBlocks.doneFlg);606 //mei you peng zhuang607 608 // peng zhuang609 saveClearCanvas();610 //drawBlocks.draw();611 //drawBlocks.blockAgainFlg=false;612 if (drawBlocks.blockAgainFlg) {613 acSrc = acRootPath + failPath + parseInt(Math.random() * failSize) + ".png";614 $("#" + acNiangId).attr("src", acSrc);615 drawBlocks.disX = 0;616 drawBlocks.disY = 0;617 drawBlocks.godisX = 0;618 drawBlocks.godisY = 0;619 moveX = 0;620 moveY = 0;621 drawBlocks.doneFlg = false;622 drawBlocks.crashFlg = false;623 drawBlocks.blockAgainFlg = false;624 failB++;625 $("#" + failCountId).html(failB > maxFail ? maxMsg : failB);626 $("#" + stsId).css({ 'left': ($("#" + stsId).width() + 10) * -1 });627 } else if (drawBlocks.doneFlg || drawBlocks.crashFlg) {628 getNew = true;629 acSrc = acRootPath + goodPath + parseInt(Math.random() * goodSize) + ".png";630 $("#" + acNiangId).attr("src", acSrc);631 fixB++;632 $("#" + fixCountId).html(fixB);633 $("#" + stsId).css({ 'left': ($("#" + stsId).width() + 10) * -1 });634 } else {635 drawBlocks.draw();636 }637 } else {drawBlocks.draw();}638 639 }640 }641 642 function drawCanvas(){}643 644 function onKeyUp(e){645 if(drawBlocks!=null){646 var gomoveX;647 var gomoveY;648 var gomoveRotate;649 var currKey = 0,e=e||e.event;650 currKey = e.keyCode || e.which || e.charCode;651 var keyName = String.fromCharCode(currKey);652 gomoveRotate = drawBlocks.rotate;653 gomoveX = drawBlocks.disX;654 gomoveY = drawBlocks.disY;655 switch(currKey){656 case 38:657 //up658 gomoveRotate =(drawBlocks.rotate + 90);659 break;660 case 40:661 //down662 gomoveY = drawBlocks.disY + blockSize;663 break;664 case 39:665 //right666 gomoveX =drawBlocks.disX + blockSize;667 break;668 case 37:669 //left670 gomoveX =drawBlocks.disX - blockSize;671 break;672 default:673 break;674 }675 drawBlocks.godisY = gomoveY;676 drawBlocks.godisX = gomoveX;677 drawBlocks.gorotate = gomoveRotate;678 //console.log("inp",drawBlocks.rotate,gomoveRotate);679 if(drawBlocks.testCrash(blockBoxLst)){680 681 } else {682 acSrc = acRootPath + goodPath + parseInt(Math.random() * goodSize) + ".png";683 $("#" + acNiangId).attr("src", acSrc);684 moveX = gomoveX;685 moveY = gomoveY;686 moveRotate = gomoveRotate;687 drawBlocks.crash(blockBoxLst);688 saveClearCanvas();689 drawBlocks.draw();690 }691 }692 }693 694 function saveClearCanvas(){695 CGM001canvasObj.context.clearRect(0,0,CGM001canvasObj.width,CGM001canvasObj.height);696 CGM001canvasObj.context.putImageData(CGM001canvasOffObjAnimation.context.getImageData(0,0,CGM001canvasOffObjAnimation.width,CGM001canvasOffObjAnimation.height),0,0);697 };
blockTypeData:
1 // blocks type 2 // 1 zi 3 var type1_1 = [ 4 [1,0,0,0], 5 [1,0,0,0], 6 [1,0,0,0], 7 [1,0,0,0]]; 8 var type1_2 = [ 9 [1,1,1,1], 10 [0,0,0,0], 11 [0,0,0,0], 12 [0,0,0,0]]; 13 var type1 = [type1_1,type1_2]; 14 var typeRoate1_1 = [ 15 [1,0,0,0], 16 [2,0,0,0], 17 [3,0,0,0], 18 [4,0,0,0]]; 19 var typeRoateXY1_1 = [ 20 {r:0,c:0}, 21 {r:0,c:0}, 22 {r:1,c:0}, 23 {r:2,c:0}, 24 {r:3,c:0} 25 ]; 26 var typeFirst1_1 = 0; 27 var typeRoate1_2 = [ 28 [4,3,2,1], 29 [0,0,0,0], 30 [0,0,0,0], 31 [0,0,0,0]]; 32 var typeRoateXY1_2 = [ 33 {r:0,c:0}, 34 {r:0,c:3}, 35 {r:0,c:2}, 36 {r:0,c:1}, 37 {r:0,c:0} 38 ]; 39 var typeFirst1_2 = 0; 40 var typeRoate1_3 = [ 41 [4,0,0,0], 42 [3,0,0,0], 43 [2,0,0,0], 44 [1,0,0,0]]; 45 var typeRoateXY1_3 = [ 46 {r:0,c:0}, 47 {r:3,c:0}, 48 {r:2,c:0}, 49 {r:1,c:0}, 50 {r:0,c:0} 51 ]; 52 var typeFirst1_3 = 0; 53 var typeRoate1_4 = [ 54 [1,2,3,4], 55 [0,0,0,0], 56 [0,0,0,0], 57 [0,0,0,0]]; 58 var typeRoateXY1_4 = [ 59 {r:0,c:0}, 60 {r:0,c:0}, 61 {r:0,c:1}, 62 {r:0,c:2}, 63 {r:0,c:3} 64 ]; 65 var typeFirst1_4 = 0; 66 var typeRoate1 = [typeRoate1_1,typeRoate1_2,typeRoate1_3,typeRoate1_4]; 67 var typeRoateXY1 = [typeRoateXY1_1,typeRoateXY1_2,typeRoateXY1_3,typeRoateXY1_4]; 68 var typeFirst1 = [typeFirst1_1,typeFirst1_2,typeFirst1_3,typeFirst1_4]; 69 // tian zi 70 var type2_1 = [ 71 [1,1,0,0], 72 [1,1,0,0], 73 [0,0,0,0], 74 [0,0,0,0]]; 75 var type2 = [type2_1]; 76 var typeRoate2_1 = [ 77 [1,2,0,0], 78 [4,3,0,0], 79 [0,0,0,0], 80 [0,0,0,0]]; 81 var typeRoateXY2_1 = [ 82 {r:0,c:0}, 83 {r:0,c:0}, 84 {r:0,c:1}, 85 {r:1,c:1}, 86 {r:1,c:0} 87 ]; 88 var typeFirst2_1 = 0; 89 var typeRoate2_2 = [ 90 [4,1,0,0], 91 [3,2,0,0], 92 [0,0,0,0], 93 [0,0,0,0]]; 94 var typeRoateXY2_2 = [ 95 {r:0,c:0}, 96 {r:0,c:1}, 97 {r:1,c:1}, 98 {r:1,c:0}, 99 {r:0,c:0}100 ];101 var typeFirst2_2 = 0;102 var typeRoate2_3 = [103 [3,4,0,0],104 [2,1,0,0],105 [0,0,0,0],106 [0,0,0,0]];107 var typeRoateXY2_3 = [108 {r:0,c:0},109 {r:1,c:1},110 {r:1,c:0}, 111 {r:0,c:0},112 {r:0,c:1}113 ];114 var typeFirst2_3 = 0;115 var typeRoate2_4 = [116 [2,3,0,0],117 [1,4,0,0],118 [0,0,0,0],119 [0,0,0,0]];120 var typeRoateXY2_4 = [121 {r:0,c:0},122 {r:1,c:0}, 123 {r:0,c:0},124 {r:0,c:1},125 {r:1,c:1}126 ];127 var typeFirst2_4 = 0;128 var typeRoate2 = [typeRoate2_1,typeRoate2_2,typeRoate2_3,typeRoate2_4];129 var typeRoateXY2 = [typeRoateXY2_1,typeRoateXY2_2,typeRoateXY2_3,typeRoateXY2_4];130 var typeFirst2 = [typeFirst2_1,typeFirst2_2,typeFirst2_3,typeFirst2_4];131 // L zi132 var type3_1 = [133 [1,0,0,0],134 [1,0,0,0],135 [1,1,0,0],136 [0,0,0,0]];137 var type3_2 = [138 [1,1,1,0],139 [1,0,0,0],140 [0,0,0,0],141 [0,0,0,0]];142 var type3_3 = [143 [1,1,0,0],144 [0,1,0,0],145 [0,1,0,0],146 [0,0,0,0]];147 var type3_4 = [148 [0,0,1,0],149 [1,1,1,0],150 [0,0,0,0],151 [0,0,0,0]];152 var type3 = [type3_1,type3_2,type3_3,type3_4];153 var typeRoate3_1 = [154 [1,0,0,0],155 [2,0,0,0],156 [3,4,0,0],157 [0,0,0,0]];158 var typeRoateXY3_1 = [159 {r:0,c:0},160 {r:0,c:0}, 161 {r:1,c:0},162 {r:2,c:0},163 {r:2,c:1}164 ];165 var typeFirst3_1 = 0;166 var typeRoate3_2 = [167 [3,2,1,0],168 [4,0,0,0],169 [0,0,0,0],170 [0,0,0,0]];171 var typeRoateXY3_2 = [172 {r:0,c:0},173 {r:0,c:2}, 174 {r:0,c:1},175 {r:0,c:0},176 {r:1,c:0}177 ];178 var typeFirst3_2 = 2;179 var typeRoate3_3 = [180 [4,3,0,0],181 [0,2,0,0],182 [0,1,0,0],183 [0,0,0,0]];184 var typeRoateXY3_3 = [185 {r:0,c:0},186 {r:2,c:1}, 187 {r:1,c:1},188 {r:0,c:1},189 {r:0,c:0}190 ];191 var typeFirst3_3 = 3;192 var typeRoate3_4 = [193 [0,0,4,0],194 [1,2,3,0],195 [0,0,0,0],196 [0,0,0,0]];197 var typeRoateXY3_4 = [198 {r:0,c:0},199 {r:1,c:0}, 200 {r:1,c:1},201 {r:1,c:2},202 {r:0,c:2}203 ];204 var typeFirst3_4 = 0;205 var typeRoate3 = [typeRoate3_1,typeRoate3_2,typeRoate3_3,typeRoate3_4];206 var typeRoateXY3 = [typeRoateXY3_1,typeRoateXY3_2,typeRoateXY3_3,typeRoateXY3_4];207 var typeFirst3 = [typeFirst3_1,typeFirst3_2,typeFirst3_3,typeFirst3_4];208 // ~L zi209 var type4_1 = [210 [0,1,0,0],211 [0,1,0,0],212 [1,1,0,0],213 [0,0,0,0]];214 var type4_2 = [215 [1,0,0,0],216 [1,1,1,0],217 [0,0,0,0],218 [0,0,0,0]];219 var type4_3 = [220 [1,1,0,0],221 [1,0,0,0],222 [1,0,0,0],223 [0,0,0,0]];224 var type4_4 = [225 [1,1,1,0],226 [0,0,1,0],227 [0,0,0,0],228 [0,0,0,0]];229 var type4 = [type4_1,type4_2,type4_3,type4_4];230 var typeRoate4_1 = [231 [0,1,0,0],232 [0,2,0,0],233 [4,3,0,0],234 [0,0,0,0]];235 var typeRoateXY4_1 = [236 {r:0,c:0},237 {r:0,c:1}, 238 {r:1,c:1},239 {r:2,c:1},240 {r:2,c:0}241 ];242 var typeFirst4_1 = 0;243 var typeRoate4_2 = [244 [4,0,0,0],245 [3,2,1,0],246 [0,0,0,0],247 [0,0,0,0]];248 var typeRoateXY4_2 = [249 {r:0,c:0},250 {r:1,c:2}, 251 {r:1,c:1},252 {r:1,c:0},253 {r:0,c:0}254 ];255 var typeFirst4_2 = 0;256 var typeRoate4_3 = [257 [3,4,0,0],258 [2,0,0,0],259 [1,0,0,0],260 [0,0,0,0]];261 var typeRoateXY4_3 = [262 {r:0,c:0},263 {r:2,c:0}, 264 {r:1,c:0},265 {r:0,c:0},266 {r:0,c:1}267 ];268 var typeFirst4_3 = 3;269 var typeRoate4_4 = [270 [1,2,3,0],271 [0,0,4,0],272 [0,0,0,0],273 [0,0,0,0]];274 var typeRoateXY4_4 = [275 {r:0,c:0},276 {r:0,c:0}, 277 {r:0,c:1},278 {r:0,c:2},279 {r:1,c:2}280 ];281 var typeFirst4_4 = 2;282 var typeRoate4 = [typeRoate4_1,typeRoate4_2,typeRoate4_3,typeRoate4_4];283 var typeRoateXY4 = [typeRoateXY4_1,typeRoateXY4_2,typeRoateXY4_3,typeRoateXY4_4];284 var typeFirst4 = [typeFirst4_1,typeFirst4_2,typeFirst4_3,typeFirst4_4];285 // Z zi286 var type5_1 = [287 [1,1,0,0],288 [0,1,1,0],289 [0,0,0,0],290 [0,0,0,0]];291 var type5_2 = [292 [0,1,0,0],293 [1,1,0,0],294 [1,0,0,0],295 [0,0,0,0]];296 var type5 = [type5_1,type5_2];297 var typeRoate5_1 = [298 [1,2,0,0],299 [0,3,4,0],300 [0,0,0,0],301 [0,0,0,0]];302 var typeRoateXY5_1 = [303 {r:0,c:0},304 {r:0,c:0}, 305 {r:0,c:1},306 {r:1,c:1},307 {r:1,c:2}308 ];309 var typeFirst5_1 = 1;310 var typeRoate5_2 = [311 [0,1,0,0],312 [3,2,0,0],313 [4,0,0,0],314 [0,0,0,0]];315 var typeRoateXY5_2 = [316 {r:0,c:0},317 {r:0,c:1}, 318 {r:1,c:1},319 {r:1,c:0},320 {r:2,c:0}321 ];322 var typeFirst5_2 = 1;323 var typeRoate5_3 = [324 [4,3,0,0],325 [0,2,1,0],326 [0,0,0,0],327 [0,0,0,0]];328 var typeRoateXY5_3 = [329 {r:0,c:0},330 {r:1,c:2}, 331 {r:1,c:1},332 {r:0,c:1},333 {r:0,c:0}334 ];335 var typeFirst5_3 = 1;336 var typeRoate5_4 = [337 [0,4,0,0],338 [2,3,0,0],339 [1,0,0,0],340 [0,0,0,0]];341 var typeRoateXY5_4 = [342 {r:0,c:0},343 {r:2,c:0}, 344 {r:1,c:0},345 {r:1,c:1},346 {r:0,c:1}347 ];348 var typeFirst5_4 = 1;349 var typeRoate5 = [typeRoate5_1,typeRoate5_2,typeRoate5_3,typeRoate5_4];350 var typeRoateXY5 = [typeRoateXY5_1,typeRoateXY5_2,typeRoateXY5_3,typeRoateXY5_4];351 var typeFirst5 = [typeFirst5_1,typeFirst5_2,typeFirst5_3,typeFirst5_4];352 // ~Z zi353 var type6_1 = [354 [0,1,1,0],355 [1,1,0,0],356 [0,0,0,0],357 [0,0,0,0]];358 var type6_2 = [359 [1,0,0,0],360 [1,1,0,0],361 [0,1,0,0],362 [0,0,0,0]];363 var type6 = [type6_1,type6_2];364 var typeRoate6_1 = [365 [0,3,4,0],366 [1,2,0,0],367 [0,0,0,0],368 [0,0,0,0]];369 var typeRoateXY6_1 = [370 {r:0,c:0},371 {r:1,c:0}, 372 {r:1,c:1},373 {r:0,c:1},374 {r:0,c:2}375 ];376 var typeFirst6_1 = 1;377 var typeRoate6_2 = [378 [1,0,0,0],379 [2,3,0,0],380 [0,4,0,0],381 [0,0,0,0]];382 var typeRoateXY6_2 = [383 {r:0,c:0},384 {r:0,c:0}, 385 {r:1,c:0},386 {r:1,c:1},387 {r:2,c:1}388 ];389 var typeFirst6_2 = 1;390 var typeRoate6_3 = [391 [0,2,1,0],392 [4,3,0,0],393 [0,0,0,0],394 [0,0,0,0]];395 var typeRoateXY6_3 = [396 {r:0,c:0},397 {r:0,c:2}, 398 {r:0,c:1},399 {r:1,c:1},400 {r:1,c:0}401 ];402 var typeFirst6_3 = 1;403 var typeRoate6_4 = [404 [4,0,0,0],405 [3,2,0,0],406 [0,1,0,0],407 [0,0,0,0]];408 var typeRoateXY6_4 = [409 {r:0,c:0},410 {r:2,c:1}, 411 {r:1,c:1},412 {r:1,c:0},413 {r:0,c:0}414 ];415 var typeFirst6_4 = 1;416 var typeRoate6 = [typeRoate6_1,typeRoate6_2,typeRoate6_3,typeRoate6_4];417 var typeRoateXY6 = [typeRoateXY6_1,typeRoateXY6_2,typeRoateXY6_3,typeRoateXY6_4];418 var typeFirst6 = [typeFirst6_1,typeFirst6_2,typeFirst6_3,typeFirst6_4];419 // T zi420 var type7_1 = [421 [1,1,1,0],422 [0,1,0,0],423 [0,0,0,0],424 [0,0,0,0]];425 var type7_2 = [426 [0,1,0,0],427 [1,1,0,0],428 [0,1,0,0],429 [0,0,0,0]];430 var type7_3 = [431 [0,1,0,0],432 [1,1,1,0],433 [0,0,0,0],434 [0,0,0,0]];435 var type7_4 = [436 [1,0,0,0],437 [1,1,0,0],438 [1,0,0,0],439 [0,0,0,0]];440 var type7 = [type7_1,type7_2,type7_3,type7_4];441 var typeRoate7_1 = [442 [1,2,3,0],443 [0,4,0,0],444 [0,0,0,0],445 [0,0,0,0]];446 var typeRoateXY7_1 = [447 {r:0,c:0},448 {r:0,c:0}, 449 {r:0,c:1},450 {r:0,c:2},451 {r:1,c:1}452 ];453 var typeFirst7_1 = 2;454 var typeRoate7_2 = [455 [0,1,0,0],456 [4,2,0,0],457 [0,3,0,0],458 [0,0,0,0]];459 var typeRoateXY7_2 = [460 {r:0,c:0},461 {r:0,c:1}, 462 {r:1,c:1},463 {r:2,c:1},464 {r:1,c:0}465 ];466 var typeFirst7_2 = 2;467 var typeRoate7_3 = [468 [0,4,0,0],469 [3,2,1,0],470 [0,0,0,0],471 [0,0,0,0]];472 var typeRoateXY7_3 = [473 {r:0,c:0},474 {r:1,c:2}, 475 {r:1,c:1},476 {r:1,c:0},477 {r:0,c:1}478 ];479 var typeFirst7_3 = 0;480 var typeRoate7_4 = [481 [3,0,0,0],482 [2,4,0,0],483 [1,0,0,0],484 [0,0,0,0]];485 var typeRoateXY7_4 = [486 {r:0,c:0},487 {r:2,c:0}, 488 {r:1,c:0},489 {r:0,c:0},490 {r:1,c:1}491 ];492 var typeFirst7_4 = 2;493 var typeRoate7 = [typeRoate7_1,typeRoate7_2,typeRoate7_3,typeRoate7_4];494 var typeRoateXY7 = [typeRoateXY7_1,typeRoateXY7_2,typeRoateXY7_3,typeRoateXY7_4];495 var typeFirst7 = [typeFirst7_1,typeFirst7_2,typeFirst7_3,typeFirst7_4];496 497 var typeLst = [type1,type2,type3,type4,type5,type6,type7];498 var typeRoateLst = [typeRoate1,typeRoate2,typeRoate3,typeRoate4,typeRoate5,typeRoate6,typeRoate7];499 var typeRoateXYLst = [typeRoateXY1,typeRoateXY2,typeRoateXY3,typeRoateXY4,typeRoateXY5,typeRoateXY6,typeRoateXY7];500 var typeFirst = [typeFirst1,typeFirst2,typeFirst3,typeFirst4,typeFirst5,typeFirst6,typeFirst7];
XXXEntity等,懒得贴了。。。
---
CSDN下载:
http://download.csdn.net/detail/wangxsh42/8391881
0 0
- [原创]html5_PC游戏_图片俄罗斯方块
- (原创)一种用C#编写俄罗斯方块游戏的方法
- 俄罗斯方块游戏
- 俄罗斯方块游戏
- 俄罗斯方块游戏
- 俄罗斯方块游戏
- [原创]html5游戏_五线谱打音符
- unity3D游戏开发实战原创视频讲座系列1之3D俄罗斯方块开发
- CFF_201604-2_俄罗斯方块
- [原创]MFC实现的俄罗斯方块
- android 俄罗斯方块源码(原创)
- 一个俄罗斯方块游戏源程序
- [JAVA] 俄罗斯方块游戏
- [JAVA] 俄罗斯方块游戏
- 一个俄罗斯方块游戏
- [JAVA] 俄罗斯方块游戏
- javascript游戏-- 俄罗斯方块 源代码
- 【游戏】JavaScript 版俄罗斯方块
- UVa 1589(HDU 4121)
- [NodeJs]入门经典
- [NodeJs]Node Packaged Modules(NPM)
- [nodejs][html5][css3][js] 个人网站上线
- [C#]多线程下载
- [原创]html5_PC游戏_图片俄罗斯方块
- [原创]winform_PC宴会图片抽奖/文字抽奖
- [JS]正则量词的贪婪、惰性
- [模仿][JS]新浪财经7*24直播
- [经验][JS]如何观察网站,进而模仿
- [原创]html5游戏_五线谱打音符
- 一个Jsp页面有两个window.onload的解决方法
- layout_gravity gravity失效
- os.path.abspath 源码分析