论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS编程教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

[as2.0]斗地主游戏出牌算法(一)

文章类别:Flash AS编程 | 发表日期:2008-10-6 18:13:51


[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 AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058