• 最近在做斗地主扑克游戏的一些代码和思路


    扑克游戏共54张牌,因此只创建了54个牌的实例,并且这些实例在整个应用中只创建一次,以节省内存,

    背面牌创建了17*2个普通背面牌实例,17个地主背牌实例,17*2个农民背牌实例

    因为会频繁的出牌,删牌

    代码
    1 /**
    2 * set方法仅刷新位置
    3 *
    4 */
    5 public function setPaiLeft(rivalUser:IUserModel,rivalChair:IChairModel):void
    6 {
    7 //loop use
    8   var i:int = 0;
    9 var numChild:int = (this.board.mc_pailist_v_left.mc_container as MovieClip).numChildren;
    10
    11 //clear
    12   for(i=0;i<numChild;i++)
    13 {
    14 (this.board.mc_pailist_v_left.mc_container as MovieClip).removeChildAt(0);
    15 }
    16
    17 //棋子
    18   var arr:Array = GameGlobals.qpc.data.activeRoom.getItemList();
    19
    20 this.paiRule.sort(arr,rivalChair.getId());
    21
    22 var len:int = GameGlobals.qpc.data.activeRoom.getItemList().length;
    23
    24 for(i =0;i<len;i++)
    25 {
    26 h = rivalChair.getId()-1;
    27
    28 if(h == (arr[i] as ItemModelByDdz).h)//这是你的牌
    29 {
    30 var paiMc:MovieClip;
    31
    32 if(PokerName.BG_NORMAL == (arr[i] as ItemModelByDdz).name)
    33 {
    34 paiMc = this.bgPaiList_normal[ (arr[i] as ItemModelByDdz).v ] as MovieClip;
    35
    36 }else if(PokerName.BG_DIZHU == (arr[i] as ItemModelByDdz).name)
    37 {
    38 paiMc = this.bgPaiList_diZhu[ (arr[i] as ItemModelByDdz).v ] as MovieClip;
    39
    40 }else if(PokerName.BG_NONGMING == (arr[i] as ItemModelByDdz).name)
    41 {
    42 paiMc = this.bgPaiList_nongMing[ (arr[i] as ItemModelByDdz).v ] as MovieClip;
    43
    44 }else
    45 {
    46 //明牌
    47 paiMc = this.paiRule.getFrontPaiMcByName((arr[i] as ItemModelByDdz).name);
    48
    49 }
    50
    51 //
    52 paiMc.y = (arr[i] as ItemModelByDdz).v * PaiLayout.LIST_V_PADDING;
    53
    54 (this.board.mc_pailist_v_left.mc_container as MovieClip).addChild(paiMc);
    55
    56 }//end if
    57 }//end for
    58
    59
    60 }
    61
    62 public function setPaiRight(rivalUser:IUserModel,rivalChair:IChairModel):void
    63 {
    64 //loop use
    65 var i:int = 0;
    66 var numChild:int = (this.board.mc_pailist_v_right.mc_container as MovieClip).numChildren;
    67
    68 //clear
    69 for(i=0;i<numChild;i++)
    70 {
    71 (this.board.mc_pailist_v_right.mc_container as MovieClip).removeChildAt(0);
    72 }
    73
    74 //棋子
    75 var arr:Array = GameGlobals.qpc.data.activeRoom.getItemList();
    76
    77 this.paiRule.sort(arr,rivalChair.getId());
    78
    79 var len:int = GameGlobals.qpc.data.activeRoom.getItemList().length;
    80
    81 for(var i:int =0;i<len;i++)
    82 {
    83 var cId:int = rivalChair.getId()-1;
    84
    85 if(cId == (arr[i] as ItemModelByDdz).h)//这是你的牌
    86 {
    87 var paiMc:MovieClip;
    88
    89 if(PokerName.BG_NORMAL == (arr[i] as ItemModelByDdz).name)
    90 {
    91 paiMc = this.bgPaiList_normal[ (arr[i] as ItemModelByDdz).v + 17 ] as MovieClip;
    92
    93 }else if(PokerName.BG_DIZHU == (arr[i] as ItemModelByDdz).name)
    94 {
    95 paiMc = this.bgPaiList_diZhu[ (arr[i] as ItemModelByDdz).v ] as MovieClip;//地主只有一家
    96
    97 }else if(PokerName.BG_NONGMING == (arr[i] as ItemModelByDdz).name)
    98 {
    99 paiMc = this.bgPaiList_nongMing[ (arr[i] as ItemModelByDdz).v + 17 ] as MovieClip;
    100 }else
    101 {
    102 //明牌
    103 paiMc = this.paiRule.getFrontPaiMcByName((arr[i] as ItemModelByDdz).name);
    104 }
    105
    106 //
    107 paiMc.y = (arr[i] as ItemModelByDdz).v * PaiLayout.LIST_V_PADDING;
    108
    109 (this.board.mc_pailist_v_right.mc_container as MovieClip).addChild(paiMc);
    110
    111 }//end if
    112 }//end for
    113
    114
    115 }
    116
    117 public function addPaiRight(rivalUser:IUserModel,rivalChair:IChairModel,curInd:int = -1):void
    118 {
    119 //棋子
    120 var arr:Array = GameGlobals.qpc.data.activeRoom.getItemList();
    121
    122 this.paiRule.sort(arr,rivalChair.getId());
    123
    124 var len:int = GameGlobals.qpc.data.activeRoom.getItemList().length;
    125
    126
    127
    128 }
    129
    130 /**
    131 * 出牌显示
    132 */
    133 public function setPaiDown2(value:Array):void
    134 {
    135 //loop use
    136 var i:int = 0;
    137 var len:int = value.length;
    138
    139 for(i=0;i<len;i++)
    140 {
    141 //
    142 //x
    143
    144 (this.board.mc_pailist_h_down2.mc_container as MovieClip).addChild((value[i] as MovieClip));
    145
    146 }
    147
    148 }
    149
    150 //addEvt:Boolean=true
    151 public function setPaiDown():void
    152 {
    153 //loop use
    154 var i:int = 0;
    155 var numChild:int = (this.board.mc_pailist_h_down.mc_container as MovieClip).numChildren;
    156
    157 //clear
    158 for(i=0;i<numChild;i++)
    159 {
    160 var dobj:DisplayObject = (this.board.mc_pailist_h_down.mc_container as MovieClip).removeChildAt(0);
    161
    162 if(
    163 (dobj as MovieClip).hasEventListener(MouseEvent.CLICK)
    164 )
    165 {
    166 (dobj as MovieClip).removeEventListener(MouseEvent.CLICK,paiMcClick);
    167 }
    168
    169 }
    170
    171 //add
    172 var hero:IUserModel = GameGlobals.qpc.data.activeRoom.findHero(GameGlobals.qpc.data.hero);
    173 var chair:IChairModel = GameGlobals.qpc.data.activeRoom.getChair(hero);
    174
    175 //棋子
    176 var arr:Array = GameGlobals.qpc.data.activeRoom.getItemList();
    177
    178 this.paiRule.sort(arr,chair.getId());
    179
    180 var len:int = GameGlobals.qpc.data.activeRoom.getItemList().length;
    181
    182 for(i =0;i<len;i++)
    183 {
    184 var cId:int = chair.getId()-1;
    185
    186 if(cId == (arr[i] as ItemModelByDdz).h)//这是你的牌
    187 {
    188 var paiMc:MovieClip;
    189
    190 //自已的牌不会是背面牌
    191 //因此这里去掉背面牌的逻辑
    192 // 获取正面牌的MC
    193 // 参数value 为 牌的名称
    194 //
    195 paiMc = this.paiRule.getFrontPaiMcByName((arr[i] as ItemModelByDdz).name);
    196
    197 //间隔为横向20
    198 paiMc.x = (arr[i] as ItemModelByDdz).v * 20;
    199
    200 //事件侦听
    201 paiMc.addEventListener(MouseEvent.CLICK,paiMcClick);
    202
    203 (this.board.mc_pailist_h_down.mc_container as MovieClip).addChild(paiMc);
    204
    205 }//end if
    206 }//end for
    207
    208 }
    209
    210 //clear
    211 for(i=0;i<numChild;i++)
    212 {
    213 var paiMc:MovieClip = (this.board.mc_pailist_h_down.mc_container as MovieClip).getChildAt(i) as MovieClip;
    214
    215 if(0 == paiMc.y)
    216 {
    217
    218 }else
    219 {
    220 //paiMc.y = 0;//出牌后再设
    221
    222 var dj:MovieClip = (this.board.mc_pailist_h_down.mc_container as MovieClip).removeChildAt(i);
    223
    224 value.push(paiMc);
    225
    226 //restore
    227 i=-1;
    228 numChild = (this.board.mc_pailist_h_down.mc_container as MovieClip).numChildren;
    229 }
    230
    231 }
  • 相关阅读:
    前端知识 | 一个简单的登录页面包含多少前端基础知识?
    SQLserver查询作业、视图、函数、存储过程中的关键字
    SQL server 数据库备份至服务器本地磁盘和其他服务器磁盘
    Linux(centos)安装vim
    CentOS6 7 8更换阿里yum源
    centos8 最小化安装 无 ifconfig,netstat 的安装
    修改MySQL用户的host属性
    阿里云NTP服务器(国内可用的NTP服务器)
    vCenter Server Appliance(VCSA )7.0 部署指南
    Chrome离线安装包最新版
  • 原文地址:https://www.cnblogs.com/jiahuafu/p/1936879.html
Copyright © 2020-2023  润新知