悔棋的实现

梦想游戏人
目录:
Cocos2dx

通过这个stack来实现,每走一步 push 棋盘,

/**
 * map stack is provide a stack to regret
 */



MAX_STEP = 4;// max step of stack save map
// you can change value to modify the stack capacity

var MapStack = cc.Class.extend({
    stack: null,//inner data structrue
    index: null,// cursor of stack
    ctor: function () {
        this.stack = new Array(MAX_STEP);
        this.index = 0;
        for (var i = 0; i < MAX_STEP; i++) this.stack[i] = 0;

    },
    
    /** clear the stack
     * @warning this will not remove data so,please use pop or 
         * push to operation this stack not use this.stack...
     * */
    clear: function () {
        this.index = 0;
    },
    
    /** push a member into stack
     * @param arg the member
     * @warning please use deep copy to push member
     */
    push: function (arg) {
        if (this.index == MAX_STEP) {// full
            for (var i = 0; i < MAX_STEP - 1; i++) {
                this.stack[i] = this.stack[i + 1];
            }
            this.index = MAX_STEP - 1;
        }
        
        this.stack[this.index] = arg;
        this.index++;
        cc.log("map stack push:" + arg);

    },
    /**pop a member and return the member which is pop
     * @return member which is pop
     */
    pop: function () {
        if (this.index > 0) {
            var ret = this.stack[this.index - 1];
            this.index--;
            return ret;
        }
        return null;
    },
    /**return the stack'stop member
     * @return the top member of the stack's top
     */
    top: function () {
        if (this.index > 0) return this.stack[this.index - 1];
        return null;
    }
});
Scroll Up