?? doudizhu.as
字號:
/*
開發人 :小寶 qq:42353066
開發時間:07.05.09
功能 :洗牌效果、出牌檢測、判斷發牌等
*/
var arrCards:Array = new Array(); //用戶紙牌__二維數組 (index=3 為底牌)
var arrOutCards:Array = new Array(); //已出紙牌__二維數組
var arrUpOutCards:Array = new Array(); //保存上一輪的結果
var arrThisOutCards:Array = new Array(); //保存本一輪的結果
var mePlayer:Number = 0; //由進入分組隊列的先后順序決定(1 ,2 ,3) 后臺服務決定
var mePlayerPaiXu:Boolean = true; //排序(從大到小 或則 從牌多到牌少)
var mePlayerTuoGuan:Boolean= false; //托管
var dizhuPlayer:Number = 0; //地主是哪一家
var curChuPlayer:Number = 0; //當前出牌人
var curFirstPlayer:Number = 0; //當前先出牌的人
var dizhuCardValue:Number = 0; //發牌時先叫地主的牌值
var screenRange:Array = new Array(1010, 680);
var paiMidWidth:Array = new Array(22, 16, 80, 220, 140, 280); //(index=0 自己牌之間的寬度或已出牌之間的寬度 , index=1 為對方牌 牌與牌之間的寬度 ,
//index=2 為自己牌距離邊緣的寬度,index=3 為自己已出的牌距離邊緣的寬度,
//index=4 為對方牌距離邊緣的寬度,index=5 為對方已出的牌距離邊緣的寬度)
var varBomb:Number = 0;
var varRocket:Number = 0;
var varState:Array = ["正在連接服務器...", "正在分組中...", "請等待其他玩家進入遊戲...", "成功進入遊戲,正在分組中...", "有人離綫,請等待重新分組!","你已在托管遊戲中,稍候進入.","遊戲未開場.","沒有足夠的金額,請先充值。","網絡已經斷開..","用戶用戶已被暫停.."];
function CreateDeck(cardstr:String) {
EndCards();
//mczhunbei1._visible = false;
//mczhunbei2._visible = false;
//mczhunbei3._visible = false;
var orgalCard = cardstr.split(",");
dizhuCardValue = orgalCard[orgalCard[orgalCard.length-1]];
for (var i = 0; i<orgalCard.length-1; ) {
for (var j = 0; j<3; j++) {
var len = arrCards[j].push(new ClassCards(orgalCard[i++], 17, j+1));
}
if (arrCards[3].length<3) {
arrCards[3].push(new ClassCards(orgalCard[i++], 3, 4)); //4 為底牌放
}
}
//MovingCardsStart();
setTimeout(CreateDeckState, 1000);
}
function CreateDeckState() {
MovingCardsStart();
}
function ClassCards(cv:Number, cardCount:Number, witchPlayer:Number) {
this.point = (cv%10-1)*13+int(cv/10)%100;
this.cardValue = cv;
mcPaiPlatForm.attachMovie("Card", "Card"+String(cv)+String(witchPlayer), witchPlayer*30+1000+arrCards[witchPlayer-1].length);
this.objCard = eval("mcPaiPlatForm.Card"+String(cv)+String(witchPlayer));
this.objCard._visible = false;
this.objCard.gotoAndStop(55);
this.objCard.states = 1; //1 為初始狀態,2 為選中狀態 , 3 準備要出的牌,4 已出的牌
if (witchPlayer == mePlayer) {
var posX = (screenRange[0]-(cardCount-1)*paiMidWidth[0])/2;
this.objCard._x = arrCards[witchPlayer-1].length*paiMidWidth[0]+posX;
this.objCard._y = screenRange[1]-paiMidWidth[2];
this.objCard.onRelease = function() {
if (this.states == 1) {
this._y = this._y-20;
this.states = 2;
} else if (this.states == 2) {
this._y = this._y+20;
this.states = 1;
}
};
this.objCard.enabled = false;
} else if (witchPlayer == 4) {//底牌
var posX = (screenRange[0]-(cardCount-1)*80)/2;
this.objCard._x = arrCards[witchPlayer-1].length*80+posX;
this.objCard._y = 70;
} else if (witchPlayer-mePlayer == 1 || witchPlayer-mePlayer == -2) {//mePlayer的右邊
this.objCard._x = screenRange[0]-paiMidWidth[4];
var posY = (screenRange[1]-(cardCount-1)*paiMidWidth[1])/2;
this.objCard._y = arrCards[witchPlayer-1].length*paiMidWidth[1]+posY;
this.objCard._rotation = -90;
} else if (witchPlayer-mePlayer == -1 || witchPlayer-mePlayer == 2) {//mePlayer的左邊
this.objCard._x = paiMidWidth[4];
var posY = (screenRange[1]-(cardCount-1)*paiMidWidth[1])/2;
this.objCard._y = arrCards[witchPlayer-1].length*paiMidWidth[1]+posY;
this.objCard._rotation = 90;
}
}
function ClassCardsUp(cv:Number, cardCount:Number, witchPlayer:Number) {
this.point = (cv%10-1)*13+int(cv/10)%100;
this.cardValue = cv;
mcCardPlatFormUp.attachMovie("Card", "Card"+String(cv)+String(witchPlayer), witchPlayer*30+90000+arrUpOutCards[2+witchPlayer].length);
this.objCard = eval("mcCardPlatFormUp.Card"+String(cv)+String(witchPlayer));
this.objCard.gotoAndStop(this.point );
if (witchPlayer == mePlayer) {
var posX = (screenRange[0]-(cardCount-1)*paiMidWidth[0])/2;
this.objCard._x = arrUpOutCards[2+witchPlayer].length*paiMidWidth[0]+posX;
this.objCard._y = screenRange[1]-paiMidWidth[3]+paiMidWidth[1];
} else if (witchPlayer-mePlayer == 1 || witchPlayer-mePlayer == -2) {//mePlayer的右邊
var posY = (screenRange[1]-(cardCount-1)*paiMidWidth[1])/2;
this.objCard._x = screenRange[0]-paiMidWidth[5]-paiMidWidth[1];
this.objCard._y = arrUpOutCards[2+witchPlayer].length*paiMidWidth[1]+posY;
this.objCard._rotation = -90;
} else if (witchPlayer-mePlayer == -1 || witchPlayer-mePlayer == 2) {//mePlayer的左邊
var posY = (screenRange[1]-(cardCount-1)*paiMidWidth[1])/2;
this.objCard._x = paiMidWidth[5]-paiMidWidth[1];
this.objCard._y = arrUpOutCards[2+witchPlayer].length*paiMidWidth[1]+posY;
this.objCard._rotation = 90;
}
}
//排序
function OrderCards(arrTmp:Array, types:Number, witchPlayer:Number) {
var radius = 1400;
var countMid = arrTmp.length/2;
var angleIncre = 0.018;
var angle = Math.PI+angleIncre*countMid;
arrTmp.sort(OrderCardsSort);
if(!mePlayerPaiXu){//從大到小
OrderCardsTmp(arrTmp);
}
for (var i = 0; i<arrTmp.length; i++) {
arrTmp[i].objCard._visible = true;
var point = (arrTmp[i].cardValue%10-1)*13+int(arrTmp[i].cardValue/10)%100;
if (witchPlayer == mePlayer) {
var posX = (screenRange[0]-(arrTmp.length-1)*paiMidWidth[0])/2;
if (types == 1) {
arrTmp[i].objCard.states = 1;
arrTmp[i].objCard.swapDepths(100000+witchPlayer*20+i);
arrTmp[i].objCard.enabled = true;
angle -= angleIncre
//arrTmp[i].objCard._x = screenRange[0]/2 + radius *Math.sin(angle);
//arrTmp[i].objCard._y = screenRange[1]*2+640 + radius *Math.cos(angle);
//arrTmp[i].objCard._rotation = i - countMid+0.5;
arrTmp[i].objCard._x = i*paiMidWidth[0]+posX;
arrTmp[i].objCard._y = screenRange[1]-paiMidWidth[2];
} else if (types == 2) {
arrTmp[i].objCard.states = 4;
arrTmp[i].objCard.swapDepths(101004+witchPlayer*20+i);
arrTmp[i].objCard._x = i*paiMidWidth[0]+posX;
arrTmp[i].objCard._y = screenRange[1]-paiMidWidth[3];
arrTmp[i].objCard.enabled = false;
arrTmp[i].objCard._rotation =0;
}
arrTmp[i].objCard.gotoAndStop(arrTmp[i].point);
arrTmp[i].objCard._alpha = 100;
} else {
if (types == 1) {
var posY = (screenRange[1]-(arrTmp.length-1)*paiMidWidth[1])/2;
arrTmp[i].objCard.swapDepths(100000+witchPlayer*20+i);
arrTmp[i].objCard._y = i*paiMidWidth[1]+posY;
arrTmp[i].objCard.gotoAndStop(55);
arrTmp[i].objCard._alpha = 100;
} else if (types == 2) {
var posY = (screenRange[1]-(arrTmp.length-1)*paiMidWidth[0])/2;
arrTmp[i].objCard.swapDepths(101004+witchPlayer*20+i);
arrTmp[i].objCard._y = i*paiMidWidth[0]+posY;
if (witchPlayer-mePlayer == 1 || witchPlayer-mePlayer == -2) {//右邊
arrTmp[i].objCard._x = screenRange[0]-paiMidWidth[5];
} else {
arrTmp[i].objCard._x = paiMidWidth[5];
}
arrTmp[i].objCard.gotoAndStop(arrTmp[i].point);
}
}
}
}
function OrderCardsTmp(arrTmp:Array){
var _arrTmp:Array = new Array();
for(var i = 0 ; i < arrTmp.length ; i++){
var counts = 1;
for(var j = i + 1; j < arrTmp.length ; j++){
if( int(arrTmp[i].cardValue/10) == int(arrTmp[j].cardValue/10)){
counts++;
}else{
break;
}
}
_arrTmp.push(new ClassCard(int(arrTmp[i].cardValue/10) , counts));
i = i+counts-1;
}
_arrTmp.sort(OrderCardsSort);
var _arrTmp1:Array = new Array();
for(var i = 0 ; i < _arrTmp.length ; i++){
var _classcard = _arrTmp[i];
var index = 0;
for( ; index < arrTmp.length ; index++){
if( int(arrTmp[index].cardValue/10) == _classcard.values ){
break;
}
}
for(var j = 0 ; j < _classcard.cardValue ; j++){
_arrTmp1.push(arrTmp[index+j]);
}
}
if(arrTmp.length == _arrTmp1.length) {
for(var i = 0 ; i < _arrTmp1.length; i++){
arrTmp[i] = _arrTmp1[i];
}
}
}
function OrderCardsSort(a, b):Number {
if (a.cardValue<b.cardValue) {//大到小排序
return 1;
} else if (a.cardValue>b.cardValue) {
return -1;
} else {
if (a.values<b.values) {
return 1;
} else if (a.values>b.values) {
return -1;
}
return 0;
}
}
function ClassCard(vals,cons){
this.values = vals; //牌值
this.cardValue = cons; //這里是表示數目 (取此名為了適應 ClassCards上的牌值 ,這樣可以供應同一個排序函數 OrderCardsSort )
}
function EnabledCards(arrTmp:Array,able:Boolean ){
for (var i = 0; i<arrTmp.length; i++) {
if(arrTmp[i].objCard.states == 1 || arrTmp[i].objCard.states == 2 ){
arrTmp[i].objCard.enabled = able;
}
}
}
function ClearCards(arrTmp:Array) {
var _12 = 0;
while (_12<arrTmp.length) {
arrTmp[_12].objCard.removeMovieClip();
_12++;
}
arrTmp.splice(0);
}
function EndCards(){
clearInterval(setIntervalMoving);
clearInterval(setIntervalMovingStart);
clearInterval(IntervalCountDown);
clearInterval(setIntervalUpCards);
paramMoving = new Array();
mcPai._visible = true;
mcPai.gotoAndStop(55);
MCPlayerNum1._visible = false;
MCPlayerNum2._visible = false;
MCPlayerNum3._visible = false;
mcClock._visible = false;
mePlayerPaiXu = true;
mePlayerTuoGuan = false;
varBomb = 0;
varRocket = 0;
//叫牌按鈕
JiaoPaiBtnState("started");
mcNotJiao1._visible = false;
mcNotJiao2._visible = false;
mcNotJiao3._visible = false;
//出牌按鈕
ChuPaiBtnState("started");
//游戲結束按鈕
mcResult._visible=false;
btnMaskOver._visible=false;
btnMaskOver.useHandCursor = false;
//功能按鈕
FunctionBtnState("start");
//不出MC
mcPass1._visible=false;
mcPass2._visible=false;
mcPass3._visible=false;
mcCardPlatFormUp._visible=false;
mcChunTian._visible=false;
mcLeaveCardCount1._visible=false; //剩下的牌張數
mcLeaveCardCount2._visible=false;
mcLeaveCardCount3._visible=false;
mcTuoGuanZhong1._visible=false; //托管中
mcTuoGuanZhong2._visible=false;
mcTuoGuanZhong3._visible=false;
//用戶角色(農民、地主、搭檔)
mcPlayerRole1._visible=false;
mcPlayerRole2._visible=false;
mcPlayerRole3._visible=false;
for (var i = 0; i<arrCards.length; i++) {
ClearCards(arrCards[i]);//用戶紙牌
}
arrCards.splice(0);
for (var i = 0; i<arrOutCards.length; i++) {
ClearCards(arrOutCards[i]);//已出紙牌
}
arrOutCards.splice(0);
for (var i = 0; i<4; i++) {//初始化數組
arrCards.push(new Array());
arrOutCards.push(new Array());
}
arrUpOutCards.splice(0);
arrThisOutCards.splice(0);
for (var i = 0; i<3; i++) {//初始化上一輪 和 本一輪 結果數組
arrUpOutCards.push("pass");
arrThisOutCards.push("pass");
}
for (var i = 0; i<3; i++) {
arrUpOutCards.push(new Array());
}
}
function GameOver(){
mcResult._visible=true;
btnMaskOver._visible=true;
}
function MarkOutCards(cardstr:String, witchPlayer:Number){
var tmpCardArray = cardstr.split(",");
for (var i = 0; i < tmpCardArray.length; i++ ) {
for(var j = 0; j < arrCards[witchPlayer-1].length ; j++ ){
if(tmpCardArray[i] == arrCards[witchPlayer-1][j].cardValue){
arrCards[witchPlayer-1][j].objCard._y -= 20;
arrCards[witchPlayer-1][j].objCard.states = 2;
break;
}
}
}
}
function OutCards(witchPlayer:Number) { //出牌效果函數
for (var i = 0; i<arrCards[witchPlayer-1].length; i++) {
if (arrCards[witchPlayer-1][i].objCard.states == 2) {
arrOutCards[witchPlayer-1].push(arrCards[witchPlayer-1][i]);
arrCards[witchPlayer-1][i].objCard.states = 3;
}
}
if (arrOutCards[witchPlayer-1].length>0) {
var arrTmpCard:Array = new Array();
for (var i = 0; i<arrCards[witchPlayer-1].length; i++) {
if (arrCards[witchPlayer-1][i].objCard.states != 3) {
arrTmpCard.push(arrCards[witchPlayer-1][i]);
}
}
arrCards[witchPlayer-1].splice(0);
for (var i = 0; i<arrTmpCard.length; i++) {
arrCards[witchPlayer-1].push(arrTmpCard[i]);
}
arrTmpCard.splice(0);
OrderCards(arrOutCards[witchPlayer-1], 2, witchPlayer);
OrderCards(arrCards[witchPlayer-1], 1, witchPlayer);
}
}
function CheckOutCards(){ //出牌判斷(是否可以出,是否符合規格)
if( GetOutCardsStr(mePlayer) == ""){
return false;
}
return true;
}
function GetOutCardsStr(witchPlayer:Number){
var tmpCardsStr = "";
for(var i = 0; i < arrCards[witchPlayer-1].length ; i++ ){
if(arrCards[witchPlayer-1][i].objCard.states == 2){
if(tmpCardsStr == ""){
tmpCardsStr = arrCards[witchPlayer-1][i].cardValue;
}else{
tmpCardsStr = tmpCardsStr + ","+arrCards[witchPlayer-1][i].cardValue;
}
}
}
return tmpCardsStr;
}
var setIntervalMoving;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -