웹페이지 2048

46102 단어 js전단 학습
웹 페이지 버 전 2048
가장 통속 적 이 고 알 기 쉬 운 js 가 쓴 것 입 니 다. 뭔 가 를 배 웠 습 니 다. 기록 하 세 요. - 홈 페이지 에서 마우스 의 미끄럼 방향 을 어떻게 판단 하 는 지, 마우스 이벤트: mousedown, mouseup, mousemove * 브 라 우 저 해상 도 는 적합 하지 않 습 니 다. js 코드 도 봉인 되 지 않 았 습 니 다. 후기 에 포장 할 수 있 습 니 다. 마침 js 기초 연습 을 했 습 니 다.
부호 블록

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>doctitle>
    <script src="./js/jquery-1.8.3.min.js">script>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        body{
            font-family: "    ";
            font-size: 16px;
        }
        .page{
            width: 350px;
            height: 500px;
            background-color: #faf7ee;
        }
        .titleLeft{
            float: left;
            width: 40%;
            margin-top: .2em; 
            margin-left: 2.5em; 
        }
        .title{
            font-size: 2.6em;   
            margin: .1em;
        }
        .start{
            background-color: #baaea0;
            color: #fff;
            font-size: 1.4em;
            font-weight: 600;
            line-height: 1.8;
            width: 5em;
            text-align: center;
            border-radius: .3em;
            cursor: pointer;
        }
        .titleRight{
            margin-top: 1.2em;
            margin-right: 1.5em;
            width: 30%;
            padding:.5em;
            float: right;
            background-color: #cdc3b7;
            border-radius: .5em;    
        }
        .score{
            font-size: 1.6em;
            font-weight: 600;
            text-align: center;
        }
        /*  */
        .gameBox{
            background-color: #baaea0;
            margin: 2em auto;
            padding: .5em 0;
            width: 92%;
            border-radius: .5em; 
            /*    */
            moz-user-select: -moz-none; 
            -moz-user-select: none; 
            -o-user-select:none; 
            -khtml-user-select:none; 
            -webkit-user-select:none; 
            -ms-user-select:none; 
            user-select:none;
        }
        .item{
            width: 4.2em;
            height: 4.2em;
            margin: .2em;
            border-radius: .5em;
            font-size: 1em;
            background-color: #cdc1b3;
            display: inline-block;
            text-align: center;
            vertical-align: middle;
            position: relative;
        }
        .item:nth-of-type(4n+1){
            margin-left: .6em; 
        }
        .cell{
            font-size: 3em;
            position: absolute;
            top: 50%;
            left: 50%;
            width: 100%;
            transform: translate(-50%,-50%);
            text-align: center; 
        }
        .numBgc{
            background-color: #eee4da;
        }
    style>
