javascript实现的棋牌类

转载 2013年12月04日 17:32:45

最近在学习javascript,感触良多,基本上很多以前学习过的思想都要进行打补丁了。

javascript才是真正达到了一切都是对象,一切都是数据的编程思想。不过目前各种浏览器标准不统一,所以还需要假以时日。相信以后会越来越强大。。


直接贴代码备忘

enumeration.js文件代码

/**
 * Created by watsy on 13-12-4.
 */

function inherit(p) {
    if (p == null) {
        throw new TypeError();
    }
    if (Object.create) {
        return Object.create(p);
    }
    var t = typeof p;
    if (t !== "object" && t !== "function") {
        throw new TypeError();
    }
    function F() {}
    F.prototype = p;
    return new F();
}

function enumeration(namesToValues) {
    var enumeration = function() { throw "Can't Instantiate Enumerations";  };

    var proto = enumeration.prototype = {
        constructor:    enumeration,
        toString:   function()  {   return  this.name;  },
        valueOf:    function()  {   return  this.value; },
        toJSON:     function()  {   return  this.name;  }
    };

    enumeration.values = [];

    //
    for (name in namesToValues) {
        var e = inherit(proto);
        e.name = name;
        e.value = namesToValues[name];
        enumeration[name] = e;
        enumeration.values.push(e);
    }

    enumeration.foreach = function (f, c) {
        for (var i = 0; i < this.values.length; i++) {
            f.call(c, this.values[i]);
        }
    };

    return enumeration;
}

Card.js 代码

/**
 * Created by watsy on 13-12-4.
 */

//include("enumeration.js");

function Card(suit, rank) {
    this.suit = suit;
    this.rank = rank;
}

Card.Suit = enumeration({Clubs:1, Diamonds:2, Hearts: 3, Spades: 4});
Card.Rank = enumeration({Two : 2, Three: 3, Four: 4, Five: 5, Six: 6,
    Seven: 7, Eight: 8, Nine: 9, Ten: 10, Jack: 11, Queen: 12, King: 13, Ace: 14});

Card.prototype.toString = function() {
    return this.rank.toString() + " of " + this.suit.toString();
};

Card.prototype.compareTo = function (that) {
    if (this.rank < that.rank) return -1;
    if (this.rank > that.rank) return 1;
    return 0;
};

Card.orderByRank = function (a, b) {    return a.compareTo(b);  };

Card.orderBySuit = function (a, b) {
    if (a.suit < b.suit)    return -1;
    if (a.suit > b.suit)    return 1;
    if (a.rank < b.rank)    return -1;
    if (a.rank > b.rank)    return 1;
    return 0;
};

function Deck() {
    var cards = this.cards = [];
    Card.Suit.foreach(
        function (s) {
            Card.Rank.foreach(
                function (r) {
                    cards.push(new Card(s, r));
                }
            );
        }
    );
}

Deck.prototype.shuffle = function () {
    var deck = this.cards, len = deck.length;

    for (var i = len - 1; i > 0; i--) {
        var r = Math.floor(Math.random() * (i + 1)), temp;
        temp = deck[i], deck[i] = deck[r], deck[r] = temp;
    }
    return this;
};

Deck.prototype.deal = function (n) {
    if (this.cards.length < n)  throw "Out ot cards";
    return this.cards.splice(this.cards.length - n, n);
};


调用代码

var deck = (new Deck()).shuffle();
        var hand = deck.deal(13).sort(Card.orderBySuit);
        console.log(hand.toString());




web socket+node.js+mysql实现网页在线对战棋牌游戏(超级适合情侣玩)

web socket+node.js+mysql实现网页在线对战棋牌游戏(超级适合情侣玩)
  • tx101q
  • tx101q
  • 2017年02月01日 21:53
  • 1234

node.js 棋牌算法(一)

麻将胡牌、听牌的算法,不过大家都知道,麻将各个地方的规则都不同,所以相关算法也需要作出一定的调整。 先简单说一下本次demo的规则要求把。 1.不计番,也就是没那么多胡法,最后胡了就行。 2.胡...
  • Chenxiaof
  • Chenxiaof
  • 2017年03月27日 10:03
  • 1829

android开发之网络棋牌类在线游戏开发心得(服务器端、Java)

转自:http://blog.csdn.net/bromon/article/details/253330 Bromon原创 请尊重版权 一个多人在线的棋牌类网络游戏的项目临近尾声,我参...
  • lihandsome
  • lihandsome
  • 2013年10月09日 17:28
  • 6647

web socket+node.js+mysql实现网页在线对战棋牌游戏(超级适合情侣玩)

web socket+node.js+mysql实现网页在线对战棋牌游戏(超级适合情侣玩)
  • tx101q
  • tx101q
  • 2017年02月01日 21:53
  • 1234

棋牌游戏开发之地主算法判断牌型

棋牌游戏开发疑问交流 QQ:325131039(勿发广告) 棋牌游戏开发技术交流群: 490287966(勿发广告)   ps: 本文转载自博主 wojiushi3344 ...
  • zikehaozhuang24
  • zikehaozhuang24
  • 2015年12月03日 11:47
  • 3504

非常优秀的棋牌类游戏源码,包含AI及机器人的难度调节算法

  • 2006年02月23日 09:05
  • 208KB
  • 下载

VC++MFC棋牌类游戏编程实例.rar

  • 2012年05月22日 14:36
  • 6.09MB
  • 下载

Android/iOS平台 联机(蓝牙+wifi)对战 棋牌类游戏

  • 2015年06月17日 01:20
  • 52.12MB
  • 下载

棋牌类游戏 21点

  • 2015年03月08日 22:53
  • 1.87MB
  • 下载

Visual C++MFC棋牌类游戏编程实例 PDF电子书加源代码.part2

  • 2013年08月06日 10:51
  • 55MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:javascript实现的棋牌类
举报原因:
原因补充:

(最多只允许输入30个字)