<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[羽柴|鬼铃-blog - 游戏算法]]></title>
<link>http://www.ycflash.com/</link>
<description><![CDATA[网页游戏开发,云南游戏开发,云南flash,昆明游戏开发,昆明flash,FMS3,FMS3教程,Flash Media Server]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog3 v2.8]]></copyright>
<webMaster><![CDATA[yuchaiyuwei@163.com(羽柴|鬼铃)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>羽柴|鬼铃-blog</title>
	<url>http://www.ycflash.com/images/logos.gif</url>
	<link>http://www.ycflash.com/</link>
	<description>羽柴|鬼铃-blog</description>
</image>

			<item>
			<link>http://www.ycflash.com/article.asp?id=117</link>
			<title><![CDATA[[开源]06年开发的FMS 在线换装聊天室游戏 ]]></title>
			<author>yuchaiyuwei@163.com(admin)</author>
			<category><![CDATA[游戏算法]]></category>
			<pubDate>Wed,30 Jun 2010 22:55:40 +0800</pubDate>
			<guid>http://www.ycflash.com/default.asp?id=117</guid>
		<description><![CDATA[[开源]06年开发的FMS 在线换装聊天室游戏 <br/><br/><img src="http://www.ycflash.com/attachments/month_0711/e2007114141652.jpg" border="0" alt=""/><br/><br/><br/><img src="http://www.ycflash.com/attachments/month_0711/j2007114141659.jpg" border="0" alt=""/><br/><br/>换装小游戏聊天室. <br/>带客房端及服务端。 06年开发的小游戏，目前开源。可能有很多纰漏。<br/><br/>//=====================================<br/>//<br/>//转载请注明出处：羽柴 鬼铃-blog&nbsp;&nbsp;<br/>//&nbsp;&nbsp;&nbsp;&nbsp; www.ycflash.com/<br/>//<br/>//=====================================<br/><br/><br/><br/>忘了贴源码，现在补上<br/><br/>源码下载<br/><img src="http://www.ycflash.com/images/download.gif" alt="下载文件" style="margin:0px 2px -4px 0px"/> <a href="http://www.ycflash.com/attachments/month_1006/2010_6_30_01.rar" target="_blank">点击下载此文件</a><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.ycflash.com/article.asp?id=109</link>
			<title><![CDATA[跨层级加载时 相对路径的问题]]></title>
			<author>yuchaiyuwei@163.com(admin)</author>
			<category><![CDATA[游戏算法]]></category>
			<pubDate>Wed,15 Jul 2009 17:38:16 +0800</pubDate>
			<guid>http://www.ycflash.com/default.asp?id=109</guid>
		<description><![CDATA[今天刚好在做多层级加载时发现了这个问题.就把解决方法贴出来了<br/>问题描术:<br/>路径结构是：根级：A.swf&nbsp;&nbsp;data(文件夹)&nbsp;&nbsp;&nbsp;&nbsp; data文件夹中有 B.swf&nbsp;&nbsp; c.swf<br/>在B的代码中有加载C.swf 单独运行B时正常。&nbsp;&nbsp;用A加载B的时候，问题就出现B不会加载c.swf了。<br/>得把c.swf移到和A.swf同级别。<br/><br/>问题原因:<br/>所有加载的swf都是以最外层swf所在目录为根目录<br/>被网页加载的swf都是以网页所在目录为根目录<br/><br/>解决方法:<br/>function 计算文件目录() {<br/>&#160;&#160;&#160;&#160;var 目录索引 = _url.lastIndexOf(&#34;/&#34;);<br/>&#160;&#160;&#160;&#160;var 目录 = _url.substring(0, 目录索引);<br/>&#160;&#160;&#160;&#160;var 文件名 = _url.substring(目录索引+1);<br/>&#160;&#160;&#160;&#160;return [目录, 文件名];<br/>}<br/>trace(_url)<br/>trace(计算文件目录())<br/><br/>//*****重点. 以上函数并把目录和文件名分离了. 所以返回值的[0]是目录 [1]是文件名.这样用起来就更方便了<br/><br/>利用上面的函数,先分析得到主加载器的绝对目录.&nbsp;&nbsp;这时候不论下级载体 或下下级载体. 再调用一次该函数<br/>得到下下级载体的绝对目录.<br/><br/>这样就能得到2个绝对地址&nbsp;&nbsp;然后用字符串分析方法(IndexOf) 找出相同的部分.去掉, 剩下的就是需要的相对路径了. 这样在加载时把这个路径追加上.就能正常的加载N级关系的文件了.<br/><br/>本教程为本人原创，只供学习 如转载教程请注明出处：www.ycflash.com/<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----羽柴<br/><br/>//再把对比方法也补充上吧. 比较简单.<br/>//========计算自己的相对路径=========<br/>var 目录索引=文件目录[0].indexOf(_root.文件目录[0])<br/>var 相对路径=文件目录[0].substring(目录索引+_root.文件目录[0].length+1)<br/>trace(&#34;相对路径=&#34;+相对路径)<br/><br/><br/>//=====trace环境===解析成功.<br/>主文件目录=file:///F|/制作/A<br/>子文件目录=file:///F|/制作/A/data<br/>相对路径=data<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.ycflash.com/article.asp?id=107</link>
			<title><![CDATA[五子棋算法 + 五子棋AI 估价算法(含源码)]]></title>
			<author>yuchaiyuwei@163.com(admin)</author>
			<category><![CDATA[游戏算法]]></category>
			<pubDate>Mon,01 Jun 2009 20:50:08 +0800</pubDate>
			<guid>http://www.ycflash.com/default.asp?id=107</guid>
		<description><![CDATA[今天有人提起五子棋的算法问题，就把以前开发的源码直接贴出来了。大家去看源码学习吧<br/><br/>因为五子棋算法如果要写说明可能会写非常大一贴。所以在此就只做简单的原理说明，具体的下载源码研究吧。<br/><br/>很多人第1步肯定会问起五子棋如何判断5子相连。基本只要熟悉2维数组应用的程序员就比较容易理解了。<br/>在此用2维数组 白字为0&nbsp;&nbsp;黑子为1 用数组判断，很快就能判断出是否五子相连<br/><br/>比如用这样的小数组表示棋盘：<br/><br/>arr[0]=[0,0,0,0,1]<br/>arr[1]=[1,1,1,1,1]<br/>arr[2]=[0,1,1,1,0]<br/>arr[3]=[0,0,1,0,0]<br/>arr[4]=[1,0,0,0,1]<br/><br/>上图是一个2维数组。&nbsp;&nbsp;&nbsp;&nbsp;用肉眼很简单就能判断出 arr1这一行5个1。存在，同理。只要从一点出去（最后下的那步）进行8方面5个点的延伸出去，如果这5个点数值都一样则表示相连了<br/><br/><br/><br/>再来就是AI（机器人），先从最基本的AI谈起。 <br/>五子棋如何做机器人呢？&nbsp;&nbsp;简单的方法就是估价。什么是估价，就是当对手每走一步。就对整个棋牌每个点做估价。然后找出价值最高的点那就是机器人要走的点。我写的AI估价表如下，当然越详细的估价及棋路判断最多那机器人就越强。<br/><br/>估价表(空值)<br/><br/>当前玩家&#160;&#160;&#160;&#160;连成的子数&#160;&#160;&#160;&#160;权值<br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活2 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1<br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2<br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活3&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;3<br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活3&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;4<br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活4&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;5<br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活4&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;6<br/><br/><br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活5&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;7<br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活5&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;8<br/><br/><br/>估价表(全值)<br/><br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活挡2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;1<br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活挡2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2<br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活空2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;3<br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活空2&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;4<br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活挡3&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;5<br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活挡3&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;6<br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活空3&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;7<br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活空3&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;8<br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活挡4&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;9<br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活挡4&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;10<br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活空4&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;11<br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活空4&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;12<br/>对手&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活挡5&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;14<br/>PC&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;成活挡5&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;15<br/><br/>棋子数&#160;&#160;&#160;&#160;2 3 4&#160;&#160;&#160;&#160;5<br/>倍率&#160;&#160;&#160;&#160;1 2 2.5&#160;&#160;&#160;&#160;3<br/><br/>PC&#160;&#160;&#160;&#160;4 8 12<br/>对手&#160;&#160;&#160;&#160;3 7 11<br/>PC&#160;&#160;&#160;&#160;2 6 10&#160;&#160;&#160;&#160;15<br/>对手&#160;&#160;&#160;&#160;1 5 9&#160;&#160;&#160;&#160;14<br/><br/><br/>公式<br/>对手空&#160;&#160;&#160;&#160;子数*倍率+2<br/>PC空&#160;&#160;&#160;&#160;子数*倍率+1<br/>对手挡&#160;&#160;&#160;&#160;子数*倍率<br/>PC挡&#160;&#160;&#160;&#160;子数*倍率-1<br/><br/><br/>可能一开始看上表完全不理解，这很正常。不过在此只说原理，至于实现方法看源码就行。 <br/>用如下例子来说明什么是估价，如何做估价。<br/>最基本的就是：用一开始的判断输赢的方法，能取到1个点延伸8方向所得到8个方向8种排列的棋子情况。然后找出这8个方向中棋子拥有最多的数量就是这个点的估价。用通俗的话来解释下。<br/>比如一开始那个数组：<br/><br/>arr[0]=[0,0,0,0,1]<br/>arr[1]=[1,？,1,1,1]<br/>arr[2]=[0,1,1,1,0]<br/>arr[3]=[0,0,1,0,0]<br/>arr[4]=[1,0,0,0,1]<br/><br/>大家看arr[1]这列，？处的估价是多少呢？ 首先从这点出发，8方向找出子最多的一条则是估价。从肉眼上看一看就明白了那就是？处的右边。有3个1。子越多，表示他的价值最高。取出子最多的一方向就是这个点的估价。<br/><br/>这时候大家应该知道1个点的价价了。但这是不够的，省下的就是用同样的方法，找出整个棋盘里面没有下棋子的地方，然后用同样的方法计算它们的估价。价值最高的点。就是AI要走的点。 <br/><br/><br/><br/>//==========源码点击此处下载========= <br/><img src="http://www.ycflash.com/images/download.gif" alt="下载文件" style="margin:0px 2px -4px 0px"/> <a href="http://www.ycflash.com/attachments/month_0906/y200961204920.rar" target="_blank">点击下载此文件</a><br/><br/><br/><br/>本源码入教程为本人原创，只供学习，如用至违法用途与作者无关。 <br/>如转载教程请注明出处：www.ycflash.com/ycblog&nbsp;&nbsp;<br/><br/> &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;----羽柴<br/><br/>功能说明：<br/>五子棋 AS2版。开发环境flash8 开发时间2006年7月<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.ycflash.com/article.asp?id=105</link>
			<title><![CDATA[骰子游戏根据总数随机显示骰子值[反算法]]]></title>
			<author>yuchaiyuwei@163.com(admin)</author>
			<category><![CDATA[游戏算法]]></category>
			<pubDate>Fri,01 May 2009 17:38:45 +0800</pubDate>
			<guid>http://www.ycflash.com/default.asp?id=105</guid>
		<description><![CDATA[在开发网络版关于 1-2颗骰子游戏过程中，经常会出现这样的情况。服务端随机取了骰子的总数，在客户端得根据这个骰子总数随机分配。1颗骰子当然就没必要了。 主要是2颗骰子<br/>比如： 服务端发来骰子和： 8点&nbsp;&nbsp; 客户端的2颗骰子就要随机显示，&nbsp;&nbsp;有可能1,7&nbsp;&nbsp;2,6&nbsp;&nbsp;&nbsp;&nbsp;3,5&nbsp;&nbsp; 4,4&nbsp;&nbsp; 5,3&nbsp;&nbsp;6,2&nbsp;&nbsp; 7,1 这样的结果。现在把算法列出来。<br/><br/>//==============算法如下====================<br/>function 计算骰子值(总值, 骰子数) {<br/>&#160;&#160;&#160;&#160;var 骰子值 = new Array();<br/>&#160;&#160;&#160;&#160;if (骰子数 == 1) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;骰子值 = [总值, 0];<br/>&#160;&#160;&#160;&#160;} else if (骰子数 == 2) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (总值&gt;6) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var 随机最小值 = 总值-6;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var 随机最大值 = 6;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (随机最小值 == 随机最大值) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var ran值 = 6;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;骰子值 = [ran值, 总值-ran值];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} else {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var ran值 = random(6-随机最小值)+随机最小值;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;骰子值 = [ran值, 总值-ran值];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} else {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var 随机最小值 = 1;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var 随机最大值 = 总值;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (总值 == 6) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;随机最大值 = 5;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(&#34;随机最小值=&#34;+随机最小值) <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(&#34;随机最大值=&#34;+随机最大值)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(随机最大值-随机最小值+1)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var ran值 = random(随机最大值-随机最小值)+随机最小值;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;骰子值 = [ran值, 总值-ran值];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;//trace(&#34;骰子值=&#34;+骰子值);&nbsp;&nbsp;&nbsp;&nbsp;<br/>&#160;&#160;&#160;&#160;return 骰子值;<br/>}<br/>//========================调试方法======================<br/>for (var i = 0; i&lt;1000; i++) {<br/>&#160;&#160;&#160;&#160;var 总值 = random(11)+2;<br/>&#160;&#160;&#160;&#160;var 骰子值 = 计算骰子值(总值, 2);<br/>&#160;&#160;&#160;&#160;var OK = &#34;不成立&#34;;<br/>&#160;&#160;&#160;&#160;if (总值 == 骰子值[0]+骰子值[1] &amp;&amp; 骰子值[0]&gt;0 &amp;&amp; 骰子值[0]&lt;7 &amp;&amp; 骰子值[1]&gt;0 &amp;&amp; 骰子值[1]&lt;7) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;OK = &#34;成立&#34;;<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;trace(&#34;总值=&#34;+总值+&#34; 骰子值=&#34;+骰子值+&#34; &#34;+OK);<br/>&#160;&#160;&#160;&#160;if (OK==&#34;不成立&#34;) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;trace(&#34;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&#34;);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(&#34;总值=&#34;+总值+&#34; 骰子值=&#34;+骰子值+&#34; &#34;+OK);<br/>&#160;&#160;&#160;&#160;}<br/>}<br/>//=====================================<br/>//<br/>//转载请注明出处：羽柴 鬼铃-blog&nbsp;&nbsp;www.ycflash.com/blog<br/>//<br/>//===================================== <br/>]]></description>
		</item>
		
			<item>
			<link>http://www.ycflash.com/article.asp?id=83</link>
			<title><![CDATA[牌类游戏中取出顺子的算法]]></title>
			<author>yuchaiyuwei@163.com(admin)</author>
			<category><![CDATA[游戏算法]]></category>
			<pubDate>Mon,26 Nov 2007 23:26:11 +0800</pubDate>
			<guid>http://www.ycflash.com/default.asp?id=83</guid>
		<description><![CDATA[//一直忙啊，都好长时间没写BLOG了。。今天刚写到一个自动从一套牌中取出顺子的算法就贴上来吧<br/>//以下用斗地主作为例子： 把代码贴到FLASH中导出即可看到效果，只限FLASH8&nbsp;&nbsp;AS2版本<br/>散牌组 = [[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]];<br/>散牌组.sortOn(0, 1 | 16);<br/>顺子牌组 = new Array();<br/>//建立调试点数<br/>调试点数 = new Array();<br/>for (var i = 0; i&lt;散牌组.length; i++) {<br/>&#160;&#160;&#160;&#160;调试点数.push(散牌组[i][0]);<br/>}<br/>trace(&#34;原牌组=&#34;+调试点数);<br/>for (var i = 0; i&lt;散牌组.length-5; i++) {<br/>&#160;&#160;&#160;&#160;//用来记录合格的编号<br/>&#160;&#160;&#160;&#160;var 编号数组 = new Array();<br/>&#160;&#160;&#160;&#160;//追加值用来判断如果成对的跳跃判断数<br/>&#160;&#160;&#160;&#160;var 跳跃值 = 0;<br/>&#160;&#160;&#160;&#160;for (var j = 0; j&lt;散牌组.length-i; j++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(散牌组[i+j][0]+&#34;==&#34;+(散牌组[i+j+1][0]-1+跳跃值)+&#34; 跳跃值=&#34;+跳跃值);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (散牌组[i+j][0]+跳跃值 == 散牌组[i+j+1][0]+跳跃值 &amp;&amp; 散牌组[i+j+1][0]&lt;=15) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;跳跃值++;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} else if (散牌组[i+j][0]+跳跃值 == 散牌组[i+j+1][0]-1+跳跃值 &amp;&amp; 散牌组[i+j+1][0]&lt;=15) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;编号数组.push(i+j);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} else {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;break;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;if (编号数组.length&gt;=5) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var 临时牌组 = new Array();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var 减编号 = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for (var j = 0; j&lt;编号数组.length; j++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var 删除值 = 散牌组.splice(编号数组[j]-减编号, 1);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;减编号++;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;临时牌组.push(删除值[0]);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;顺子牌组.push(临时牌组);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;i = 0;<br/>&#160;&#160;&#160;&#160;}<br/>}<br/>trace(&#34;抽取的组队数=&#34;+顺子牌组.length);<br/>trace(&#34;=============处理取牌后的结果=========&#34;);<br/>for (var n = 0; n&lt;顺子牌组.length; n++) {<br/>&#160;&#160;&#160;&#160;调试点数 = new Array();<br/>&#160;&#160;&#160;&#160;for (var i = 0; i&lt;顺子牌组[n].length; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;调试点数.push(顺子牌组[n][i][0]);<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;trace(&#34;顺子牌组&#34;+n+&#34;=&#34;+调试点数);<br/>}<br/>调试点数 = new Array();<br/>for (var i = 0; i&lt;散牌组.length; i++) {<br/>&#160;&#160;&#160;&#160;调试点数.push(散牌组[i][0]);<br/>}<br/>trace(&#34;抽取后剩下的散牌=&#34;+调试点数);<br/>//=====================================<br/>//<br/>//转载请注明出处：羽柴 鬼铃-blog&nbsp;&nbsp;www.ycflash.com/blog<br/>//<br/>//=====================================]]></description>
		</item>
		
			<item>
			<link>http://www.ycflash.com/article.asp?id=79</link>
			<title><![CDATA[类似俄罗斯式拼方块游戏。[含源码]]]></title>
			<author>yuchaiyuwei@163.com(admin)</author>
			<category><![CDATA[游戏算法]]></category>
			<pubDate>Sun,28 Oct 2007 17:02:18 +0800</pubDate>
			<guid>http://www.ycflash.com/default.asp?id=79</guid>
		<description><![CDATA[昨天朋友急需开发一个类似俄罗斯式拼方块游戏。 在赶项目过程中，只有花去晚上3小时赶出了这个游戏。基原理和俄罗斯方块一样简单，维持2维数组碰撞。成形后消除，现发上来给大家研究下吧。<br/><br/>拼成如下图形后消失。<br/><img src="http://www.ycflash.com/attachments/month_0710/p20071028165838.gif" border="0" alt=""/><br/><br/>============核心源码===========<br/>function 变量初始() {<br/>&#160;&#160;&#160;&#160;场景高格数 = 12;<br/>&#160;&#160;&#160;&#160;场景宽格数 = 12;<br/>&#160;&#160;&#160;&#160;单元格高宽 = 30;<br/>&#160;&#160;&#160;&#160;移动时间 = 1000;<br/>&#160;&#160;&#160;&#160;游戏结束 = false;<br/>&#160;&#160;&#160;&#160;场景数组 = new Array();<br/>&#160;&#160;&#160;&#160;//生成2维数组<br/>&#160;&#160;&#160;&#160;for (var i = 0; i&lt;场景高格数; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;场景数组[i] = new Array();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for (var j = 0; j&lt;场景宽格数; j++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;场景数组[i][j] = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//动态生出测试文本<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this.cr&#101;ateTextField(&#34;文本&#34;+i+&#34;@&#34;+j, (i*场景高格数+j)*10, i*单元格高宽, j*单元格高宽, 100, 100);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;文本&#34;+i+&#34;@&#34;+j].color = 0xff0000;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;文本&#34;+i+&#34;@&#34;+j].text = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;//<br/>&#160;&#160;&#160;&#160;出现位置 = [5, 0];<br/>&#160;&#160;&#160;&#160;方块数量 = 0;<br/>&#160;&#160;&#160;&#160;生成方块();<br/>&#160;&#160;&#160;&#160;//在原点上的增加位 2维增加位 [1,1],[0,0]&nbsp;&nbsp;前2位为第1行,后2位为第2行<br/>&#160;&#160;&#160;&#160;形状数组 = [[&#34;无需数据&#34;], [1, 0], [0, 1], [-1, 0], [0, -1]];<br/>}<br/>变量初始();<br/>//<br/>function 生成方块() {<br/>&#160;&#160;&#160;&#160;trace(&#34;ss&#34;);<br/>&#160;&#160;&#160;&#160;if (!游戏结束) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;方块数量++;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;attachMovie(&#34;方块&#34;, &#34;方块&#34;+方块数量, 方块数量);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;形状 = int(random(4))+1;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;当前操作方块 = this[&#34;方块&#34;+方块数量];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;方块&#34;+方块数量].形状 = 形状;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;方块&#34;+方块数量].gotoAndStop(形状);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;方块&#34;+方块数量].运行 = 运行;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;方块&#34;+方块数量].移动 = 移动;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;方块&#34;+方块数量].计算可否移动 = 计算可否移动;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;方块&#34;+方块数量]._x = 出现位置[0]*单元格高宽+15;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;方块&#34;+方块数量]._y = 出现位置[1]*单元格高宽+15;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;方块&#34;+方块数量].运行(移动时间, 形状);<br/>&#160;&#160;&#160;&#160;}<br/>}<br/>function 运行(移动时间, 形状) {<br/>&#160;&#160;&#160;&#160;this.移动间隔 = setInterval(移动, 移动时间, this);<br/>}<br/>function 移动($this) {<br/>&#160;&#160;&#160;&#160;//trace(&#34;移动 &#34;+$this);<br/>&#160;&#160;&#160;&#160;$this._y += 30;<br/>&#160;&#160;&#160;&#160;//计算可否移动<br/>&#160;&#160;&#160;&#160;计算可否移动($this, $this._x, $this._y, $this.形状);<br/>}<br/>function 横向移动($this, 方向) {<br/>&#160;&#160;&#160;&#160;var 二维坐标 = [int($this._x/单元格高宽), int($this._y/单元格高宽)];<br/>&#160;&#160;&#160;&#160;//trace(二维坐标)<br/>&#160;&#160;&#160;&#160;if (方向 == &#34;左&#34; &amp;&amp; (场景数组[二维坐标[0]-1][二维坐标[1]] == 0 &amp;&amp; 场景数组[二维坐标[0]+形状数组[$this.形状][0]-1][二维坐标[1]+形状数组[$this.形状][1]] == 0)) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$this._x -= 30;<br/>&#160;&#160;&#160;&#160;} else if (方向 == &#34;右&#34; &amp;&amp; (场景数组[二维坐标[0]+1][二维坐标[1]] == 0 &amp;&amp; 场景数组[二维坐标[0]+形状数组[$this.形状][0]+1][二维坐标[1]+形状数组[$this.形状][1]] == 0)) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$this._x += 30;<br/>&#160;&#160;&#160;&#160;}<br/>}<br/>function 计算可否移动($this, X, Y, 形状) {<br/>&#160;&#160;&#160;&#160;当前2维坐标 = [int(X/单元格高宽), int(Y/单元格高宽)];<br/>&#160;&#160;&#160;&#160;//trace(当前2维坐标)<br/>&#160;&#160;&#160;&#160;//trace(场景数组[当前2维坐标[0]][当前2维坐标[1]+1]);<br/>&#160;&#160;&#160;&#160;//判断游戏是否结束<br/>&#160;&#160;&#160;&#160;//判断是否碰到阻碍 <br/>&#160;&#160;&#160;&#160;if (场景数组[当前2维坐标[0]][当前2维坐标[1]+1] != 0 || 场景数组[当前2维坐标[0]+形状数组[$this.形状][0]][当前2维坐标[1]+形状数组[$this.形状][1]+1] != 0) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(&#34;形状=&#34;+$this.形状);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(&#34;形状数组=&#34;+形状数组[$this.形状]);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;场景数组[当前2维坐标[0]][当前2维坐标[1]] = 1;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;文本&#34;+当前2维坐标[0]+&#34;@&#34;+当前2维坐标[1]].text = 1;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;场景数组[当前2维坐标[0]+形状数组[形状][0]][当前2维坐标[1]+形状数组[$this.形状][1]] = 2;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;文本&#34;+(当前2维坐标[0]+形状数组[$this.形状][0])+&#34;@&#34;+(当前2维坐标[1]+形状数组[$this.形状][1])].text = 1;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(this[&#34;文本&#34;+(当前2维坐标[0]+形状数组[$this.形状][0])+&#34;@&#34;+(当前2维坐标[1]+形状数组[$this.形状][1])]);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var temp形状 = $this.形状;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;clearInterval($this.移动间隔);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$this.removeMovieClip();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(this[&#34;方块&#34;+当前2维坐标[0]+&#34;@&#34;+当前2维坐标[1]]);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;是否清除 = 判断可否消除();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (是否清除) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} else {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//同位置生成<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;attachMovie(&#34;方块&#34;, &#34;方块&#34;+当前2维坐标[0]+&#34;@&#34;+当前2维坐标[1], 方块数量);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;方块&#34;+当前2维坐标[0]+&#34;@&#34;+当前2维坐标[1]]._x = 当前2维坐标[0]*单元格高宽+15;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;方块&#34;+当前2维坐标[0]+&#34;@&#34;+当前2维坐标[1]]._y = 当前2维坐标[1]*单元格高宽+15;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;方块&#34;+当前2维坐标[0]+&#34;@&#34;+当前2维坐标[1]].形状 = temp形状;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;方块&#34;+当前2维坐标[0]+&#34;@&#34;+当前2维坐标[1]].gotoAndStop(temp形状);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (当前2维坐标[1]-1 == 0 || (当前2维坐标[1]+形状数组[$this.形状][1])-1 == 0) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;trace(&#34;======游戏结束=======&#34;);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;游戏结束 = true;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} else {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;生成方块();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>}<br/>function 判断可否消除() {<br/>&#160;&#160;&#160;&#160;for (var i = 1; i&lt;场景高格数-1; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for (var j = 1; j&lt;场景宽格数-1; j++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (场景数组[i-1][j-1] == 1 &amp;&amp; 场景数组[i][j-1] == 2 &amp;&amp; 场景数组[i+1][j-1] == 1 &amp;&amp; 场景数组[i-1][j] == 2 &amp;&amp; 场景数组[i+1][j] ==2 &amp;&amp; 场景数组[i-1][j+1] == 1 &amp;&amp; 场景数组[i][j+1] == 2 &amp;&amp; 场景数组[i+1][j+1] == 1) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;trace(&#34;拼成一个 &#34;+i+&#34;@&#34;+j);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;文本&#34;+(i-1)+&#34;@&#34;+(j-1)].text = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;文本&#34;+(i)+&#34;@&#34;+(j-1)].text = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;文本&#34;+(i+1)+&#34;@&#34;+(j-1)].text = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;文本&#34;+(i-1)+&#34;@&#34;+(j)].text = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;文本&#34;+(i+1)+&#34;@&#34;+(j)].text = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;文本&#34;+(i-1)+&#34;@&#34;+(j+1)].text = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;文本&#34;+(i)+&#34;@&#34;+(j+1)].text = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;文本&#34;+(i+1)+&#34;@&#34;+(j+1)].text = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;方块&#34;+(i-1)+&#34;@&#34;+(j-1)].removeMovieClip();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;方块&#34;+(i+1)+&#34;@&#34;+(j-1)].removeMovieClip();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;方块&#34;+(i-1)+&#34;@&#34;+(j+1)].removeMovieClip();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;方块&#34;+(i+1)+&#34;@&#34;+(j+1)].removeMovieClip();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;场景数组[i-1][j-1] = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;场景数组[i][j-1] = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;场景数组[i+1][j-1] = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;场景数组[i-1][j] = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;场景数组[i+1][j] = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;场景数组[i-1][j+1] = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;场景数组[i][j+1] = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;场景数组[i+1][j+1] = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return true;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;return false;<br/>}<br/>//热键<br/>var keyListener:Object = new Object();<br/>keyListener.onKeyDown = function() {<br/>&#160;&#160;&#160;&#160;//trace(Key.getCode());<br/>&#160;&#160;&#160;&#160;//空格键<br/>&#160;&#160;&#160;&#160;if (Key.isDown(32) || Key.isDown(38)) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;当前操作方块.形状++;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (当前操作方块.形状&gt;4) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;当前操作方块.形状 = 1;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;当前操作方块.gotoAndStop(当前操作方块.形状);<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;//向下键&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&#160;&#160;&#160;&#160;if (Key.isDown(40)) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (!游戏结束) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;移动(当前操作方块);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;if (Key.isDown(37)) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;横向移动(当前操作方块, &#34;左&#34;);<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;if (Key.isDown(39)) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;横向移动(当前操作方块, &#34;右&#34;);<br/>&#160;&#160;&#160;&#160;}<br/>};<br/>Key.addListener(keyListener);<br/>//=====================================<br/>//<br/>//转载请注明出处：羽柴 鬼铃-blog&nbsp;&nbsp;www.ycflash.com/blog<br/>//<br/>//=====================================<br/><br/><br/><br/>源码下载：<br/><img src="http://www.ycflash.com/images/download.gif" alt="下载文件" style="margin:0px 2px -4px 0px"/> <a href="http://www.ycflash.com/attachments/month_0710/42007102817215.rar" target="_blank">点击下载此文件</a><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.ycflash.com/article.asp?id=59</link>
			<title><![CDATA[RPG地图程序模块]]></title>
			<author>yuchaiyuwei@163.com(admin)</author>
			<category><![CDATA[游戏算法]]></category>
			<pubDate>Fri,14 Sep 2007 13:01:47 +0800</pubDate>
			<guid>http://www.ycflash.com/default.asp?id=59</guid>
		<description><![CDATA[功能说明：<br/>RPG 45度地图编辑器<br/><br/>特色：<br/>windows人性化操作，支持Ctrl键 多选地图单元，或shift点头 再点结束点 选启矩形区域。* windows的鼠标框选地图操作，按住鼠标 拖动 放开鼠标选中区域。<br/><br/><br/>后期修改:<br/>1 修改物体深度的bug<br/>//=====================================<br/>//<br/>//转载请注明出处：羽柴 鬼铃-blog&nbsp;&nbsp;<br/>//&nbsp;&nbsp;&nbsp;&nbsp; www.ycflash.com/blog<br/>//<br/>//=====================================<br/><br/><img src="http://www.ycflash.com/images/download.gif" alt="下载文件" style="margin:0px 2px -4px 0px"/> <a href="http://www.ycflash.com/attachments/month_0709/t200791413136.rar" target="_blank">点击下载此文件</a><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.ycflash.com/article.asp?id=58</link>
			<title><![CDATA[网络版21点 第1步：游戏准备+发牌动作]]></title>
			<author>yuchaiyuwei@163.com(admin)</author>
			<category><![CDATA[游戏算法]]></category>
			<pubDate>Fri,14 Sep 2007 12:42:39 +0800</pubDate>
			<guid>http://www.ycflash.com/default.asp?id=58</guid>
		<description><![CDATA[一直以来有很多朋友都要我提供一些FLASH+FMS 开发的教程或样例。由于时间太忙，而且要做的事情也太多。挑了21点来做，然后共享给大家。但工作关系，只能一步一步的增加完善。请自行安装FMS服务端软件 把源文件中的card21文件夹放至服务端 applications目录中<br/>//----------------------------------------------------------------------------<br/>//================客户端代码如下：================<br/>//----------------------------------------------------------------------------<br/>myinfo = new Object();<br/>//测试用户<br/>myname = &#34;临时&#34;+int(random(99));<br/>myinfo = ({姓名:myname, 积分:1000});<br/>//===================连接实例===============<br/>// 客户端连接<br/>nc = new NetConnection();<br/>// 处理来自伺候器的任何状态变化和反应 <br/>nc.onStatus = function(info) {<br/>&#160;&#160;&#160;&#160;//连接成功进入<br/>&#160;&#160;&#160;&#160;if (info.code == &#34;NetConnection.Connect.Success&#34;) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;trace(&#34;连接成功&#34;);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;准备按钮._visible = true;<br/>&#160;&#160;&#160;&#160;} else if (info.code == &#34;NetConnection.Connect.Closed&#34;) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;trace(&#34;断开连接 &#34;);<br/>&#160;&#160;&#160;&#160;} else if (info.code == &#34;NetConnection.Connect.Rejected&#34;) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;trace(&#34;无法连接 出错信息=&#34;+info.application.message);<br/>&#160;&#160;&#160;&#160;}<br/>};<br/>nc.connect(&#34;rtmp:/card21&#34;, myinfo);<br/>显隐牌 = function (id, 显隐, index, 长度) {<br/>&#160;&#160;&#160;&#160;if (index == undefined) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;index = 0;<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;if (长度 == undefined) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;长度 = 5;<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;for (var i = index; i&lt;index+长度; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;玩家牌&#34;+id+i]._visible = 显隐;<br/>&#160;&#160;&#160;&#160;}<br/>};<br/>牌形 = function (对象, 点数, 花色) {<br/>&#160;&#160;&#160;&#160;//trace(this[&#34;牌组&#34;+myID]);<br/>&#160;&#160;&#160;&#160;//牌形<br/>&#160;&#160;&#160;&#160;//改变牌形<br/>&#160;&#160;&#160;&#160;trace(&#34;执行牌形 &#34;+对象+&#34; &#34;+花色+&#34; &#34;+点数);<br/>&#160;&#160;&#160;&#160;//把数字花色换为字符花色<br/>&#160;&#160;&#160;&#160;if (花色 == 0) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;花色 = &#34;方块&#34;;<br/>&#160;&#160;&#160;&#160;} else if (花色 == 1) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;花色 = &#34;梅花&#34;;<br/>&#160;&#160;&#160;&#160;} else if (花色 == 2) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;花色 = &#34;红桃&#34;;<br/>&#160;&#160;&#160;&#160;} else if (花色 == 3) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;花色 = &#34;黑桃&#34;;<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;对象.黑桃._visible = false;<br/>&#160;&#160;&#160;&#160;对象.红桃._visible = false;<br/>&#160;&#160;&#160;&#160;对象.梅花._visible = false;<br/>&#160;&#160;&#160;&#160;对象.方块._visible = false;<br/>&#160;&#160;&#160;&#160;对象.王._visible = false;<br/>&#160;&#160;&#160;&#160;对象[花色]._visible = true;<br/>&#160;&#160;&#160;&#160;对象[花色].gotoAndStop(点数);<br/>};<br/>初始数据 = function () {<br/>&#160;&#160;&#160;&#160;//让所有牌隐藏<br/>&#160;&#160;&#160;&#160;for (var i = 0; i&lt;6; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;显隐牌(i, false);<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;准备按钮._visible = false;<br/>};<br/>初始数据();<br/>//==============按钮事件==============<br/>准备按钮.onRelease = function() {<br/>&#160;&#160;&#160;&#160;nc.call(&#34;game_start&#34;);<br/>&#160;&#160;&#160;&#160;this._visible = false;<br/>};<br/>//<br/>//=============服务端传来事件==========<br/>thisObj = this;<br/>nc.开始游戏 = function(牌组) {<br/>&#160;&#160;&#160;&#160;trace(&#34;开始游戏&#34;);<br/>&#160;&#160;&#160;&#160;//显示刷新牌<br/>&#160;&#160;&#160;&#160;for (var i = 0; i&lt;5; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;trace(牌组[i]);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;显隐牌(i, true, 0, 牌组[i].length);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for (var j = 0; j&lt;牌组[i].length; j++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;牌形(thisObj[&#34;玩家牌&#34;+i+j], 牌组[i][j][0], 牌组[i][j][1]);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>};<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>//----------------------------------------------------------------------------<br/>//================服务端代码如下：================<br/>//----------------------------------------------------------------------------<br/><br/>//==========================<br/>thisObj=this<br/>new_data = function () {<br/>&#160;&#160;&#160;&#160;//最大玩家<br/>&#160;&#160;&#160;&#160;p_max = 6;<br/>&#160;&#160;&#160;&#160;//每个玩家牌初始<br/>&#160;&#160;&#160;&#160;gm_start=new Array()<br/>&#160;&#160;&#160;&#160;cards = new Array();&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;for (var i = 0; i&lt;6; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;cards[i] = new Array();&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;gm_start[i]=false<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;//游戏是否开始<br/>&#160;&#160;&#160;&#160;game_strat=false<br/>&#160;&#160;&#160;&#160;<br/>};<br/>//-----------------------<br/>new_data();<br/>//-------------<br/>//玩家群信息<br/>p_info = new Array();<br/>for (var i = 0; i&lt;p_max; i++) {<br/>&#160;&#160;&#160;&#160;p_info[i] = new Object();<br/>}<br/>//p_score = [0, 0, 0];<br/>//IP群<br/>ip_array = [&#34;&#34;, &#34;&#34;, &#34;&#34;];<br/>//----------------------------------------<br/><br/>//-----------------------------------------------------------<br/>application.onConnect = function(newClient,&nbsp;&nbsp;my_info) {<br/>&#160;&#160;&#160;&#160;var err = new Object();&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;if (!game_strat) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//分配ID索引<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for (var i = 0; i&lt;p_max; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (p_info[i][&#34;姓名&#34;] == undefined) {&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;application.acceptConnection(newClient);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;trace(&#34;分配ID &#34;+i);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;newClient.nickname = my_info[&#34;姓名&#34;];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;newClient.myID = i;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;p_info[i] = my_info;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;newClient.call(&#34;初始数据&#34;, null, i);&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//统计人数并跳出循环&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;err.message = &#34;人数已满&#34;;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;application.rejectConnection(newClient,err);<br/>&#160;&#160;&#160;&#160;} else {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;err.message = &#34;已经开始游戏&#34;;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;application.rejectConnection(newClient,err);<br/>&#160;&#160;&#160;&#160;}<br/>};<br/>application.onDisconnect = function(newClient) {<br/>&#160;&#160;&#160;&#160;p_info[newClient.myID]=new Object()<br/>&#160;&#160;&#160;&#160;//删除大厅列表数据<br/>&#160;&#160;&#160;&#160;if (newClient.myID != undefined) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (game_strat) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;trace(&#34;游戏开始时 有玩家退出&#34;);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;game_strat=false<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;new_data()<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} else {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>};<br/>//检测在线情况<br/>online = function () {<br/>&#160;&#160;&#160;&#160;//trace(&#34;30秒检测在线情况&#34;);<br/>&#160;&#160;&#160;&#160;for (var i = 0; i&lt;application.clients.length; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (application.clients[i].ping()) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} else {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;application.disconnect(application.clients[i]);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>};<br/>setInterval(online, 30000);<br/>//-----------------------------------------------<br/>//--------------------游戏开始函数----------------<br/>//multiple:倍率 用于开始下注<br/>Client.prototype.game_start = function(multiple) {<br/>&#160;&#160;&#160;&#160;//让开始数组中的自己开始<br/>&#160;&#160;&#160;&#160;gm_start[this.myID] = true;<br/>&#160;&#160;&#160;&#160;//追加自己的信息<br/>&#160;&#160;&#160;&#160;//p_info[this.myID] = my_info;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;//准备数<br/>&#160;&#160;&#160;&#160;var st_count = 0;<br/>&#160;&#160;&#160;&#160;//判断是否都开始游戏了<br/>&#160;&#160;&#160;&#160;for (var i = 0; i&lt;p_max; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (gm_start[i]) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;st_count++;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;//全部都准备了 2玩家以上才能开始<br/>&#160;&#160;&#160;&#160;if (st_count == application.clients.length&nbsp;&nbsp;&amp;&amp; st_count&gt;=2) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;trace(&#34;开始游戏&#34;)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;game_strat = true;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//洗牌<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;shuffle();&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//抽牌<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for (var i = 0; i&lt;p_max; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//判断是否该玩家开始才抽牌<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (gm_start[i]) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//初始抽取2张牌<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;pickUp_card(i)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;pickUp_card(i)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//发送牌数据给客户端<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;application.broadcastMsg(&#34;开始游戏&#34;,cards)<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>};<br/>//--------------------------------------------------------------------<br/>//洗牌函数<br/>shuffle = function () {<br/>&#160;&#160;&#160;&#160;//动态设置allcard52张<br/>&#160;&#160;&#160;&#160;allcard = new Array();<br/>&#160;&#160;&#160;&#160;for (var i = 0; i&lt;4; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for (var j = 3; j&lt;=15; j++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;allcard.push([j, i]);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>};<br/>//提取牌 参数说明：取牌ID<br/>pickUp_card = function (id) {<br/>&#160;&#160;&#160;&#160;//随机取出一张牌<br/>&#160;&#160;&#160;&#160;var tempID = Math.floor(Math.random()*allcard.length);<br/>&#160;&#160;&#160;&#160;var tempCard = allcard.splice(tempID, 1);<br/>&#160;&#160;&#160;&#160;cards[id].push(tempCard[0]);<br/>};<br/>//<br/>//=====================================================================<br/>//O==[]:::::::::::::::::::::&gt;<br/>//<br/>//O:::::::::::::::::::::::[]-&gt;<br/>//=====================================================================<br/>//--------------------------****核心算法***----------------------------<br/>//主要执行的函数 判断并评估牌值<br/>estimate_card = function (choose_card) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //待加中<br/>};<br/><br/>//=====================================<br/>//<br/>//转载请注明出处：羽柴 鬼铃-blog&nbsp;&nbsp;<br/>//&nbsp;&nbsp;&nbsp;&nbsp; www.ycflash.com/blog<br/>//<br/>//=====================================<br/><br/><br/>源码：<br/><img src="http://www.ycflash.com/images/download.gif" alt="下载文件" style="margin:0px 2px -4px 0px"/> <a href="http://www.ycflash.com/attachments/month_0709/32007914124225.rar" target="_blank">点击下载此文件</a><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.ycflash.com/article.asp?id=56</link>
			<title><![CDATA[棋牌游戏 梭哈发牌和比牌算法]]></title>
			<author>yuchaiyuwei@163.com(admin)</author>
			<category><![CDATA[游戏算法]]></category>
			<pubDate>Thu,06 Sep 2007 09:43:58 +0800</pubDate>
			<guid>http://www.ycflash.com/default.asp?id=56</guid>
		<description><![CDATA[//梭哈发牌和比牌算法<br/>演示如下：<br/><div class="UBBPanel"><div class="UBBTitle"><img src="http://www.ycflash.com/images/flash.gif" alt="" style="margin:0px 2px -3px 0px" border="0"/>Flash动画</div><div class="UBBContent"><a id="temp59745_href" href="http://www.ycflash.com/javascript:MediaShow('swf','temp59745','attachments/month_0709/n20079694344.swf','400','300')"><img name="temp59745_img" src="http://www.ycflash.com/images/mm_snd.gif" style="margin:0px 3px -2px 0px" border="0" alt=""/><span id="temp59745_text">在线播放</span></a><div id="temp59745"></div></div></div><br/><br/>牌形 = function (对象, 花色, 点数) {<br/>&#160;&#160;&#160;&#160;//trace(&#34;执行牌形 &#34;+对象+&#34; &#34;+花色+&#34; &#34;+点数);<br/>&#160;&#160;&#160;&#160;//把数字花色换为字符花色<br/>&#160;&#160;&#160;&#160;if (花色 == 0) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;花色 = &#34;方块&#34;;<br/>&#160;&#160;&#160;&#160;} else if (花色 == 1) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;花色 = &#34;梅花&#34;;<br/>&#160;&#160;&#160;&#160;} else if (花色 == 2) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;花色 = &#34;红桃&#34;;<br/>&#160;&#160;&#160;&#160;} else if (花色 == 3) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;花色 = &#34;黑桃&#34;;<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;this[对象].黑桃._visible = false;<br/>&#160;&#160;&#160;&#160;this[对象].红桃._visible = false;<br/>&#160;&#160;&#160;&#160;this[对象].梅花._visible = false;<br/>&#160;&#160;&#160;&#160;this[对象].方块._visible = false;<br/>&#160;&#160;&#160;&#160;this[对象][花色]._visible = true;<br/>&#160;&#160;&#160;&#160;this[对象][花色].gotoAndStop(点数);<br/>};<br/>洗牌 = function () {<br/>&#160;&#160;&#160;&#160;//动态设置总牌52张<br/>&#160;&#160;&#160;&#160;var 总牌:Array = new Array();<br/>&#160;&#160;&#160;&#160;for (var i = 0; i&lt;4; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for (var j = 8; j&lt;=14; j++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;总牌.push([i, j]);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;//设置玩家的牌组<br/>&#160;&#160;&#160;&#160;//5个玩家<br/>&#160;&#160;&#160;&#160;for (var i = 1; i&lt;=5; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;牌组&#34;+i] = new Array();<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//发牌数据给玩家(5张)<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for (var j = 1; j&lt;=5; j++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//随机抽总牌<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var 随机值 = int(random(总牌.length));<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//添进牌组<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var 抽中值 = 总牌.splice(随机值, 1);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;牌组&#34;+i].push(抽中值[0]);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//让牌数据形象化<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;牌形((&#34;玩家&#34;+i+j), 抽中值[0][0], 抽中值[0][1]);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//this[&#34;玩家&#34;+i+j].牌形(this[&#34;牌组&#34;+i][0, this[&#34;牌组&#34;+i][1]]);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;/*<br/>&#160;&#160;&#160;&#160;for (var i = 1; i&lt;=4; i++) {<br/>&#160;&#160;&#160;&#160;trace(this[&#34;牌组&#34;+i]);<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;*/<br/>};<br/>洗牌();<br/>//牌级分类<br/>类型数组 = [&#34;散牌&#34;, &#34;对子&#34;, &#34;双对&#34;, &#34;三条&#34;, &#34;顺子&#34;, &#34;同花&#34;, &#34;葫芦&#34;, &#34;铁支&#34;, &#34;同花顺&#34;];<br/>判断牌类型 = function (牌, 判断起始) {<br/>&#160;&#160;&#160;&#160;牌数 = 牌.length;<br/>&#160;&#160;&#160;&#160;var 牌组 = new Array();<br/>&#160;&#160;&#160;&#160;//设置默认值<br/>&#160;&#160;&#160;&#160;if (判断起始 == undefined) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;判断起始 = 0;<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;if (牌数 == undefined) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;牌数 = 5;<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;var 最终类型 = &#34;&#34;;<br/>&#160;&#160;&#160;&#160;var 追加值 = [0, 0];<br/>&#160;&#160;&#160;&#160;牌数--;<br/>&#160;&#160;&#160;&#160;//排序<br/>&#160;&#160;&#160;&#160;if (判断起始 == 0) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(&#34;排序牌&#34;);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;牌组 = 牌;<br/>&#160;&#160;&#160;&#160;} else {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for (var i = 判断起始; i&lt;=牌数; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;牌组.push(牌[i]);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;牌组.sortOn(1, 2 | 16);<br/>&#160;&#160;&#160;&#160;//trace(牌组);<br/>&#160;&#160;&#160;&#160;//临时显示 <br/>&#160;&#160;&#160;&#160;/*<br/>&#160;&#160;&#160;&#160;var 显示 = &#34;&#34;;<br/>&#160;&#160;&#160;&#160;for (var i = 0; i&lt;牌数; i++) {<br/>&#160;&#160;&#160;&#160;显示 += 牌组[i][1]+&#34; &#34;;<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;//trace(显示);<br/>&#160;&#160;&#160;&#160;//<br/>&#160;&#160;&#160;&#160;*/<br/>&#160;&#160;&#160;&#160;//牌数为4 从0算起<br/>&#160;&#160;&#160;&#160;if (牌数 == 4) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var 对比值 = 牌组[0][1];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//检测是否是顺子 <br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for (var i = 1; i&lt;5; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;对比值--;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (对比值 != 牌组[i][1]) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//返回不是同花顺也不是顺子<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//return false;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;最终类型 = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;break;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//检测是否是同花<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var 对比值 = 牌组[0][0];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for (var i = 1; i&lt;5; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (对比值 != 牌组[i][0]) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (最终类型 != 0) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;最终类型 = 4;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;break;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (最终类型 == &#34;&#34;) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;最终类型 = 8;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;} else {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;最终类型 = 0;<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;//追加最大牌的花色和牌面&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&#160;&#160;&#160;&#160;if (判断起始 == 0) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;追加值 = [牌组[0][1], 牌组[0][0]];<br/>&#160;&#160;&#160;&#160;} else {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;追加值 = [牌组[判断起始-1][1], 牌组[判断起始-1][0]];<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;//检查对子&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&#160;&#160;&#160;&#160;var 对比值 = 0;<br/>&#160;&#160;&#160;&#160;var 牌类型 = 0;<br/>&#160;&#160;&#160;&#160;var 对子数 = 1;<br/>&#160;&#160;&#160;&#160;var 最终对子数 = 0;<br/>&#160;&#160;&#160;&#160;var temp = 0;<br/>&#160;&#160;&#160;&#160;if (判断起始 != 0) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;判断起始--;<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;for (var i = 判断起始; i&lt;=牌数; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;/*<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;trace(&#34;&#34;);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;trace(&#34;i=&#34;+i);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;trace(&#34;对比值&#34;+对比值);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;trace(&#34;牌值&#34;+牌组[i][1]);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;*/<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (对比值 != 牌组[i][1]) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(&#34;牌不同&#34;);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (对子数&gt;最终对子数) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;最终对子数 = 对子数;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(&#34;最终对子数&#34;+最终对子数);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;对子数 = 1;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;对比值 = 牌组[i][1];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//牌类如果全散牌为5点。2对为2类或3类<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;牌类型++;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} else {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(&#34;牌同&#34;);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//对子数++;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;对子数++;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//对子数追加<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//单对追加<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (temp == 0 o&#114; 对子数&gt;=3) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;追加值[0] = 牌组[i][1];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;追加值[1] = 0;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;temp = 牌类型;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} else if (temp != 牌类型) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//双对追加<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (追加值[0]&gt;牌组[i][1]) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;追加值[1] = 牌组[i][1];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} else {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//当位置1小于位置2时换位<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var temp_h = 追加值[0];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;追加值[0] = 牌组[i][1];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;追加值[1] = temp_h;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;if (对子数&gt;最终对子数) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;最终对子数 = 对子数;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(&#34;最终对子数&#34;+最终对子数);<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;//判断类型&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&#160;&#160;&#160;&#160;var 类型值 = [牌类型, 最终对子数];<br/>&#160;&#160;&#160;&#160;trace(&#34;类型值=&#34;+类型值);<br/>&#160;&#160;&#160;&#160;if (类型值.toString() == &#34;2,4&#34;) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//4带1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;最终类型 = 7;<br/>&#160;&#160;&#160;&#160;} else if (类型值.toString() == &#34;2,3&#34;) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//3带对<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;最终类型 = 6;<br/>&#160;&#160;&#160;&#160;} else if (类型值.toString() == (牌数-1)+&#34;,3&#34;) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//3带1<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;最终类型 = 3;<br/>&#160;&#160;&#160;&#160;} else if (类型值.toString() == (牌数-1)+&#34;,2&#34;) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//双对<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;最终类型 = 2;<br/>&#160;&#160;&#160;&#160;} else if (类型值.toString() == 牌数+&#34;,2&#34;) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//单对<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;最终类型 = 1;<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;//判断同色&nbsp;&nbsp;&nbsp;&nbsp; <br/>&#160;&#160;&#160;&#160;if (牌数 == 4) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (最终类型 != 8) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;var 对比值 = 牌组[0][0];<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for (var i = 1; i&lt;5; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (对比值 != 牌组[i][0]) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;i = 10;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//trace(i);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if (i == 5) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;最终类型 = 5;<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;//trace(&#34;追加值=&#34;+追加值);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&#160;&#160;&#160;&#160;//trace(最终类型);<br/>&#160;&#160;&#160;&#160;trace(&#34;牌类型及大小： &#34;+[最终类型, 追加值[0], 追加值[1]]);<br/>&#160;&#160;&#160;&#160;trace(&#34;&#34;);<br/>&#160;&#160;&#160;&#160;return [最终类型, 追加值[0], 追加值[1]];<br/>};<br/>//比较牌大小<br/>比较牌 = function () {<br/>&#160;&#160;&#160;&#160;//显示各玩家牌级<br/>&#160;&#160;&#160;&#160;比牌级 = new Array();<br/>&#160;&#160;&#160;&#160;for (var i = 1; i&lt;=5; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;返回值 = 判断牌类型(this[&#34;牌组&#34;+i], 0);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;返回值.push(&#34;牌组&#34;+i);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;比牌级.push(返回值);<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;this[&#34;状态&#34;+i].text = 类型数组[返回值[0]];<br/>&#160;&#160;&#160;&#160;}<br/>&#160;&#160;&#160;&#160;比牌级.sortOn([0, 1, 2], 2 | 16);<br/>&#160;&#160;&#160;&#160;//trace(比牌级);<br/>&#160;&#160;&#160;&#160;//trace(比牌级[0][3]);<br/>&#160;&#160;&#160;&#160;//显示<br/>&#160;&#160;&#160;&#160;for (var i = 0; i&lt;5; i++) {<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;_root[&#34;大小&#34;+比牌级[i][3].charAt(2)].text = &#34;第&#34;+(i+1);<br/>&#160;&#160;&#160;&#160;}<br/>};<br/>比较牌();<br/>//按钮重刷<br/>button1.onRelease = function() {<br/>&#160;&#160;&#160;&#160;trace(&#34;---------------------&#34;);<br/>&#160;&#160;&#160;&#160;洗牌();<br/>&#160;&#160;&#160;&#160;比较牌();<br/>};<br/><br/>//=====================================<br/>//<br/>//转载请注明出处：羽柴 鬼铃-blog&nbsp;&nbsp;<br/>//&nbsp;&nbsp;&nbsp;&nbsp; www.ycflash.com/blog<br/>//<br/>//=====================================<br/><img src="http://www.ycflash.com/images/download.gif" alt="下载文件" style="margin:0px 2px -4px 0px"/> <a href="http://www.ycflash.com/attachments/month_0709/h20079694324.rar" target="_blank">点击下载此文件</a><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.ycflash.com/article.asp?id=54</link>
			<title><![CDATA[如果让大家了解牌类游戏的网络化 编写。]]></title>
			<author>yuchaiyuwei@163.com(admin)</author>
			<category><![CDATA[游戏算法]]></category>
			<pubDate>Fri,24 Aug 2007 14:50:47 +0800</pubDate>
			<guid>http://www.ycflash.com/default.asp?id=54</guid>
		<description><![CDATA[从建了blog后，有很多同行朋友让我多提供网络游戏的编写教程。当然由于自己的工作情况，我只能抽取业余时间来完成。 在后面的日子，我就用简单的牌类游戏21点，做成网络版。并写成相关教程，教大家如何把棋牌游戏编写成网络化的。 因为只是用业余时间，只能在后面一步一步加入 所以请大家多多见谅。 ]]></description>
		</item>
		
</channel>
</rss>
