| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231 |
- var CGameLogic_21201 = cc.Class({
- ctor:function () {
- },
- //删除扑克
- RemoveCard2:function(cbCardIndex, cbRemoveCard){
- //删除扑克
- var cbRemoveIndex=this.SwitchToCardIndex(cbRemoveCard);
- if (cbCardIndex[cbRemoveIndex]>0){
- cbCardIndex[cbRemoveIndex]--;
- return true;
- }
- return false;
- },
- RemoveCard4:function(cbCardData, cbCardCount, cbRemoveCard, cbRemoveCount){
- //定义变量
- var cbDeleteCount=0;
- var cbTempCardData=new Array();
- if (cbCardCount>GameDef.MAX_COUNT) return false;
- for(var i=0;i<cbCardCount;++i) cbTempCardData[i]=cbCardData[i];
- //置零扑克
- for (var i=0;i<cbRemoveCount;i++){
- for (var j=0;j<cbCardCount;j++){
- if (cbRemoveCard[i]==cbTempCardData[j]){
- cbDeleteCount++;
- cbTempCardData[j]=0;
- break;
- }
- }
- }
- //成功判断
- if (cbDeleteCount!=cbRemoveCount) {
- if(window.LOG_NET_DATA)console.log('RemoveCard4 cbDeleteCount!=cbRemoveCount')
- return false;
- }
- //清理扑克
- var cbCardPos=0;
- for (var i=0;i<cbCardCount;i++){
- if (cbTempCardData[i]!=0)
- cbCardData[cbCardPos++]=cbTempCardData[i];
- }
- return true;
- },
- //有效判断
- IsValidCard:function(cbCardData){
- var cbValue=(cbCardData&GameDef.MASK_VALUE);
- var cbColor=(cbCardData&GameDef.MASK_COLOR)>>4;
- return (((cbValue>=1)&&(cbValue<=9)&&(cbColor<=2))||((cbValue>=1)&&(cbValue<=0x0f)&&(cbColor==3)));
- },
- //获取组合
- GetWeaveCard:function(wWeaveKind, cbCenterCard, cbCardBuffer){
- //组合扑克
- switch (wWeaveKind)
- {
- case GameDef.WIK_LEFT: //上牌操作
- {
- //设置变量
- cbCardBuffer[0]=cbCenterCard+1;
- cbCardBuffer[1]=cbCenterCard;
- cbCardBuffer[2]=cbCenterCard+2;
- return 3;
- }
- case GameDef.WIK_RIGHT: //上牌操作
- {
- //设置变量
- cbCardBuffer[0]=cbCenterCard-2;
- cbCardBuffer[1]=cbCenterCard;
- cbCardBuffer[2]=cbCenterCard-1;
- return 3;
- }
- case GameDef.WIK_CENTER: //上牌操作
- {
- //设置变量
- cbCardBuffer[0]=cbCenterCard-1;
- cbCardBuffer[1]=cbCenterCard;
- cbCardBuffer[2]=cbCenterCard+1;
- return 3;
- }
- case GameDef.WIK_PENG: //碰牌操作
- case GameDef.WIK_GANG_SP:
- {
- //设置变量
- cbCardBuffer[0]=cbCenterCard;
- cbCardBuffer[1]=cbCenterCard;
- cbCardBuffer[2]=cbCenterCard;
- return 3;
- }
- case GameDef.WIK_GANG: //杠牌操作
- {
- //设置变量
- cbCardBuffer[0]=cbCenterCard;
- cbCardBuffer[1]=cbCenterCard;
- cbCardBuffer[2]=cbCenterCard;
- cbCardBuffer[3]=cbCenterCard;
- return 4;
- }
- case GameDef.WIK_GANG_FENG:
- {
- cbCardBuffer[0]=0x31;
- cbCardBuffer[1]=0x32;
- cbCardBuffer[2]=0x33;
- cbCardBuffer[3]=0x34;
- return 4;
- }
- default:
- {
- //ASSERT(FALSE);
- }
- }
- return 0;
- },
- //填充扑克
- FillAllIndex:function(cbCardIndex, WeaveItem, cbWeaveCount){
- for(var i =0;i<cbWeaveCount;++i){
- for(var j=0;j<4;++j){
- if(WeaveItem[i].cbCardData[j]){
- cbCardIndex[this.SwitchToCardIndex(WeaveItem[i].cbCardData[j])]++;
- }
- }
- }
- },
- GetNextCardIndex:function(cbCardIndex){
- var cbCardColor = parseInt( cbCardIndex / 9 );
- var cbCardValue = cbCardIndex % 9;
- //东南西北 中发白
- if (cbCardColor == 3){
- if (cbCardValue == 3)//北
- cbCardValue = 0;//东
- else if (cbCardValue == 6)//白
- cbCardValue = 4;//中
- else
- cbCardValue++;
- }else{//1-9
- if (cbCardValue == 8)
- cbCardValue = 0;
- else
- cbCardValue++;
- }
- return cbCardColor * 9 + cbCardValue;
- },
- //扑克转换
- SwitchToCardData:function(cbCardIndex){
- if( cbCardIndex < 27 )
- return (parseInt(cbCardIndex/9)<<4)|(cbCardIndex%9+1);
- else return (0x30|(cbCardIndex-27+1));
- },
- //扑克转换
- SwitchToCardIndex:function(cbCardData){
- return ((cbCardData&GameDef.MASK_COLOR)>>4)*9+(cbCardData&GameDef.MASK_VALUE)-1;
- },
- //扑克转换
- SwitchToCardData2:function(cbCardIndex, cbCardData){
- //转换扑克
- var cbPosition=0;
- for (var i=0;i<GameDef.MAX_INDEX;i++){
- if (cbCardIndex[i]!=0){
- for (var j=0;j<cbCardIndex[i];j++){
- cbCardData[cbPosition++]=this.SwitchToCardData(i);
- }
- }
- }
- return cbPosition;
- },
- //扑克转换
- SwitchToCardIndex3:function(cbCardData, cbCardCount, cbCardIndex){
- for(var i=0;i<GameDef.MAX_INDEX;++i) cbCardIndex[i]=0;
- //转换扑克
- for (var i=0;i<cbCardCount;i++){
- cbCardIndex[this.SwitchToCardIndex(cbCardData[i])]++;
- }
- return cbCardCount;
- },
- //排序,根据牌值排序
- SortCardList:function( cbCardData, cbCardCount ){
- //数目过虑
- if (cbCardCount==0||cbCardCount>GameDef.MAX_COUNT) return false;
- //排序操作
- var bSorted=true;
- var cbSwitchData=0,cbLast=cbCardCount-1;
- do{
- bSorted=true;
- for (var i=0;i<cbLast;i++){
- if (cbCardData[i]>cbCardData[i+1]){
- //设置标志
- bSorted=false;
- //扑克数据
- cbSwitchData=cbCardData[i];
- cbCardData[i]=cbCardData[i+1];
- cbCardData[i+1]=cbSwitchData;
- }
- }
- cbLast--;
- } while(bSorted==false);
- return true;
- },
- /*
- // 胡法分析函数
- */
- });
- module.exports = CGameLogic_21201;
|