挑战24——排行榜发布


近乎全新的24点牌游戏终于在世界杯之前赶出来了,暂且发布一个Beta版,现在大家有机会挑战一把了,呵呵^_^

爬行榜打榜地址:http://fdream.net/games/

对比上一个版本做了一些改动:
1、改正了上一个版本有可使用欺骗的漏洞;
2、这次再也不会发到两张一模一样的牌了^_^;
3、总时间限制为3分钟,每一题限时一分钟,提前做完,时间可以累积;
4、跳过和查看答案均要扣分;
5、题目分三个难度级别,从易到难每题分数分别1-3分;
6、游戏结束后,玩家信息可以加入排行榜。…

梭哈,请大家帮忙测试一下


先发点牢骚:
做梭哈唯一的感受:耐心真的很重要!梭哈基本不涉及重要算法,唯一难做的就是判断牌型,因为其涉及的情况实在是太多了,要先比较,然后再比较,然后再接着比较……测试数据也挺烦的,最开始还能手动设置发出的牌是什么,可以根据需要发牌,到后来基本成型的时候,牌是随机产生的,人为控制极为不便,然后当偶尔有些情况会出错时,需要两组以上的数据以找出哪个地方有问题,只好不停地发牌……

今天下午刚把这个做完,Navy大牛到我寝室里来玩我的那个24点,立即爆出一个重大BUG,当随机产生的四个数种只要有一个6时,你输入6+6+6+6,会恭喜你做对了,同理,还有8和12也会有同样的BUG,不过解决这个BUG的算法也很简单,新版会解决这个BUG。今天的梭哈应该还会有判断上的问题,所以请大家帮忙测试一下,把有问题的数据和结果写在下面,我将非常感谢^_^

Flash版梭哈游戏下载(32.4K):请右键点击此处,选择目标另存为^_^

24点牌游戏,先练练


做这个游戏才发现这个游戏完全是体力活,仅那52张牌就够我忙的。在网上找了半天没找到想要的,只好自己在windows中想办法了,后来用execope愣是从cards.dll文件中一张一张的导出了52张牌。如果有人想要的话找我吧,Email:ahust#126.com(请把#换成@)。

还没做完,如果有兴趣的可以先练练,准备有空的话再做几个扑克牌游戏,什么梭哈,21点啦,都是我曾经比较喜欢的小游戏。做完几个后,然后再分别弄个排行榜玩玩,呵呵~~

继续说这个24点,这个flash游戏加大了难度,本来应该是1~9个数字,我用了1~13,增加挑战性,呵呵^_^。每题限时比较长,有足足一分钟,所以如果你很强的话应该每题都搞得定,当然了,顺便说一下,生成的每一组数都是有答案的,没答案的已经剔除。输入的表达式中只能有数字、圆括号和加+、-、*、/共16种符号,牌A、J、Q、K分别对应数字1、11、12、13,输入完成后回车提交或者用鼠标点按钮。跳过可以跳过当前题目,进入下一个题目,快捷键是N。点击答案按钮可以查看答案,快捷键是K。跳过和查看答案时,此题不参与计数。…

计算字符串表达式的函数(AS版)

先废话几句:AS中的浮点数计算误差也真是很有趣,例如:6.4-6.3=0.100000000000001,这是在Flash 8中运行的结果,附图一张:

evalString 函数介绍:
evalString(expression:String) : Number

expression 为一个算术表达式,该函数将计算此表达式的值,并返回计算结果。此表达式仅限于简单的+、-、×、÷以及带括号的运算,表达式中不得有其他符号,包括空格。表达式中的数字不仅限于一位整数,也可为多位整数,甚至是小数

参数
expression:String – 一个字符串表达式。

返回
Number – 一个数值。

示例

var infix:String = “(48-20*(6.2-5))/(18-15)”;
trace(evalString(infix)); //output 8

函数算法思想

算法思想和上一篇《把中缀表达式转化为后缀表达式》

把中缀表达式转化为后缀表达式

算法的用途:

我的目的很简单,做一个24点牌的Flash小游戏,接受用户输入的表达式,然后计算结果。貌似在AS中没有可以直接计算字符串表达式的函数,所以只好自己写了。要计算这个表达式(带括号)首先得把括号去掉,括号真的是挺麻烦的一个东东,所以还得选后缀表达式-_-

算法基本思想:

使用三个数组,一个数组保存用户输入的表达式(中缀表达式),一个数组保存后缀表达式,一个数组作为运算符的栈。

从头到尾扫描中缀表达式,对不同类型的字符按不同情况处理;
1、如果是数字则直接放入后缀表达式数组;
2、如果是左括号则直接入栈;
3、如果是右括号,则把从栈顶直到对应左括号之间的运算符依次退栈,并清除对应的左括号;
4、对于运算符,如果该运算符的优先级大于栈顶优先级,则直接入栈,若该运算符的优先级小于等于栈顶优先级,则先把栈顶运算符出栈,写入后缀表达式数组,然后再入栈;
5、扫描完成后,取出栈中所有运算符,写入后缀表达式数组。…

