我的大学

用JS画一个Scrabble的棋盘

2020-08-05  本文已影响0人  Raow1

棋盘的样式以及代码均参考了https://github.com/amnond/jscrab上的内容。
后续再更新常规棋盘的JS代码。

<!DOCTYPE html>
<html lang="en" >
<head>
  <meta charset="UTF-8">
  <title>Scrabble playing board</title>
  <style>
    table.board {
        table-layout:fixed;
    }
    td {
    background-color:#e0e0b0;
    width:50px;
    height:50px;
    }
  </style>

</head>
<body>
<!-- partial:index.partial.html -->
<div id="uidiv"></div>
<!-- partial -->
  <script>
    var mults = ["","DL","TL","DW","TW"];
    var mult="";
    var html="";
    var bx=15;
    var by=15;
    
    function BonusesLayout()
    {
        var self = this;
        self.boardm = [];
        self.init = function(bx, by)
        {
            self.bx = bx;
            self.by = by;
    
            var i,j;
            for (i=0; i<bx; i++) {
                self.boardm[i] = [];
                for (j=0; j<by; j++)
                    self.boardm[i][j] = 0;
            }
    
            var midx = Math.floor(bx/2);
            var midy = Math.floor(by/2);
            for (i=0; i<midx; i++)
                for (j=0; j<midy; j++) {
                    var dist = bx*by-i-j;
                    if (dist%8===0)
                        self.setquad(i, j, 1); // DL
                    else
                    if (dist%11===0)
                        self.setquad(i, j, 2); // TL
                    else
                    if (dist%7===0)
                        self.setquad(i, j, 3); // DW
                }
    
            self.setquad( midx, 0, 3 );
            self.setquad( 0, midy, 3 );
            self.setquad( 4, 0, 4 );
            self.setquad( 0, 1, 4 );
            self.setquad( 4, 4, 0 );
            self.setquad( 1, 2, 0 );
            self.setquad( 2, 1, 0 );
            self.setquad( 1, 1, 3 );
            self.setquad( 4, 1, 0 );
            self.setquad( 6, 5, 2 );
            self.setquad( 8, 2, 0 );
            self.setquad( 2, 6, 0 );
            self.setquad( 4, 7, 3 );
    
            return self.boardm;
        };
    
        self.setquad = function(x, y, s)
        {
            var x1 = x;
            var y1 = y;
            var x2 = self.bx - x - 1;
            var y2 = self.by - y - 1;
            //logit([x1,y1,x2,y2]);
            self.boardm[x1][y1] = s;
            self.boardm[x1][y2] = s;
            self.boardm[x2][y1] = s;
            self.boardm[x2][y2] = s;
        };
    }
    
    var g_boardm = new BonusesLayout();
    var boardm= g_boardm.init(bx,by);
    
    
    html += "<table class='board' id='PlayBoard'>";
    for (i=0;i<by;i++) {
    html += "<tr>";
    for (j=0;j<bx;j++) {
        html += "<td> ";
        if (i==7 && j==7)
        mult = "ST";
        else
        mult = mults[boardm[j][i]];
        if (mult !== "")
        mult = "<img src='https://github.com/amnond/jscrab/blob/master/pics/"+mult+".png?raw=true' alt='ImgUnload' width='50' height='50'>";
        html += mult + "</td>";
    }
    html += "</tr>";
    }
    html += "</table>";
    
    document.getElementById('uidiv').innerHTML=html;
  </script>

</body>
</html>

效果图
上一篇 下一篇

猜你喜欢

热点阅读