• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>FLASH AS 编程>AS游戏篇>文章内容
  • [as2.0]斗地主游戏出牌算法(一)
  • 来源:arrowyoung的专栏 作者:arrowyoung 2008-04-23 【

[as2.0]斗地主游戏出牌算法(一)     [as2.0]斗地主游戏出牌算法(二)     [as2.0]斗地主游戏出牌算法(三)
[as2.0]斗地主游戏出牌算法(四)
     [as2.0]斗地主游戏出牌算法(五)     [as2.0]斗地主游戏出牌算法(六)

最近刚在公司写了基于FLASH的斗地主游戏,现在准备陆续把出牌的算法给大家分享一下,希望能给初学者一些帮助.

首先,我们知道斗地主游戏中有这样一些牌型,我样现在对牌型做一个分类,分别用字母代表某一牌型:
A   单张
B   对子
C   三张
D   三带一
E   三带二
F   四带二
G   四个带二对
H   飞机不带
I   飞机带一
J   飞机带二
K   单顺
L   双顺
M   四个的炸弹
N   火箭

然后写出判断每一种牌型号的方法

假设我们现在有要出的牌,用数组表示(从大到小):

var cards:Array=["10_1","10_2","10_3","6_1"];

很明显,这是个三带一的牌型,"_"前面的数字表示牌值,后面的表示花色,"10_1"表示黑桃10,"10_2"表示红桃10,以此类推。

我们首先记录下牌的长度,这是我们后面要用到的:

var cardsLen=cards.length;

然后用以下代码将牌重新组合一下:

var cardsArray:Array = new Array();
cardsArray[
0= new Array();
cardsArray[
0][0= Number(cards[0].substring(0, cards[0].indexOf("_")));
cardsArray[
0][1= 1;
var x 
= 1;
for (var i = 1; i<cards.length; i++{
      
if (Number(cards[i].substring(0, cards[i].indexOf("_"))) == cardsArray[x-1][0]) {
            cardsArray[x
-1][1]++;
      }
 else {
            cardsArray[x] 
= new Array();
            cardsArray[x][
0= Number(cards[i].substring(0, cards[i].indexOf("_")));
            cardsArray[x][
1= 1;
            x
++;
      }

}

这样产生一个cardsArray这样一个二维数组:

cardsArray[0]=[10,3];
cardsArray[1]=[6,1];

也就是前面是牌的值,后面是牌的张数。

然后还需要一个牌的按牌的张数降序排序的函数:order(_arr)

 

 function order(_arr) :Array{
        
var temp:Array;
        
var len:Number = _arr.length-1;
        
for (var i = 0; i<len; i++{
                
for (var j = 0; j<len-i; j++{
    
if (_arr[j][1]<_arr[j+1][1]) {
            temp 
= _arr[j];
            _arr[j] 
= _arr[j+1];
            _arr[j
+1= temp;
    }

                }

         }

         
return _arr;
}

这个排序并不是经常用到。

今天先到这里,下次继续。




上一篇:FLASH小游戏开发 第一节   下一篇:[as2.0]斗地主游戏出牌算法(二)
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)