使用Poker.js在html页面上绘制扑克牌

今天研究了下Poker.js,Poker.js是通过扩展HTML5 Canvas实现的画扑克牌的JS库。

Poker.js下载地址:https://github.com/Tairraos/Poker.JS

如要使用Poker.js,从github下载代码后,直接引用release目录下的poker.min.js即可。

以下代码使用Chrome浏览器运行,Chrome浏览器版本号为:52.0.2743.116 m

测试代码1:在随机位置放置随机大小的54张纸牌

html代码如下:

<html>
  <head>
    <title>Poker.js测试</title>
  </head>
  <body>
    <div id="container">
      &nbsp;
    </div>
  </body>
  <script src="./poker.min.js"></script>
  <script>

    if (window.Poker) {

        var container = document.getElementById('container');
        var domCanvas = document.createElement('canvas');
        var canvas = domCanvas.getContext('2d');
        var param = {};
        container.appendChild(domCanvas);

        var min_w = 0;
        var max_w = 1000;
        var min_h = 0;
        var max_h = 400;
        var min_size = 50;
        var max_size = 200;

        domCanvas.height = max_h + 200;
        domCanvas.width = max_w + 200;

        function getRandom(left, right) {
            return Math.floor(Math.random() * (right - left) + left);
        }
        
        var suits = ['hearts', 'diamonds', 'spades', 'clubs'];
        var points = ['a', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'j', 'q', 'k'];
        
        //随机生成52张牌
        for (var i in suits) {
            for (var j in points) {
                var w = getRandom(min_w, max_w);
                var h = getRandom(min_h, max_h);
                var size = getRandom(min_size, max_size);
                canvas.drawPokerCard(w, h, size, suits[i], points[j]);
            }
        }

        //小王
        var w1 = getRandom(min_w, max_w);
        var h1 = getRandom(min_h, max_h);
        var size1 = getRandom(min_size, max_size);
        canvas.drawPokerCard(w1, h1, size1, 'spades', 'joker');

        //大王
        var w2 = getRandom(min_w, max_w);
        var h2 = getRandom(min_h, max_h);
        var size2 = getRandom(min_size, max_size);
        canvas.drawPokerCard(w2, h2, size2, 'hearts', 'joker');

    } else {
        document.body.innerHTML = 'This browser does not support canvas.';
    }

  </script>
</html>

测试代码2:模拟Windows纸牌游戏发牌

html代码如下:

<html>
  <head>
    <title>Poker.js测试</title>
  </head>
  <body bgcolor="green">
    <div id="container">
      &nbsp;
    </div>
  </body>
  <script src="./poker.min.js"></script>
  <script>

    if (window.Poker) {

        var container = document.getElementById('container');
        var domCanvas = document.createElement('canvas');
        var canvas = domCanvas.getContext('2d');
        var param = {};
        container.appendChild(domCanvas);

        domCanvas.height = 600;
        domCanvas.width = 1000;

        function getRandom(left, right) {
            return Math.floor(Math.random() * (right - left) + left);
        }

        var suits = ['hearts', 'diamonds', 'spades', 'clubs'];
        var points = ['a', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'j', 'q', 'k'];
        
        //绘制左上角牌堆
        for (var i = 0; i < 3; i++) {
            canvas.drawPokerBack(300 - 120 + i * 5, 80, 120, '#5C72C2', '#2B4299');
        }
        
        //绘制背面向上的牌
        for (var i = 0; i < 6; i++) {
            for (var j = 0; j <= i; j++) {
                canvas.drawPokerBack(300 + i * 120, 220 + j * 10, 120, '#5C72C2', '#2B4299');
            }
        }

        //绘制明牌(不能重复)
        var cards = [];
        for (var i = 0; i < 7; i++) {
            var isLegal = true;
            var suit;
            var point;
            do {
                suit = getRandom(0, 4);
                point = getRandom(0, 13);
                for (var j = 0; j < i; j++) {
                    if (cards[j][0] == suit && cards[j][1] == point) {
                        isLegal = false;
                    }
                }
            } while (!isLegal);
            cards[i] = [suits[suit], points[point]];
            canvas.drawPokerCard(300 - 120 + i * 120, 220 + j * 10, 120, cards[i][0], cards[i][1]);
        }

        //绘制右上角四个置牌点
        canvas.strokeStyle='#FFFFFF';
        canvas.lineWidth=5;
        canvas.strokeRect(545, 80, 80, 110);
        canvas.strokeRect(545 + 120, 80, 80, 110);
        canvas.strokeRect(545 + 120 * 2, 80, 80, 110);
        canvas.strokeRect(545 + 120 * 3, 80, 80, 110);

    } else {
        document.body.innerHTML = 'This browser does not support canvas.';
    }

  </script>
</html>

END

转载于:https://my.oschina.net/Tsybius2014/blog/738516

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值