import flash.display.MovieClip;
import flash.display.SimpleButton;
import flash.text.TextField;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.DataEvent;
import flash.net.XMLSocket;
import flash.events.IOErrorEvent;
import flash.media.*;
import flash.media.SoundChannel;
import flash.media.SoundMixer;
import ass.poker;
import flash.net.URLRequest;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class huanle extends MovieClip {//欢乐斗地主
var username:String="nihao";
var fuwuqi:String="localhost";
var duankou:int=5000;
var pingtai:String=""; //平台
var pwd:String="";
var xmlSocket:XMLSocket;
var user0:User=new User(); //玩家0
var user1:User=new User();
var user2:User=new User();
var usera:Array=new Array();
var turns:int=0; //轮数
var pukea:Array=new Array();
var firstx:int=200;
var isdown:Boolean=false; 是否断线
var minuteTimer:Timer
public function huanle() {
//初始化隐藏按钮
yincanh();
//init("self","nihao","nihaoa","localhost",8090) ;
}
public function init(pingtai:String,userid:String,pwd:String,fuwuqi:String,duankou:int) {
this.username=userid;
this.fuwuqi=fuwuqi;
this.duankou=duankou;
this.pingtai=pingtai;
this.pwd=pwd;
xmlSocket = new XMLSocket();
xmlSocket.addEventListener(DataEvent.DATA, onIncomingData);
xmlSocket.addEventListener(Event.CONNECT, onConnected);
xmlSocket.connect(fuwuqi, duankou);
kaishi_btn.addEventListener(MouseEvent.CLICK,zhunbeih); 开始,每局后是准备
huanzhuo_btn.addEventListener(MouseEvent.CLICK,huanzhuoh); 换桌
jiaodizhu_mc.jiao_mc.addEventListener(MouseEvent.CLICK,jiaoh); 叫地主影片剪辑有两个按钮,叫地主与不叫
jiaodizhu_mc.bujiao_mc.addEventListener(MouseEvent.CLICK,bujiaoh);
pai_mc.addEventListener(MouseEvent.MOUSE_DOWN,downh); 各玩家的牌
pai_mc.addEventListener(MouseEvent.MOUSE_UP,uph);
chupai_btn.addEventListener(MouseEvent.CLICK,chupaih); 出牌是调用removeh函数
soundh();
}
function onConnected(evt:Event) {
xmlSocket.send("11&&"+pingtai+"&&"+username + "&&"+pwd); 连接后发送的数据,参数间用&&来连接
trace("connect");
}
function onIncomingData(event:DataEvent):void { 通讯主函数,对进来数据的处理
//incomingChat_txt.htmlText += event.data;
var str:String=event.data;
var shujua:Array=str.split("&&");参数数据用一个数组来保存,第一个数字是命令代码
if (shujua[0]=="11") {
shuchu_txt.text="登陆成功";
} else if (shujua[0]=="31") { 31为玩家数据
var u0:Array=shujua[1].split("&");
user0.username=u0[0];
user0.jinbi=Number(u0[1]);
user0.zhunbei=u0[4];
var u1:Array=shujua[2].split("&"); 第二个玩家
if (u1.length>1) {
user1.username=u1[0];
user1.jinbi=Number(u1[1]);
user1.zhunbei=u1[4];
} else { 如果没有的话就空
user1.username="";
user1.jinbi=0;
user1.zhunbei="";
}
var u2:Array=shujua[3].split("&"); 第三个玩家
if (u2.length>1) {
user2.username=u2[0];
user2.jinbi=Number(u2[1]);
user2.zhunbei=u2[4];
} else {
user2.username="";
user2.jinbi=0;
user2.zhunbei="";
}
var l:uint=usera.length;
for (var i:uint=0; i<l; i++) {
usera.shift(); 玩家数据初始化,清空。
}
if (user0.username==username) {玩家数据决定了出牌的顺序
usera.push(user0);
usera.push(user1);
usera.push(user2);
}
if (user1.username==username) {
usera.push(user1);
usera.push(user2);
usera.push(user0);
}
if (user2.username==username) {
usera.push(user2);
usera.push(user0);
usera.push(user1);
}
setUser();
} else if (shujua[0]=="41") { 41为发完牌
zhunbei0_mc.visible=false; 准备按钮都不可视
zhunbei2_mc.visible=false;
zhunbei1_mc.visible=false;
if (usera[0].username==shujua[1]) {玩家数组的第一个是自己,叫地主可视
jiaodizhu_mc.visible=true;
clock0_mc.visible=true;
} else if (usera[1].username==shujua[1]) {
clock2_mc.visible=true;
} else if (usera[2].username==shujua[1]) {
clock1_mc.visible=true;
}
} else if (shujua[0]=="42") { 决定位置,
var weizhi:int=0;
for (var ia:int=0; ia<usera.length; ia++) {
if (usera[ia].username==shujua[1]) {
weizhi=ia;
break;
}
}
if (shujua.length>2) { 数据长度大于2,轮流叫地主,按位置显示时钟和叫地主按钮
//xuyao chongxie
if(usera[0].username==shujua[1]) {
clock0_mc.visible=true;
clock1_mc.visible=false;
clock2_mc.visible=false;
xinxi0_mc.visible=false;
xinxi1_mc.visible=false;
xinxi2_mc.visible=false;
jiaodizhu_mc.visible=false;
tishi_btn.visible=true;
chupai_btn.visible=true;
buchu_btn.visible=true;
}else if (usera[1].username==shujua[1]) {
clock1_mc.visible=true;
clock0_mc.visible=false;
clock2_mc.visible=false;
xinxi0_mc.visible=false;
xinxi1_mc.visible=false;
xinxi2_mc.visible=false;
}else if (usera[2].username==shujua[1]) {
clock2_mc.visible=true;
clock1_mc.visible=false;
clock0_mc.visible=false;
xinxi0_mc.visible=false;
xinxi1_mc.visible=false;
xinxi2_mc.visible=false;
}
} else {
if (weizhi==0) {
if (turns==3) {
xinxi0_mc.visible=false;
}
jiaodizhu_mc.visible=true;
clock0_mc.visible=true;
clock1_mc.visible=false;
xinxi1_mc.visible=true;
xinxi1_mc.gotoAndStop(1);
} else if (weizhi==1) {
jiaodizhu_mc.visible=false;
clock2_mc.visible=true;
clock0_mc.visible=false;
xinxi0_mc.visible=true;
xinxi0_mc.gotoAndStop(1);
} else if (weizhi==2) {
clock1_mc.visible=true;
clock2_mc.visible=false;
xinxi2_mc.visible=true;
xinxi2_mc.gotoAndStop(1);
}
}
turns++;
} else if (shujua[0]=="43") {
turns++;
} else if (shujua[0]=="49") {
shuchu_txt.text+="发牌"+str;
initPoker(shujua);
} else {
shuchu_txt.text+="未知"+str;
}
tishixinxi_mc.visible=false;
}
function jiaoh(e:MouseEvent) {
xmlSocket.send("42&&");
}
function bujiaoh(e:MouseEvent) {
xmlSocket.send("43&&");
}
function setUser() { 设置各用户,用户按逆时针排列0,1,2
if (usera[0].username!="" && usera[0].jinbi!=0) {
userPanel0_mc.visible=true;
jinbi0_txt.visible=true;
if (usera[0].zhunbei=="true") {
zhunbei0_mc.visible=true;
} else {
zhunbei0_mc.visible=false;
}
userPanel0_mc.name_txt.text=usera[0].username;
jinbi0_txt.text=usera[0].jinbi;
} else {
userPanel0_mc.visible=false;
jinbi0_txt.visible=false;
zhunbei0_mc.visible=false;
}
if (usera[0].zhunbei=="true") {
huanzhuo_btn.visible=false;
kaishi_btn.visible=false;
} else {
huanzhuo_btn.visible=true;
kaishi_btn.visible=true;
}
if (usera[1].username!="" && usera[1].jinbi!=0) {
userPanel2_mc.visible=true;
jinbi2_txt.visible=true;
dou2_mc.visible=true;
if (usera[1].zhunbei=="true") {
zhunbei2_mc.visible=true;
} else {
zhunbei2_mc.visible=false;
}
userPanel2_mc.name_txt.text=usera[1].username;
jinbi2_txt.text=usera[1].jinbi;
} else {
userPanel2_mc.visible=false;
jinbi2_txt.visible=false;
zhunbei2_mc.visible=false;
dou2_mc.visible=false;
}
if (usera[2].username!="" && usera[2].jinbi!=0) {
userPanel1_mc.visible=true;
jinbi1_txt.visible=true;
dou1_mc.visible=true;
if (usera[2].zhunbei=="true") {
zhunbei1_mc.visible=true;
} else {
zhunbei1_mc.visible=false;
}
userPanel1_mc.name_txt.text=usera[2].username;
jinbi1_txt.text=usera[2].jinbi;
} else {
userPanel1_mc.visible=false;
jinbi1_txt.visible=false;
zhunbei1_mc.visible=false;
dou1_mc.visible=false;
}
}
function zhunbeih(e:MouseEvent) {
xmlSocket.send("41&&zhunbei");
}
function huanzhuoh() {
xmlSocket.send("44&&huanzhuo");
}
function yincanh() {
//ctrlInfo_mc.visible=false;
//doubleEff_MC.visible=false;
mingpaikaishi_btn.visible=false;
mingpaikaishi_btn.gotoAndStop(1);
kaishi_btn.visible=false;
kaishi_btn.gotoAndStop(1);
huanzhuo_btn.visible=false;
chupai_btn.visible=false;
buchu_btn.visible=false;
tishi_btn.visible=false;
popo0_mc.visible=false;
popo1_mc.visible=false;
popo2_mc.visible=false;
zhunbei0_mc.visible=false;
zhunbei1_mc.visible=false;
zhunbei2_mc.visible=false;
clock0_mc.visible=false;
clock1_mc.visible=false;
clock2_mc.visible=false;
jiabei0_mc.visible=false;加倍
jiabei1_mc.visible=false;
jiabei2_mc.visible=false;
duanxian0_mc.visible=false;断线
duanxian1_mc.visible=false;
duanxian2_mc.visible=false;
tuoguan0_mc.visible=false;托管
tuoguan1_mc.visible=false;
tuoguan2_mc.visible=false;
alertMC2.visible=false;
alertMC1.visible=false;
dizhu0_mc.stop();
dizhu1_mc.stop();
dizhu2_mc.stop();
mingpaibeishu_mc.stop();
tuoguan_btn.stop();
fanbei_mc.visible=false;
fanbei_mc.stop();
tishi_mc.visible=false;
tishi_mc.stop();
anniu_mc.shengyin_btn.stop();
xinxi0_mc.stop();
xinxi0_mc.visible=false;
teshu0_mc.visible=false;
teshu0_mc.stop();
xinxi1_mc.stop();
xinxi1_mc.visible=false;
teshu1_mc.visible=false;
teshu1_mc.stop();
xinxi2_mc.stop();
xinxi2_mc.visible=false;
teshu2_mc.visible=false;
teshu2_mc.stop();
mingpai_mc.visible=false;
dipai_mc.pai1_mc.huase_mc.stop();
dipai_mc.pai1_mc.shuzi_mc.stop();
dipai_mc.pai2_mc.huase_mc.stop();
dipai_mc.pai2_mc.shuzi_mc.stop();
dipai_mc.pai0_mc.huase_mc.stop();
dipai_mc.pai0_mc.shuzi_mc.stop();
jiaodizhu_mc.visible=false;
jiaodizhu_mc.jiao_mc.stop();
jiaodizhu_mc.bujiao_mc.stop();
}
function soundh() {
var s:Sound = new Sound();
//s.addEventListener(ProgressEvent.PROGRESS, onLoadProgress);
s.addEventListener(Event.COMPLETE, onLoadComplete);
s.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
var req:URLRequest = new URLRequest("bigSound.mp3");
s.load(req);
}
function onLoadComplete(event:Event):void {
var localSound:Sound = event.target as Sound;
var channel:SoundChannel = localSound.play(0,9999999);
var panCounter:Number = 0;
var trans:SoundTransform;
trans = new SoundTransform(0, 0);
trans.pan = Math.sin(panCounter);
channel.soundTransform = trans;// or SoundMixer.soundTransform = trans;
// panCounter += 0.05;
}
function onIOError(event:IOErrorEvent) {
var s:Sound = new Sound();
//s.addEventListener(ProgressEvent.PROGRESS, onLoadProgress);
s.addEventListener(Event.COMPLETE, onLoadComplete);
s.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
var req:URLRequest = new URLRequest("bigSound.mp3");
s.load(req);
}
function downh(e:MouseEvent) {
isdown=true;
}
function uph(e:MouseEvent) {
isdown=false;
}
function removeh() {
for (var i:int=0; i<pukea.length; i++) { 遍历所有未出的牌
if (pukea[i].y<0) {把y<0的牌从牌数组中删除
pai_mc.contains(pukea[i]) && pai_mc.removeChild(pukea[i]);显示中也移除
pukea.splice(i,1);
i--;
}
}
if (pukea.length==0) {
} else if (pukea.length==1) {
pukea[0].x=firstx;
} else {
pukea[0].x=firstx-pukea.length*10;出牌时是右对齐的
}
for (var j:int=0; j<pukea.length; j++) {
if (j!=0) {
pukea[j].x=pukea[j-1].x+20;
}
}
}
function addmc(p:poker) {
pai_mc.addChild(p);
pukea.push(p);
p.addEventListener(MouseEvent.CLICK,ch);
p.addEventListener(MouseEvent.MOUSE_OVER,overh);
function overh(e:MouseEvent) {
if (isdown) {
if (p.y<0) {
p.y+=20;
} else {
p.y-=20;
}
}
}
function ch(e:MouseEvent) {
if (p.y<0) {
p.y+=20;
} else {
p.y-=20;
}
}
if (pukea.length==1) {
pukea[0].x=firstx;
} else {
pukea[0].x=firstx-pukea.length*10;
}
for (var i:int=0; i<pukea.length; i++) {
if (i!=0) {
pukea[i].x=pukea[i-1].x+20;
}
}
}
function initPoker(saa:Array) {
var shujua:Array=saa;
minuteTimer= new Timer(300,17);
minuteTimer.start();
minuteTimer.addEventListener(TimerEvent.TIMER, timeOverh);
function timeOverh(event:TimerEvent){
var p:poker=new poker();
p.init(shujua[pukea.length*2+1],shujua[pukea.length*2+2]);
addmc(p)
adddonghua();
}
}
function adddonghua() {
//var
// if (pukea.length==1) {
// pukea[0].x=firstx;
// } else {
// pukea[0].x=firstx-pukea.length*10;
// }
// for (var i:int=0; i<pukea.length; i++) {
// if (i!=0) {
// pukea[i].x=pukea[i-1].x+20;
// }
// }
// //cardsInHandCtnRef2
}
function removedong1() {
}
function removedong2() {
}
function chupaih(e:MouseEvent) {
removeh();
}
}
//
package ass {
import flash.display.MovieClip;
public class poker extends MovieClip{
var hei:int=3; 黑桃为3
var huase:String="";花色
var shu:String="";数字
public function poker() {
this.gotoAndStop(1);
}
public function init(huase:String,shu:String) {
this.huase=huase;
this.shu=shu;
if(huase=="1") {
if(shu=="A") {
this.gotoAndStop(hei+1);
}else if(shu=="2") {
this.gotoAndStop(hei+2);
}else if(shu=="3") {
this.gotoAndStop(hei+3);
}else if(shu=="4") {
this.gotoAndStop(hei+4);
}else if(shu=="5") {
this.gotoAndStop(hei+5);
}else if(shu=="6") {
this.gotoAndStop(hei+6);
}else if(shu=="7") {
this.gotoAndStop(hei+7);
}else if(shu=="8") {
this.gotoAndStop(hei+8);
}else if(shu=="9") {
this.gotoAndStop(hei+9);
}else if(shu=="10") {
this.gotoAndStop(hei+10);
}else if(shu=="J") {
this.gotoAndStop(hei+11);
}else if(shu=="Q") {
this.gotoAndStop(hei+12);
}else if(shu=="K") {
this.gotoAndStop(hei+13);
}
}else if(huase=="2") {
if(shu=="A") {
this.gotoAndStop(hei+1+13);
}else if(shu=="2") {
this.gotoAndStop(hei+2+13);
}else if(shu=="3") {
this.gotoAndStop(hei+3+13);
}else if(shu=="4") {
this.gotoAndStop(hei+4+13);
}else if(shu=="5") {
this.gotoAndStop(hei+5+13);
}else if(shu=="6") {
this.gotoAndStop(hei+6+13);
}else if(shu=="7") {
this.gotoAndStop(hei+7+13);
}else if(shu=="8") {
this.gotoAndStop(hei+8+13);
}else if(shu=="9") {
this.gotoAndStop(hei+9+13);
}else if(shu=="10") {
this.gotoAndStop(hei+10+13);
}else if(shu=="J") {
this.gotoAndStop(hei+11+13);
}else if(shu=="Q") {
this.gotoAndStop(hei+12+13);
}else if(shu=="K") {
this.gotoAndStop(hei+13+13);
}
}else if(huase=="3") {
if(shu=="A") {
this.gotoAndStop(hei+1+13+13);
}else if(shu=="2") {
this.gotoAndStop(hei+2+13+13);
}else if(shu=="3") {
this.gotoAndStop(hei+3+13+13);
}else if(shu=="4") {
this.gotoAndStop(hei+4+13+13);
}else if(shu=="5") {
this.gotoAndStop(hei+5+13+13);
}else if(shu=="6") {
this.gotoAndStop(hei+6+13+13);
}else if(shu=="7") {
this.gotoAndStop(hei+7+13+13);
}else if(shu=="8") {
this.gotoAndStop(hei+8+13+13);
}else if(shu=="9") {
this.gotoAndStop(hei+9+13+13);
}else if(shu=="10") {
this.gotoAndStop(hei+10+13+13);
}else if(shu=="J") {
this.gotoAndStop(hei+11+13+13);
}else if(shu=="Q") {
this.gotoAndStop(hei+12+13+13);
}else if(shu=="K") {
this.gotoAndStop(hei+13+13+13);
}
}else if(huase=="4") {
if(shu=="A") {
this.gotoAndStop(hei+1+13+13+13);
}else if(shu=="2") {
this.gotoAndStop(hei+2+13+13+13);
}else if(shu=="3") {
this.gotoAndStop(hei+3+13+13+13);
}else if(shu=="4") {
this.gotoAndStop(hei+4+13+13+13);
}else if(shu=="5") {
this.gotoAndStop(hei+5+13+13+13);
}else if(shu=="6") {
this.gotoAndStop(hei+6+13+13+13);
}else if(shu=="7") {
this.gotoAndStop(hei+7+13+13+13);
}else if(shu=="8") {
this.gotoAndStop(hei+8+13+13+13);
}else if(shu=="9") {
this.gotoAndStop(hei+9+13+13+13);
}else if(shu=="10") {
this.gotoAndStop(hei+10+13+13+13);
}else if(shu=="J") {
this.gotoAndStop(hei+11+13+13+13);
}else if(shu=="Q") {
this.gotoAndStop(hei+12+13+13+13);
}else if(shu=="K") {
this.gotoAndStop(hei+13+13+13+13);
}
}else if(huase=="5"){
if(shu=="d") {
this.gotoAndStop(56);
}else {
this.gotoAndStop(57);
}
}
}
}
}