悔棋的实现
通过这个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; } });