head>
<body>
    <div class="page" id="page">
        <div class="titleBox">
            <div class="titleLeft">
                <h1 class="title">2048h1>
                <div class="start" id="start">    div>    
            div>
            <div class="titleRight">
                <p class="score" style="color: #9b9388">scorep>
                <p class="score" id="score" style="color: #fff;">0p>
            div>
            <div style="clear: both;">div>
        div>
        <div class="gameBox" id="gameBox">
            <div class="item"><span class="cell">span>div>
            <div class="item"><span class="cell">span>div>
            <div class="item"><span class="cell">span>div>
            <div class="item"><span class="cell">span>div>
            <div class="item"><span class="cell">span>div>
            <div class="item"><span class="cell">span>div>
            <div class="item"><span class="cell">span>div>
            <div class="item"><span class="cell">span>div>
            <div class="item"><span class="cell">span>div>
            <div class="item"><span class="cell">span>div>
            <div class="item"><span class="cell">span>div>
            <div class="item"><span class="cell">span>div>
            <div class="item"><span class="cell">span>div>
            <div class="item"><span class="cell">span>div>
            <div class="item"><span class="cell">span>div>
            <div class="item"><span class="cell">span>div>
        div>
    div>
    <script>
        var cell = [[0,0,0,0],
                    [0,0,0,0],
                    [0,0,0,0],
                    [0,0,0,0]];
        var cellEmpty=[];
        var direction="0";
        var score=0;

        //        
        function signCellEmpty(){
            cellEmpty=[];
            for(var i=0;ifor(var j=0;jif(cell[i][j]==0){
                        cellEmpty.push([i,j]);
                    }
                }
            }
            if(cellEmpty.length<=0) return false;
            return true;
        }
        //            
        function selCellEmpty(){
            return Math.floor(Math.random()*cellEmpty.length);
        }
        //        
        function setCell(posi,num){
            var posX=cellEmpty[posi][0];
            var posY=cellEmpty[posi][1];
            console.log("        :"+posi);
            console.log("     2  4:"+num);
            cell[posX][posY]=num;
            console.log(cell.toString())
        }
        //     2  4
        function generateNum(){
            return Math.random()<0.8?2:4;
        }

        //      
        function generate2Num(){
            for(var i=0;i<2;i++){
                signCellEmpty();
                if(cellEmpty.length>0){
                    setCell(selCellEmpty(),generateNum());  
                }else{
                    return false;
                }
            }
            return true;
        }

        //   :           UI 
        function renderUI(){
            var cellFill=cell.toString().split(',');
            $.each(cellFill,function(index,val){
                $(".cell:eq("+index+")").text("");
                $(".item:eq("+index+")").css("background-color","#cdc1b3");
                $(".cell:eq("+index+")").css("font-size","3em");
                if(val!=0){
                    $(".cell:eq("+index+")").text(val);
                    //             
                    var bgc="";
                    var fontSize="3em";
                    switch(parseInt(val,10)){
                        case 2:bgc="#FFCC99";break;
                        case 4:bgc="#FFFF99";break;
                        case 8:bgc="#FF9966";break;
                        case 16:bgc="#FFFFCC";break;
                        case 32:bgc="#FFFF00";break;
                        case 64:bgc="#CCCC33";break;
                        case 128:bgc="#FF9900";fontSize="2.2em";break;
                        case 256:bgc="#FFCCCC";fontSize="2.2em";break;
                        case 512:bgc="#FF6666";fontSize="2.2em";break;
                        case 1024:bgc="#FF0033";fontSize="1.8em";break;
                        case 2048:bgc="#CC3333";fontSize="1.8em";break;
                        case 4096:bgc="#993333";fontSize="1.8em";break;
                        case 8192:bgc="#FFCC33";fontSize="1.8em";break;
                        default: bgc="#ff0000";
                    }
                    $(".item:eq("+index+")").css("background-color",bgc);
                    $(".cell:eq("+index+")").css("font-size",fontSize);
                    $("#score").text(score);
                }
            });

        }


        //    :   0                
        function changeCell(){ 
            var cellNew=[[0,0,0,0],
                      [0,0,0,0],
                      [0,0,0,0],
                      [0,0,0,0]];
            var i=0,j=0,iNew=0,jNew=0;
            var row=0,col=0,rowNew=0,colNew=0;
            for(i=0;i<4;i++){
                jNew=0;
                for(j=0;j<4;j++){
                    switch(direction){
                        case "left": 
                            row=i;col=j;rowNew=iNew;colNew=jNew;break;
                        case "right": 
                            row=i;col=3-j;rowNew=iNew;colNew=3-jNew;break;
                        case "up": 
                            row=j;col=i;rowNew=jNew;colNew=iNew;break;
                        case "down": 
                            row=3-j;col=i;rowNew=3-jNew;colNew=iNew;break;
                        default: break;
                    }
                    if(cell[row][col]!=0){
                        cellNew[rowNew][colNew]=cell[row][col];
                        jNew++;
                    }
                }
                iNew++;
            }
            return cellNew;
        }
        //      
        function combineNum(){
            var row=0,col=0,rowNearby=0,colNearby=0;
            for(var i=0;i<4;i++){
                for(var j=0;j<3;j++){
                    switch(direction){
                        case "left": 
                            row=i;col=j;rowNearby=i;colNearby=j+1;break;
                        case "right": 
                            row=i;col=3-j;rowNearby=i;colNearby=3-(j+1);break;
                        case "up": 
                            row=j;col=i;rowNearby=j+1;colNearby=i;break;
                        case "down": 
                            row=3-j;col=i;rowNearby=3-(j+1);colNearby=i;break;
                        default: break;
                    }
                    if(cell[row][col]!=0){
                        if(cell[row][col]==cell[rowNearby][colNearby]){
                            cell[row][col]=cell[row][col]*2;
                            score+=cell[row][col];
                            cell[rowNearby][colNearby]=0;
                        }
                    }
                }
            }
            return cell;
        }

        //     :     ,       (       )
        function isOver(){
            signCellEmpty();
            if(cellEmpty.length>0) return false;
            for (var i = 0; i < 4; i++) {
                for (var j = 0; j < 3; j++) {
                    if(cell[i][j]==cell[i][j+1]) return false;
                    if(cell[j][i]==cell[j+1][i]) return false;
                }
            }
            return true;
        }
        function play(){
                //        ,    
            $("#gameBox").mousedown(function(e){
                e.preventDefault();
                startX=e.pageX;
                startY=e.pageY;
                X=0;Y=0;
                $(this).mousemove(function(e){
                    e.preventDefault();
                    moveEndX=e.pageX;
                    moveEndY=e.pageY;
                    X=moveEndX-startX;
                    Y=moveEndY-startY;
                    if(Math.abs(X)>Math.abs(Y)){
                        if(X>0){
                            direction="right";
                        }else{
                            direction="left";
                        }
                    }else{
                        if(Y>0){
                            direction="down";
                        }else{
                            direction="up";
                        }
                    }

                });
            }).mouseup(function(){
                if(Math.abs(X)>20||Math.abs(Y)>20){//  :        mousemove  
                    console.log("X:"+X+"   Y:"+Y);
                    console.log("  ======================================:"+direction);
                    if(direction!="0"){
                        console.log("  :"+cell.toString());

                        cell=changeCell();
                        console.log("    :"+cell.toString());

                        combineNum();
                        console.log("    :"+cell.toString());

                        cell=changeCell();
                        console.log("      :"+cell.toString());

                        if(isOver()){
                            alert("Game Over!")
                        }else{
                            generate2Num();
                        }
                        console.log("        :"+cell.toString())

                        //  UI
                        renderUI();
                    }
                }   
            });

        }

        $("#start").click(function(){
            cell = [[0,0,0,0],
                    [0,0,0,0],
                    [0,0,0,0],
                    [0,0,0,0]];
            renderUI();
            generate2Num();
            renderUI();
            play();
            $(this).text("    ");
        })
    script>
body>
html>

좋은 웹페이지 즐겨찾기