首先申明,这不是试验报告,只是自己的一点小感想而已。没有研究过该游戏的人可能是看不懂的。

开发工具:VB6.0

辅助工具:PS,音频制作工具

开发周期:2天半

开发过程:算法思想形成——>试验——>失败——>改进算法——>成功——>搜集素材+图形界面绘制——>测试+打包

体会:

            这是自己做的第二个小游戏(第一个是用VC6.0做的一个RPG),游戏本身比第一个小很多,以至于都不用计划流程。新鲜感已经没有什么了。

           我感觉这个小游戏给我最大的体会就是算法问题。从我的制作过程可以看到,一开始我的算法是失败的,用了深度搜索,稍微分析一下就会发现,这样完全不适合题目的情况。 于是想到广搜。但由于魔板变化的状态数是8!约4万多,所以怎么说都要执行4万多次循环,如果每次玩家要得到解答都要计算机执行4n万次(每一次执行当中都又很多运算),那这个游戏还让不让人玩了?!于是想到在游戏中建立一个现成的大小为8!byte的状态记录表,里面记录的是其上一次状态到现在状态的变换所需的操作。          于是这个游戏只占内存40k左右,而一开始你看到开始画面(闪电~)的时候,计算机正在执行4N万的运算(每次循环包括3种操作的尝试,这些操作会用到不少循环,个人感觉用位移指令效率会高一点,但又不适合我用的数组),所谓一劳永逸,之后,所以的状态都存到我建立的hash表里了!~

          有一点需要说明的是,原来状态里最大的是87654321,偷懒的话可以建立一个87654321byte的数组,占用8M多的内存。而我是用了一点小技巧,把01234567对应到数组的0,76543210对应到数组的8!-1,这样只需40k内存,节省了空间了吧!~不过这样的对应函数自然要话时间咯。所谓时间空间不可兼得。不过考虑到一劳永逸原则,加上开始画面的障眼法,还是取空间了,帮玩家节约点内存~^_^~~  这里我把这个hash函数贴一贴吧:

 

 1Public Function HashFun(arr1() As ByteAs Long '哈希函数,比如把01234567转成0,76543210转成40319
 2Dim j As Byte, k As Byte, resort As Long, less As Byte, queue(6As Byte, l As Long
 3queue(0= 8 ' 初始化,使其大于任何一个数
 4For j = 0 To 6
 5'******找出比当前数组元素小的元素个数{
 6For k = 1 To j
 7If queue(k - 1< arr1(j) Then
 8less = less + 1
 9End If
10Next k
11queue(j) = arr1(j) '入队列
12= Factorial(7 - j)
13resort = resort + (arr1(j) - less) * l
14less = 0
15Next j
16HashFun = resort
17End Function

18
19

       最后再谈谈对VB的感受。高中是学过的,那时候也编过游戏,但是没有想到将来会搞计算机,也就瞎弄弄,后来完全忘了。现在又用VB,完全是新的体验。VB给我最大的印象就是通俗易懂,拿来就用。书也不用翻(当然ppt是看的- -),API查查,再加对象浏览器,就ok了~比起VC,可视化程度高,所见即所得。感觉一般的小程序(如老师说的),小游戏,小项目用VB是完全可以搞定的,不过底层一点的么,呵呵,就不行了~

      说了这么多废话,还是把游戏给大家吧~源代码就不送了,给你也看不懂,程序可读性不怎么样~

      下载注意:游戏下载大小限制,下载分成3个部分,下载完最后把setup.exe,setup.lst,魔板1.CAB~魔板4.CAB置于同一文件夹方可安装~
      有朋友说不能安装,如果有这样的情况,请向我反映!
      /Files/Redsign/3.rar
      /Files/Redsign/2.rar
      /Files/Redsign/1.rar
     更新过了,可以永久存档(highscore)了。