rosebud
发表于 2005-3-8 09:00:53
<DIV class=quote><B>以下是引用<I>hw294</I>在2004-8-18 11:12:51的发言:</B>
<P 0cm LAYOUT-GRID-MODE: char; mso-line-height-alt: 0pt; mso-layout-grid-align: none?><FONT size=4>┌┬┬士将┬┬┬┐
</FONT><FONT size=4>├┼炮┼士<FONT color=#d56f2b>兵</FONT>┼┼┤
</FONT><FONT size=4>├┼┼┼炮┼┼┼┤
</FONT><FONT size=4>卒┼┼┼┼┼┼┼┤
</FONT><FONT size=4>├┴┴┴┴┴┴┴┤
</FONT><FONT size=4><FONT color=#dd6d22>├┬┬┬┬┬┬┬┤
</FONT></FONT><FONT size=4><FONT color=#cc7033>兵┼┼┼┼┼┼┼┤
</FONT></FONT><FONT size=4><FONT color=#cc7033>├┼┼┼炮┼┼┼┤
</FONT></FONT><FONT size=4><FONT color=#cc7033>├┼炮┼仕<FONT color=#000000>卒</FONT>┼┼┤
</FONT></FONT><FONT size=4><FONT color=#cc7033>└┴┴仕帅┴┴┴┘
</FONT></FONT>
<P>
<P 0cm LAYOUT-GRID-MODE: char; mso-line-height-alt: 0pt; mso-layout-grid-align: none?></P>
</DIV>
发一个Java 象棋看看
<APPLET width="249" height="301" codebase="http://www.qipaile.net/java/" code="JavaXQ.class">
<PARAM name="Position" value="--,--,--,E1,E0,D0,--,--,--,C1,E2,--,--,F8,--,A3|--,--,--,D9,E9,E8,--,--,--,C8,E7,--,--,F1,--,A6">
<PARAM name="MoveList" value="C1-C2 E7-E3 C2-C6 A6-A5 C6-C7 C8-C9 C7-C8 E3-E4 E2-E3 E4-E6 E3-E5 E6-E7 E5-E6 C9-B9 C8-C9">
</APPLET>
乌木
发表于 2005-3-8 09:41:01
<FONT size=3>啊!这样的java图好,因故暂无法装java插件的我也能看能动.有些魔方的java图也能像rosebud的一样吗?(可能外行话了,请谅解.)</FONT>
rosebud
发表于 2005-3-8 10:14:04
<APPLET code=javaxqb.class codeBase=http://www.ccbridge.net/java/ height=440 width=372 archive="javaxqb.zip"><PARAM NAME="forecolor" VALUE="white"><PARAM NAME="backcolor" VALUE="green"><PARAM NAME="movelist" VALUE="38-37 52-56 37-33 13-14 33-32 31-30 32-31 56-55 57-56 55-53 56-54 53-52 54-53 30-20 31-30"><PARAM NAME="beginposition" VALUE="...Z..b..............P......p.S........sKSP....psk.b......Z..............................."></APPLET>
再来个大的
Aren4188
发表于 2005-7-28 16:50:12
<P>很同意<STRONG><FONT face=Verdana color=#da2549>hw294的意见.</FONT></STRONG></P>
<P><STRONG><FONT face=Verdana color=#da2549>刚好这个棋局我也走过,很有异曲同工之妙.</FONT></STRONG></P>
清风细语
发表于 2005-8-1 17:16:43
请楼主把分珍珠的原理写出来,我们学习学习,谢!
xinru
发表于 2005-9-4 09:58:18
<DIV class=quote><B>以下是引用<I>rosebud</I>在2005-3-8 10:14:04的发言:</B><br><APPLET code=javaxqb.class codeBase=http://www.ccbridge.net/java/ height=440 width=372 archive="javaxqb.zip"><PARAM NAME="forecolor" VALUE="white"><PARAM NAME="backcolor" VALUE="green"><PARAM NAME="movelist" VALUE="38-37 52-56 37-33 13-14 33-32 31-30 32-31 56-55 57-56 55-53 56-54 53-52 54-53 30-20 31-30"><PARAM NAME="beginposition" VALUE="...Z..b..............P......p.S........sKSP....psk.b......Z..............................."></APPLET> <br><br><br>再来个大的</DIV>
<br><br>
<P>我看可以在{数学、算术趣题}中发些象棋的题目让大家做做呀!!!</P>
[此贴子已经被作者于2005-9-4 10:01:18编辑过]
ggglgq
发表于 2005-11-25 09:31:44
<BR> 加精了。 <BR> <BR>
simpley
发表于 2005-12-12 14:18:20
<P><STRONG><FONT face=Verdana color=#000000>ggglgq先生:</FONT></STRONG></P>
<P><STRONG><FONT face=Verdana>您的<智取华山>游戏我怎么也通不过(只能玩到第5级),能不能请您讲一下详细的算法.谢谢.</FONT></STRONG></P>
ggglgq
发表于 2005-12-12 20:29:12
<P> <BR> simpley 先生的确很强!如果不知道《智娶华山》算法的奥妙,能<BR>玩到第 5 级已经相当不错了。</P>
<P>
<HR>
</P>
<P> 如果您玩楼主的游戏(或者本人的“追山妹”游戏)没问题的话,您<BR>应该知道她们的算法是“把每一行的特征值用“逻辑异或”加起来,如果<BR>是 0 ,则先走方输,否则先走方赢。” <BR> (注意:楼主的游戏要留意 1 1 1 、 1 1 及 1 的特殊情形。)</P>
<P> 同样《智娶华山》的每个单行都可以计算出一个特征值,对于连续的<BR> n 个洞来说,她们的特征值分别是:</P>
<P> 0: 0<BR> 1: 1<BR> 2: 2<BR> 3: 3<BR> 4: 1<BR> 5: 4<BR> 6: 3<BR> 7: 2<BR> 8: 1<BR> 9: 4<BR> 10:2<BR> 11:6<BR> 12:4<BR> 13:1<BR> 14:2<BR> 15:7<BR> 16:1<BR> 17:4<BR> 18:3<BR> 19:2<BR> 20:1<BR> 21:4<BR> 22:6<BR> ......</P>
<P><BR> 胜负的判断标准同样是:把每一行的特征值用“逻辑异或”加起来,<BR>如果是 0 ,则先走方输,否则先走方赢。 <BR> <BR> </P>
ggglgq
发表于 2005-12-12 20:30:43
<P> <BR> 下面举例说明特征值的计算方法:<BR> 每一行都可以计算出一个非负整数的特征值。举例,对于不长于 6 个<BR>的行来说:(表示方法: * 代表一个洞, 0 代表已经被填上的洞。 )</P>
<P> 000000 0 000<BR> *00000 1 001<BR> 0*0000 1 001<BR> **0000 2 010<BR> 00*000 1 001<BR> *0*000 0 000<BR> 0**000 2 010<BR> ***000 3 011<BR> 000*00 1 001<BR> *00*00 0 000<BR> 0*0*00 0 000<BR> **0*00 3 011<BR> 00**00 2 010<BR> *0**00 3 011<BR> 0***00 3 011<BR> ****00 1 001<BR> 0000*0 1 001<BR> *000*0 0 000<BR> 0*00*0 0 000<BR> **00*0 3 011<BR> 00*0*0 0 000<BR> *0*0*0 1 001<BR> 0**0*0 3 011<BR> ***0*0 2 010<BR> 000**0 2 010<BR> *00**0 3 011<BR> 0*0**0 3 011<BR> **0**0 0 000<BR> 00***0 3 011<BR> *0***0 2 010<BR> 0****0 1 001<BR> *****0 4 100<BR> 00000* 1 001<BR> *0000* 0 000<BR> 0*000* 0 000<BR> **000* 3 011<BR> 00*00* 0 000<BR> *0*00* 1 001<BR> 0**00* 3 011<BR> ***00* 2 010<BR> 000*0* 0 000<BR> *00*0* 1 001<BR> 0*0*0* 1 001<BR> **0*0* 2 010<BR> 00**0* 3 011<BR> *0**0* 2 010<BR> 0***0* 2 010<BR> ****0* 0 000<BR> 0000** 2 010<BR> *000** 3 011<BR> 0*00** 3 011<BR> **00** 0 000<BR> 00*0** 3 011<BR> *0*0** 2 010<BR> 0**0** 0 000<BR> ***0** 1 001<BR> 000*** 3 011<BR> *00*** 2 010<BR> 0*0*** 2 010<BR> **0*** 1 001<BR> 00**** 1 001<BR> *0**** 0 000<BR> 0***** 4 100<BR> ****** 3 011</P>
<P> 这里,第一列是行的状态,第二列是特征值的十进制表示,第三列是<BR>特征值的二进制表示。<BR> 整个游戏的特征值是每一行的特征值的逻辑异或的和。若其为 0,则<BR>先走方输,反之则先走方胜。取胜的方法就是选择一种走法,使得走完后<BR>的特征值为 0。这种走法是必然存在的。</P>
<P><BR> 法则一:如果一行被 0 分隔为若干个连续 * 号段,则该行的特征值是<BR>这些 * 号子段的特征值的逻辑异或之和。例如,*0**0* 这个串,被 0 分隔<BR>为三个子串:*,**,*,它们的特征值分别为 1,2,1,因此整个串的特征值<BR>是 1^2^1 = 2。<BR> 法则二:连续 * 号的特征值计算方法。 列出按照游戏方法对这行进行<BR>操作后所有可能的情况,这些操作后形成的串成为后继串。对每一个后继串<BR>计算特征值,这些特征值形成了一个集合,不在这个集合中的最小非负整数<BR>就是要求的特征值。 例如,** 这个串,可以按照游戏规则形成 *0,0*,00 <BR>三个后继串,他们的特征值分别为 1,1,0,因此不在这个集合中的非负的<BR>最小整数是 2,就是 ** 的特征值。</P>
<P> 由 法则一 和 法则二 可以计算出 0 ~ n 的特征值。<BR> <BR> </P>