欢迎光临
羽柴|鬼铃'blog
QQ:34284682 | 251055853
技术高级群: FMS: 71695402 | 游戏开发:48295089
牌类游戏中取出顺子的算法
作者:admin 日期:2007-11-26
//一直忙啊,都好长时间没写BLOG了。。今天刚写到一个自动从一套牌中取出顺子的算法就贴上来吧
//以下用斗地主作为例子: 把代码贴到FLASH中导出即可看到效果,只限FLASH8 AS2版本
散牌组 = [[17, 4], [12, 3], [15, 0], [14, 2], [14, 3], [10, 3], [5, 3], [11, 3], [12, 1], [3, 0], [8, 0], [15, 3], [6, 3], [13, 1], [14, 1], [7, 2], [4, 3], [10, 1], [15, 2]];
散牌组.sortOn(0, 1 | 16);
顺子牌组 = new Array();
//建立调试点数
调试点数 = new Array();
for (var i = 0; i<散牌组.length; i++) {
调试点数.push(散牌组[0]);
}
trace("原牌组="+调试点数);
//以下用斗地主作为例子: 把代码贴到FLASH中导出即可看到效果,只限FLASH8 AS2版本
散牌组 = [[17, 4], [12, 3], [15, 0], [14, 2], [14, 3], [10, 3], [5, 3], [11, 3], [12, 1], [3, 0], [8, 0], [15, 3], [6, 3], [13, 1], [14, 1], [7, 2], [4, 3], [10, 1], [15, 2]];
散牌组.sortOn(0, 1 | 16);
顺子牌组 = new Array();
//建立调试点数
调试点数 = new Array();
for (var i = 0; i<散牌组.length; i++) {
调试点数.push(散牌组[0]);
}
trace("原牌组="+调试点数);
我们的QQ秀绘制真人版
作者:admin 日期:2007-11-13
FMS异步与其他web语言达成异步验证
作者:admin 日期:2007-10-29
如做到 FLASH 输入账号 密码去取得数据库中的数据, 目前需要.net 或php做中转。方法有sendandload和WebService较为常用(目前AS2 AS3本人不熟不知道能否直接与数据沟通)。 但大家假想,如果用FLASH客户端直接去从取。如果页面地址暴露将会有什么后果。。不能想都知道。
最理想的处理方法则是 用FLASH 把账号,密码传给FMS,让FMS去做和数据库登录验证的工作。这样才能达到最安全的机制.如下图的验证机制。

