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

简介: 扑克游戏共54张牌,因此只创建了54个牌的实例,并且这些实例在整个应用中只创建一次,以节省内存, 背面牌创建了17*2个普通背面牌实例,17个地主背牌实例,17*2个农民背牌实例 因为会频繁的出牌,删牌   代码 1 /** 2 * set方法...

 

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

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

因为会频繁的出牌,删牌

 

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif 代码
 
  
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 }

 

目录
打赏
0
0
0
0
13
分享
相关文章
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏13之英雄不要走出屏幕
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏13之英雄不要走出屏幕
168 0
推箱子游戏(算法设计)
推箱子游戏(算法设计)
151 0
|
10月前
|
塔防游戏开发实战教程(1):实现防守塔,添加敌人的路径点
塔防游戏开发实战教程(1):实现防守塔,添加敌人的路径点
151 0
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏12之英雄自由行走
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏12之英雄自由行走
199 0
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏19敌人可以被打死
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏19敌人可以被打死
174 0
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏16之敌人来了
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏16之敌人来了
159 0
|
10月前
|
普通玩家也能掌握的Java游戏加点系统,专业到让你无敌!
普通玩家也能掌握的Java游戏加点系统,专业到让你无敌!
75 1
想过七夕?->女朋友陪你玩游戏(C)(中)
在一定数值范围内,游戏随机生成一个数字,玩家输入比随机数大的数字时,程序会提醒,数值大于目标数,反之亦然。通过不断试错,最终找出目标数字。此游戏可以重复玩。
想过七夕?->女朋友陪你玩游戏(C)(中)
想过七夕?->女朋友陪你玩游戏(C)(上)
三子棋 七夕到了,没有女朋友怎么办?没事~ 写一个小游戏,让女朋友陪你玩三子棋~
想过七夕?->女朋友陪你玩游戏(C)(上)
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等