[html] <머리> 俄罗斯方块 <br> 본문{ 너비:530px; 배경:#F7F7F7; margin:20px auto} <br> table#gameBoard{ border:1px solid black; 국경 붕괴: 붕괴; float:left;} <br> table#gameBoard td{ width:30px; 높이:30px; 테두리: 1px 점선 #0cc;} <br> div#gameControl{windows:160; 플로트:오른쪽; 높이: 200px;; 줄 높이: 200px;} <br> .font{ 글꼴 계열:'微软雅黑'; 글꼴 크기:18px; text-align:center;} <br> div 입력 { 너비: 60px; 높이:25px; } <br> <br> <br> <br> <br> var T = TETRIS = { <br> aBoardGrids : [], <br> aShapes: [ <br> [0xCC00], <br> [0x8888, 0xF00], <br> [0x8C40 , 0x6C00], <br> [0x4C80, 0xC600], <br> [0x44C0, 0x8E00, 0xC880, 0xE200], <br> [0x88 C0, 0xE800, 0xC440, 0x2E00], <br> [0x4E00, 0x8C80, 0xE400, 0x4C40 ] <br> ], //대형 방식의 다양한 형태의 형태 <br> init : function(){ <br> this.oDomBoard = document.getElementById("gameBoard"); <br> this.oDomScore = document.getElementById("score"); <br> this.aBoardGrids = new Array(18); <br> for (var 행 = 0 ; 행 < 18 ; 행++){ <br/> this.aBoardGrids[rows] = new Array(10); <br/> var oDomTr = this.oDomBoard.insertRow(-1); <br/> for (var cols = 0 ; cols < 10 ; cols++){ <br/> this.aBoardGrids[rows][cols] = 0; <br/> oDomTr.insertCell(cols); <br/> } <br/> } <br/> <br/> document.onkeydown = function(keyEvent){ <br/> keyEvent = keyEvent || 창.이벤트; <br/> var ikeyNum = keyEvent.which || keyEvent.keyCode; <br/> 스위치(ikeyNum){ <br/> 케이스 37://← <br/> T.oBlock.move("왼쪽"); <br/> 휴식; <br/> 사례 38://↑ <br/> T.oBlock.rotate((function (){ <br/> vShape = T. aShapes[T.iShapeIdx][ (++T.index)%T.aShapes[ T.iShapeIdx].length]; <br/> var sShape = vShape.toString(2); sShape = new Array(17 - sShape.length).join(0) + sShape; <br/> T.matrix = sShape.match(/d{4}/g); <br/> T.matrix 반환; <br/> })()) //형상 <br/> break; <br/> 사례 39://→ <br/> T.oBlock.move("right"); <br/> 휴식; <br/> 사례 40://↓ <br/> T.oBlock.move("down"); <br/> 휴식; <br/> } <br/> } <br/> }, <br/> 다음 : 기능 (){ <br/> <br/> this.iShapeI dx = parsInt(Math.random() * this.aShapes.length); <br/> this.index = 0; <br/> var vShape = this.aShapes[this.iShapeIdx][this.index]; <br/> var sShape = vShape.toString(2); //将16进 제어 장치 换为 2 장치 제조 <br/> sShape = new Array(17 - sShape.length).join(0) + sShape; //不够16位,앞면 사용0补전체 <br/>this.matrix = sShape.match(/d{4}/g); //정규식 일치 사용 <br/> <br/> this.oBlock = new TETRIS.Block(this.matrix) <br/> clearInterval(T. 타이머); <br/> > ~ > > i].x] = 1; > for(var j = 17; j >= 0; j--){ <br> var num = 0 <br> for(var i = 0; i< 10; i++ ){ <br/> if(this .aBoardGrids[j][i] == 1) <br/> num ++ <br/> } <br/> if(num == 10){ <br/> iLines ++; 🎜> for(var m = 0 ; m & lt; m ++) {<br/> for (var n = j; n & gt; 0; n-) {<br/> this.aboardgrids [n] [m] = this.aboardgrids [n-] [m]; <br/> T.oDomBoard.rows[n].cells[m].style.Background = T.oDomBoard.rows[n-1].cells[m].style .배경; <br/> <br/> this.aBoardGrids[0][m] = 0; j++; <br/> } <br/> } <br/> iLines 반환; <br/> }, <br/> setScore : function (iLines){ <br/> var iScore =parseInt(this.oDomScore.innerHTML); <br/> if(iLines == 1){ <br/> iScore += 100; <br/> } else if(iLines == 2){ <br/> iScore += 300; <br/> } else if(iLines == 3){ <br/> iScore += 500; <br/> } else if(iLines == 4){ <br/> iScore += 1000; <br/> } <br/> this.oDomScore.innerHTML = iScore; <br/> } <br/> } <br/> <br/> TETRIS.Block = 함수(행렬){ <br/> <br/> this.shape = (함수(){ <br/> <br/> var aShape = []; <br/> for(var i = 0 ; i < Matrix.length ; i++){ <br/> var sValue = 매트릭스[i]; <br/> for(var j = 0 ; j < sValue.length ; j++) { <br/> if(sValue.charAt(j) == "1"){ <br/> aShape.push({ x : j+3 , y : i }); <br/> } <br/> } <br/> } <br/> <br/> return aShape; <br/> <br/> })(); <br/> this.draw(); <br/> } <br/> <br/> TETRIS.Block.prototype.move = 기능(방향){//移动 <br/> if(this.checkBlock(this.shape,direction)){ <br/> this.draw( "분명한"); <br/> for(var i = 0 ; i < 4 ; i++){ <br/> 스위치(방향){ <br/> 케이스 "왼쪽"://← <br/> this.shape[i].x-- ; <br/> 휴식; <br/> 대소문자 "맞음": <br/> this.shape[i].x++; <br/> 휴식; <br/> 대소문자 "아래로": <br/> this.shape[i].y++; <br/> 휴식; <br/> } <br/> } <br/> this.draw(); <br/> } else { <br/> if(방향 == "아래"){ <br/> this.draw(); <br/> T.updateBoard(); //새로운 화면 <br/> var iLines = T.eraseLines(); <br/> <br/> if(iLines > 0){ <br> <br> T.setScore(iLines); <br> <br> } <br> <br> T.next(); //再生成一个 새로운 방법 <br> } <br> } <br> <br> } <br> TETRIS.Block.prototype.rotate = 함수(행렬){//형 <br> <br> 이. 모양 = (함수(oBlock){ <br> <br> var aX = []; <br> var aY = []; <br> <br> for(var i = 0 ; i < 4 나++){ <br/> aX.push(oBlock.shape[i].x); <br/> aY.push(oBlock.shape[i].y); <br/> } <br/> var X = aX.getMin(); <br/> var iMinY = aY.getMin(); <br/> <br/> <br/> var aShape = []; <br/> for(var i = 0 ; i < 매트릭스.길이 ++){ <br/> var sValue = 행렬[i]; <br/> for(var j = 0 ; j < sValue.length ; j++){ <br/> if(sValue.charAt(j) == "1"){ <br/> aShape.push({ x : j+iMinX , y : i+iMinY }); <br/> } <br/> } <br/> } <br/> if( !( oBlock.checkBlock(aShape)) ) <br/> oBlock.shape를 반환합니다. <br/> oBlock.draw("clear"); <br/> aShape를 반환합니다. <br/> <br/> })(이것); <br/> <br/> this.draw(); <br/> } <br/> <br/> TETRIS.Block.prototype.draw = 기능(옵션){//绘图 <br/> for(var i = 0 ; i < this.shape.length ; i++){ <br/> var oShape = this.shape[i]; <br/> T.oDomBoard.rows[oShape.y].cells[oShape.x].style.Background = (opt==undefine?"#09F":""); <br/> } <br/> } <br/> TETRIS.Block.prototype.checkBlock = 기능(모양, 방향){ <br/> 모양 = 모양 || this.shape; <br/> for(var i = 0 ; i < 4 ; i++){ <br/> if(방향 == "왼쪽"){ <br/> if(shape[i].x == 0 || T.aBoardGrids [shape[i].y][shape[i].x - 1] == 1){ <br/> false를 반환합니다. <br/> } <br/> } else if(방향 == "오른쪽"){ <br/> if(shape[i].x == 9 || T.aBoardGrids[shape[i].y][shape[i] ].x + 1] == 1){ <br/> false를 반환합니다. <br/> } <br/> } else if(방향 == "아래로"){ <br/> if(shape[i].y == 17 || T.aBoardGrids[shape[i].y + 1][shape [i].x] ==1){ <br/> false를 반환합니다. <br/> } <br/> } <br/> if(shape[i].x < 0 || Shape[i].x > 9 || Shape[i].y < 0 || Shape[i] .y > 17) <br/> false를 반환합니다. <br/> if(T.aBoardGrids[shape[i].y][shape[i].x] == 1){ <br/> return false; <br/> } <br/> } <br/> true를 반환합니다. <br/> <br/> } <br/> Array.prototype.getMin = function (){ <br/> var iMin = this[0]; <br/> for(var i = 0 ; i < this.length ; i++){ <br/> if(this[i] < iMin) <br/> iMin = this[i]; <br/> } <br/> iMin을 반환합니다. <br/> } <br/> window.onload = function(){ <br/> <br/> T.init(); <br/> <br/> var oBtnPlay = document.getElementById("btnPlay"); <br/> oBtnPlay.onclick = function(){ <br/> if(this.value == "begin"){ <br/> T.next(); <br/> this.value = "over"; <br/> } else { <br/> this.value = "시작"; <br/> Alert("게임 오버~"); <br/> clearInterval(T.timer); <br/> } <br/> <br/> } <br/> var oBtnPause = document.getElementById("btnPause"); <br/> oBtnPause.onclick = function (){ <br/> if(this.value == "pause"){ <br/> clearInterval(T.timer); <br/> this.value = "이력서"; <br/> } else { <br/> T.timer = setInterval(function (){ <br/> T.oBlock.move("down"); <br/> }, 1 000); <br/> this.value = "pause"; <br/> } <br/> } <br/> <br/> } <br/> <br/> <본문> 점수 : 0 俄罗斯方块