——春节是马上的,娱乐是必须的,GAME是永恒的,MAS是赚钱的
众所周知,微软window操作系统一直以来就带有GAME功能菜单,挖雷、接龙等经典游戏已经而且将会永远传承下去;以经营棋牌类网络娱乐游戏为主业的联众网也始终稳居中国互联网站排名前列,其成功业务模式也被QQ 游戏等网站广泛复制和推广传播;2008年中国最重要、党和政府最关注、全国人民最关心的大事是北京奥运会,而奥运会的英文名称就叫作“Olympic Games”。
同时,我国传统节日农历新年将至,届时将有数以十亿计人次在全国范围内流动,大家的目的只有一个——回家过年。那么,大家回到家后都做些什么呢?据调查:除了吃饭K歌看朋友、给父母亲大人磕头、陪兄弟姐妹们吹牛之外,半数以上的人还会参与打牌搓麻将等传统经典娱乐活动。
可见,对于全国人民乃至全人类来说——娱乐是必须的、GAME是永恒的!
那么,既然Game是永恒的,而且MS WINDOWS的操作系统里面标配接龙和挖雷,联众的主页提供象棋、四国和斗地主,我们中国移动的MAS服务器为什么就不能为客户提供娱乐游戏功能呢?笔者认为,开发MAS机的娱乐信息化功能不仅是合理的,而且是必要的!——因为它不仅能够满足客户广泛存在的隐形娱乐需求,而且能为中国移动MAS机带来非常巨大可观的业务流量和费用收入。
值此2009年春节之际,笔者将向长期以来坚决支持我们中国移动信息化工作的广大客户朋友隆重介绍一笑堂最新研究成果:MAS信息机的娱乐功能信息化方案,作为新春贺礼——祝大家新春快乐、一笑天开!:)
MAS机短信桥牌GAME功能解决方案
本期我们将重点介绍MAS机的“短信桥牌”GAME功能的解决方案:
(一)加装补丁软件SP3 (SERVICE PACKAGE 3)
到去年底为止,移动MAS服务器已经升级到2.0版本了,但还不具备娱乐功能。因此如果身为客户的您想要尝试使用我们下面介绍的“短信桥牌”以及后面几期推荐的各种相关GAME功能,必须在原有服务器业务系统上加装我们的官方补丁软件,相关软件都集中打包在SP3内提供,联系服务您的客户经理即可获得。
(二)GAME 规则流程
打过桥牌的同志都知道,桥牌游戏流程大致可分为3个阶段:发牌、叫牌和打牌。下面我们分别介绍如何用MAS机短信来实现上述相应流程功能:
【发牌】
因为使用MAS机打牌的玩家一般不会面对面,也没有物理介质的纸牌,所以我们采用MAS机自动发牌的办法代替人工发牌(MAS机自动发牌程序的C语言源码示例参见附录,系笔者即兴抄录编写未经过调试,有兴趣的同志请自行修正BUG。)
1)4位玩家用本人手机向MAS机上行短信,申请参与并启动一局桥牌游戏。
2)MAS服务器收到游戏请求并确认玩家人数与手机号无误后,开始发牌。
3)每位玩家的牌点按照黑桃、红桃、方块、梅花及从大到小的次序排列,编辑成短信内容后直接下发到相应玩家的手机上。
4)4位玩家拿到初始手牌后回复确认短信,MAS机收齐4条确认短信后,进入『叫牌』阶段流程。
【叫牌】
我们假设从玩家1开叫,玩家2、3、4依次反馈是否同意。
1) 玩家1向MAS服务器发短信开叫:比如叫1梅花,则编辑短信内容1C发送到MAS服务器;
2) 服务器收到玩家1的叫牌后,记录在本机Database数据表中,同时向其他三位玩家转发玩家1叫牌结果;
3) 玩家2收到服务器转发的玩家1叫牌内容后,向服务器进行短信回复,可以有三种反应:pass、改叫或加倍;服务器记录玩家2的反馈后再转发其他3位玩家;
4) 玩家3、玩家4的短信叫牌游戏规则流程同前;
5) 当4位玩家达成定约后,由服务器发出最后定约确认短信,并指示庄家、首攻方、明手及东南西北四玩家方位;4位玩家各自回复确认短信表示认可。
6) 直到服务器收到所有4位玩家的定约确认短信后,进入『打牌』阶段。
【打牌】
打牌流程比较简单,一人一张轮流出牌即可;MAS机记录玩家所出每张牌。
1)首攻方发短信出第一张牌;
2)MAS机将明手牌点转发给其他三位玩家;
3)庄家可查看并控制明暗两手牌,代替明手发短信出牌;
4)每轮过后,服务器报告4家依次出牌情况和本轮墩数归属,及每人手中余牌情况;
5)13轮过后,服务器报告输赢情况;并可以应玩家要求发送复局记录。
(三)MAS机业务流量估算
下面我们来估算打一局短信桥牌能带来多少MAS信息机短信业务流量。
【发牌】
上行——8条:玩家游戏申请4条,拿到手牌确认4条;
下行——4条:服务器发牌4条。
因此,发牌阶段共产生12条短信流量。
【叫牌】
叫牌的短信流量计算比较复杂,因为叫牌中情况变化很多,难以一一列举。下面我们利用统计学原理来大致估算一下:
1)4位玩家都要参与叫牌(其中1家提出约定、3家反馈意见),并由服务器转发给其他三家——每人每次叫牌短信都是1上3下;
2)理论上可以从1梅花叫到7无将,总共可以有35种定约结果,但这些结果出现的概率并不一样——我们认为叫牌结果服从正态分布,取其期望值为每副牌达成定约前的叫牌次数,即18次;
因此,每副牌达成定约前都需要发送18×4=72条短信(其中18条上行、54条下行)
【打牌】
1)每位玩家每出1轮牌,都产生1条上行和3条服务器转发,共13轮,合计52条;
2)服务器在牌局初始时会向3位玩家公布明手牌型,计发3条短信;
3)服务器每轮结束后,会向各位玩家公布本轮出牌情况和每人余牌情况,共13轮,合计52条;
4)服务器可应玩家请求发送复局记录,约1-4条短信,按照最少1条估算。
因此,打牌阶段共需发送108条短信。
综合上述【发牌】【叫牌】【打牌】三个阶段流程,每打一局牌,共产生12+72+108=192条短信流量。
(四)MAS机业务收入增量估算
如果每条短信按照0.10元计算,每局短信桥牌可带来192×0.10=19.2元收入(当然,MAS机用户绝大部分都是包月的,但即便按照超出套餐后每条0.01元计算,也能够到来1.92元/局的收入。)
由上可见,当中国移动开发MAS机的短信桥牌功能后,每4位用户打一局牌,即可增加192条短信的额外流量。
我们假设中国移动在全国共安装了100万台MAS信息机,每台信息机服务于1000个用户,其中10%的人春节长假7天内至少会打一次牌,每次打牌以一圈4局计算。那么共可带来新增收入:
1.92元/局×4局/人×(1000*10%/4)人/台*100万台=19200万元
由此可见,只要在每台MAS机上简单增加一个“短信桥牌”game功能,便可在春节7天长假带来至少1.92亿的流量收入啊!这真是——春节长假7天乐,开心发财过大年!
最后,一笑堂主在这里预祝各位坛友——“新春快乐、万事如意”:)
××××××××××××××××××
【附录】
在此发布部分“短信桥牌”GAME功能补丁软件的源代码,供有coding兴趣的同志happy一下:
CMCC MAS SMS BRIDGE GAME 1.0(补丁软件名称)
/* 注释说明:
一副扑克有52张牌,打桥牌时将牌依次分发给四个人。黑桃用S(Spaces)表示;红桃用H(Hearts)表示;方块用D(Diamonds)表示;梅花用C(Clubs)表示。
按照打桥牌的规定,每人应当有13张牌。在人工发牌时,先进行洗牌,然后将洗好的牌按一定的顺序发给每一个人。为了便于计算机模拟,可将人工方式的发牌过程加以修改:先确定好发牌顺序:1、2、3、4;将52张牌顺序编号:黑桃2对应数字0,红桃2对应数字1,方块2对应数字2,梅花2对应数字3,黑桃3对应数字4,红桃3对应数字5,...然后从52 张牌中随机的为每个人抽牌。
这里采用C语言库函数的随机函数,生成0到51之间的共52个随机数,以产生洗牌后发牌的效果。*/
#include<stdlib.h>
#include<stdio.h>
int comp(const void *j, const void *i);
void p(int b[],char n[]);
void main()
{
static char n[]={'2','3','4','5','6','7','8','9','T','J','Q','K','A'};
int a[53],b1[13],b2[13],b3[13],b4[13];
int b11=0,b22=0,b33=0,b44=0,t=1,m,flag,i;
while(t<=52) /*控制发52张牌*/
{ m = random(52); /*产生0到51之间的随机数*/
for(flag=1,i=1; i<=t&&flag; i++) /*查找新产生的随机数是否已经存在*/
if(m==a[i]) flag=0; /*flag=1:产生的是新的随机数
flag=0:新产生的随机数已经存在*/
if(flag)
{
a[t++]=m; /*如果产生了新的随机数,则存入数组*/
if(t%4==0) b1[b11++]=a[t-1]; /*根据t的模值,判断当前的牌应存入哪个数组中*/
else if(t%4==1) b2[b22++]=a[t-1];
else if(t%4==2) b3[b33++]=a[t-1];
else if(t%4==3) b4[b44++]=a[t-1];
}
}
qsort(b1,13,sizeof(int),comp); /*将每个人的牌进行排序*/
qsort(b2,13,sizeof(int),comp);
qsort(b3,13,sizeof(int),comp);
qsort(b4,13,sizeof(int),comp);
string content(int b[],char n[]) /*短信内容函数——将每位玩家手中的牌编辑成按照黑桃、红桃、方块、梅花次序排列的短信文本内容*/
{
static char cont[4 ][14];
static char messtxt[17];
int i, j, k ;
cont[0][0]= "\006 "; /*黑桃标记*/
for(i=1;i<14;i++) /*将数组中的值转换为相应的花色*/
if(b[i-1]/13==0) cont[0][i]= ("%c ",n[b[i-1]%13]); /*该花色对应的牌*/
cont[1][0]="\003 "; /*红桃标记*/
for(i=1;i<14;i++)
if((b[i-1]/13)==1) cont[1][i]= ("%c ",n[b[i-1]%13]);
cont[2][0]="\004"; /*方块标记*/
for(i=1;i<14;i++)
if(b[i-1]/13==2) cont[2][i]= ("%c ",n[b[i-1]%13]);
cont[2][0]="\005"; /*梅花标记*/
for(i=1;i<14;i++)
if(b[i-1]/13==3||b[i]/13==4) cont[3][i]= ("%c ",n[b[i-1]%13]);
k=0;
for(i=0;i<17;i++)
{ for(j=0;j<17;j++)
{if( cont[i][j]<> " ") {
messtxt[k]= cont[i][j];
k++;
if (k=16)
{i=18;
j=18;}
}
}
return messtxt; /*返回玩家手中牌点短信内容*/
}
int comp(const void *j,const void *i) /*qsort调用的排序函数*/
{
return(*(int*)i-*(int*)j);
}
/*至此,MAS服务器自动洗牌和发牌的功能已经完成。以b1、b2、b3、b4四个数组代表4位player已经分别拿到了自己的牌。下面只要调用信息机原有的收发短信功能,即可把玩家的牌用短信发到手中!——下面以思特奇信息机发短信接口程序为例:*/
socket = App_Bind();/*建立短信链接*/
Cont1=content(b1,n); /*玩家1手中牌点*/
App_Submit(service_id, dest_terminal_id1, src_id, cont1); /*发给玩家1的短信*/
Cont2= content(b2,n); /*玩家2手中牌点*/
App_Submit(service_id, dest_terminal_id2, src_id, cont2); /*发给玩家2的短信*/
Cont3= content(b3,n); /*玩家3手中牌点*/
App_Submit(service_id, dest_terminal_id3, src_id, cont3); /*发给玩家3的短信*/
Cont4= content(b4,n); /*玩家4手中牌点*/
App_Submit(service_id, dest_terminal_id4, src_id, cont4); /*发给玩家4的短信*/
App_UnBind();/*断开短信链接*/
}
}