从图上可以看出,验证的主要还是由.net和php做验证。FMS只是做了把账号密码中转了一次。但这样做法有很大用途。这样让玩家无法得取.net的处理页面具体地址。要想知道就得把FMS服务器给黑了才知道,比起写在FLASH客户端用破解软件要安全的多得多。特别是现在FLASH破解软件满天飞的时代
但sendandload和WebService的处理方式是异步的,要经过访问和返回的步骤。特别在网络不佳的时候还有等待的处理。下面的例子用sendandload来简单说明怎么处理异步的FMS验证操作。
=========FMS端========
function userLogin(_newClient,usrName,usrPwd){
trace("用户登录")
thisObj=this
最理想的处理方法则是 用FLASH 把账号,密码传给FMS,让FMS去做和数据库登录验证的工作。这样才能达到最安全的机制.如下图的验证机制。

从图上可以看出,验证的主要还是由.net和php做验证。FMS只是做了把账号密码中转了一次。但这样做法有很大用途。这样让玩家无法得取.net的处理页面具体地址。要想知道就得把FMS服务器给黑了才知道,比起写在FLASH客户端用破解软件要安全的多得多。特别是现在FLASH破解软件满天飞的时代
但sendandload和WebService的处理方式是异步的,要经过访问和返回的步骤。特别在网络不佳的时候还有等待的处理。下面的例子用sendandload来简单说明怎么处理异步的FMS验证操作。
=========FMS端========
function userLogin(_newClient,usrName,usrPwd){
trace("用户登录")
thisObj=this
类似俄罗斯式拼方块游戏。[含源码]
作者:admin 日期:2007-10-28
FMS大厅建房及自动分组
作者:admin 日期:2007-10-26
之前一直忙啊忙的都没时间弄自己的东西和写BLOG了,终于告一段落了。虽然手上还有N个项目等着开发,但今天在整理debug的时候发现原来我开发大厅建房和分组机制上原来有一个不好的误区 所以也拿出来和大家分享及讨论。虽然我之前的开发一直没出现特殊问题,但今天仔细考虑后。其实是种不方便扩展和不易维护的方式。
我的现实方法就是都通过FMS 做管理和分组
客户端 服务端:room(app) DDZ(用斗地主app举例)
用客户端先去访问room,room有个数组,用来记录每场游戏的开始与否状态及人数。 room判断当前这个客户端该分配到哪一个房间 call回客户端,让客户端直接去连DDZapp 。 DDZapp每进入一个人向room call一次,当游戏开始也call 为了让room更变记录的各房间的数组信息。 一般来看逻辑是无问题,在实际应用中也没出现过问题。
但实际上这是种不良好的方式,这样主动权就变在客户端了。1 客户端一旦被破译反编,别人想建房就建。room起不到相应的作用。2 room没有一个主导权做为维护和管理。 他只是被做为一个引路者的感觉。
经过考虑后,应该改为如下方式。
room管理每个游戏APP,客户建房或分组先提交给room room去连接app(app限制初次连入者只许可room)。建房成功返回room room进行分组,或更变自身房间数组信息。假如是自动分组,所有的玩家在room中等待,由room直属分配给app。
我的现实方法就是都通过FMS 做管理和分组
客户端 服务端:room(app) DDZ(用斗地主app举例)
用客户端先去访问room,room有个数组,用来记录每场游戏的开始与否状态及人数。 room判断当前这个客户端该分配到哪一个房间 call回客户端,让客户端直接去连DDZapp 。 DDZapp每进入一个人向room call一次,当游戏开始也call 为了让room更变记录的各房间的数组信息。 一般来看逻辑是无问题,在实际应用中也没出现过问题。
但实际上这是种不良好的方式,这样主动权就变在客户端了。1 客户端一旦被破译反编,别人想建房就建。room起不到相应的作用。2 room没有一个主导权做为维护和管理。 他只是被做为一个引路者的感觉。
经过考虑后,应该改为如下方式。
room管理每个游戏APP,客户建房或分组先提交给room room去连接app(app限制初次连入者只许可room)。建房成功返回room room进行分组,或更变自身房间数组信息。假如是自动分组,所有的玩家在room中等待,由room直属分配给app。
FMS不能连入多个app的同名SO
作者:admin 日期:2007-10-12
今天在开发东西时发现这样的问题,FMS不能连入多个app的同名SO,本来就不喜欢用SharedObject的我但因为要制作也没办法,结果发现这样的问题。不知道是不是FMS的BUG 
thisObj=this
for (var i = 0; i<5; i++) {
thisObj["mync"+i] = new NetConnection();
thisObj["mync"+i].id = i;
thisObj["mync"+i].onStatus = function(info) {
if (info.code == "NetConnection.Connect.Success") {
thisObj["mync"+i] = SharedObject.getRemote("information", thisObj["mync"+i].uri, true);
thisObj["mync"+i].id = thisObj["LZnc"+i].id;
thisObj["mync"+i].connect(thisObj["LZnc"+i]);
thisObj["mync"+i].onSync = function(list) {//

thisObj=this
for (var i = 0; i<5; i++) {
thisObj["mync"+i] = new NetConnection();
thisObj["mync"+i].id = i;
thisObj["mync"+i].onStatus = function(info) {
if (info.code == "NetConnection.Connect.Success") {
thisObj["mync"+i] = SharedObject.getRemote("information", thisObj["mync"+i].uri, true);
thisObj["mync"+i].id = thisObj["LZnc"+i].id;
thisObj["mync"+i].connect(thisObj["LZnc"+i]);
thisObj["mync"+i].onSync = function(list) {//
解决xx=SO后 修改XX会影响修改到so的问题
作者:admin 日期:2007-10-12
今天获取一个 SharedObject
我想用个变量临时记录该SharedObject。需要重置的时候返回原来记录的,可惜发现一旦修改了一处 2边都会被修改,好象同数据绑定是一样效果一般。终于找到解决方法 如下:
var temp=new Array().concat(so)
//解释:
不能直接temp=so,这样随便修改一处,2边都同步变化
但用 新数组连接SO,就形成一个独立的数组了,再赋给temp吧。
//=====================================
//
//转载请注明出处:羽柴 鬼铃-blog
// www.ycflash.com/blog
我想用个变量临时记录该SharedObject。需要重置的时候返回原来记录的,可惜发现一旦修改了一处 2边都会被修改,好象同数据绑定是一样效果一般。终于找到解决方法 如下:
var temp=new Array().concat(so)
//解释:
不能直接temp=so,这样随便修改一处,2边都同步变化
但用 新数组连接SO,就形成一个独立的数组了,再赋给temp吧。
//=====================================
//
//转载请注明出处:羽柴 鬼铃-blog
// www.ycflash.com/blog