24点的三种算法思路及代码(3)

先公布一下第一篇文章中提出的问题的答案:
1,5,5,5:(5-1/5)*5=24
3,3,8,8:8/(3-8/3)=24

此文所贴代码均为面向过程的C(++)代码,在VC6下编译通过。

第二种思路:

还是尽量避免处理括号,实在是很麻烦。有一种没有括号的表达式——逆波兰表达式(后缀表达式),逆波兰表达式严格地按照从左至右的顺序执行。因此,只需把所有的数字的排列组合与所有的符号的排列组合再进行排列组合即可遍历所有可能的表达式。在输出结果时,只需把逆波兰表达式按照规则还原成正常的表达式即可。

说明:’-‘和’/’有两种情况,’a-b’用’a-b’表示,’b-a’用’a|b’表示,’a/b’用’a/b’表示,’b/a’用’a\b’表示,’\’是转义字符,要用’\\’表示。…

24点的三种算法思路及代码(2)

此文所贴代码均为面向过程的C(++)代码,在VC6下编译通过。

第一种思路:
把多元运算转化为两元运算,先从四个数中取出两个数进行运算,然后把运算结果和第三个数进行运算,再把结果与第四个数进行运算。在求表达式的过程中,最难处理的就是对括号的处理,而这种思路很好的避免了对括号的处理。基于这种思路有两种算法:

第二种算法(此算法思想参考了CSDN(penguinMII)–企鹅的算法思想):
可以寻找所有表达式的规律,得出如下结论:把表达式看成一个函数F(A,B,C,D)=24,可分两种情况F=(((A,B),C),D)和F=((A,B),(C,D)),对其分别计算即可得到答案,算法过程如下:
1)先对第一个数和第二个数进行计算,并保存结果和表达式;
2)对上述结果与第三个数进行计算,并保存结果和表达式;
3)对上述结果与第四个个数进行计算,并保存结果和表达式;
4)判断结果,并输出结果;
5)对第三个数和第四个数进行计算,并保存结果和表达式;…

24点的三种算法思路及代码(1)

昨天晚上在寝室里觉得无聊,于是就玩这个24点游戏,上网搜了半天,就一个代码是正确的,而且只能给出一个解,于是只好自己写咯,参考了网上现有的一些算法^_^

先简单介绍一下24点游戏:
给出4个1-9之间的自然数,其中每个数字只能使用一次;任意使用 + – * / ( ) ,构造出一个表达式,使得最终结果为24,这就是常见的算24点的游戏。比如两道比较经典的题目:1,5,5,5和3,3,8,8,先自己试试,答案贴在文章最后^_^

此文所贴代码均为面向过程的C(++)代码,在VC6下编译通过。

解决这个问题一般使用穷举法,即穷举4个整数所有可能的表达式,然后对表达式求值。下面的两种思路(三种算法)均是基于穷举法,各有优劣。

第一种思路:
把多元运算转化为两元运算,先从四个数中取出两个数进行运算,然后把运算结果和第三个数进行运算,再把结果与第四个数进行运算。在求表达式的过程中,最难处理的就是对括号的处理,而这种思路很好的避免了对括号的处理。基于这种思路有两种算法:…

用CSS轻松实现圆角

一直以为用CSS做一个圆角的链接会很麻烦,在蓝色理想上看到一些漂亮的圆角链接,背景图片还可以切换,于是下载下来看了一下,发现原来实现起来也很简单。下面这个是效果图:

具体实现方法如下:
先制作好这样两张背景图片,一张为左边的圆角,比较窄,另一张为右边的圆角,比较宽(为了使较长的链接仍能正常显示),如下图:
(left.gif)
(right.gif)

CSS代码为(注意其中的背景图片的定位,这个是实现效果的关键所在):

body {
margin:0;
padding:0;
font-family:Tahoma;
font-size:12px;
font-weight:bold;
background-color:#fff;
text-align:center;
}
#tabs{
margin-left:auto;
margin-right:auto;
margin-top:40px;
width:100%;
background:#fff;

Flash Player 9给浏览器的麻烦

Flash Player 版本:9,0,0,296
给IE(Internet Explorer 6.0)带来的错误(这个会引起浏览器强迫关闭,貌似要到Adobe官方网站下载一个Flash9a.ocx):

给FF(Mozilla Firefox 1.5.3)带来的错误(这个还好,不会引起浏览器被迫关闭):

奇怪的是,FF还有这样一个问题:

这个是在点击一个Discuz!论坛置顶帖的时候出现的问题,而且每次都这样,无一例外,不知道有没有位FF达人能够帮忙解决一下?…