鱼的下载地址:http://www.mwymwy.cn/other/yu.rar
下载后,请运行“鱼.exe”,你会看到精美的两条鱼效果。我现在求这条鱼的源码。用Delphi实现。我说一下我的想法思路:方法一:    用Delphi创建一个透明窗体,然后读取AppData文件夹内的Png图片,每次显示Png图片的一部分,用定时器不停的读取,就达到动画效果了。
    说起来容易做起来难,如果大家有更好的思路当然更好。方法二:    直接将Png制作成一个透明的Gif动画,然后用Delpi播放该动画即可。但缺点是无法处理鱼转身时的动作。不过不需要太多的代码了,所以技术难度都集中到制作GIF身上了。而且用Delphi播放GIF我已经会了,缺的是这个GIF文件。
我希望求到的答案不是方法二。
程序难点:    1.如何读取一个Png图片的一部分?
    2.鱼游到屏幕边缘的时候,如何处理鱼的转身动作?
    3.当两条鱼嘴对嘴的时候,如果模拟出接吻动作并释放一个“心”的气泡?
当然第3条不重要。觉得麻烦可以不做。只要能实现前两点,本人承诺给500分。如果第3条也实现了,可以给1000分,但要求所有引用的外部文件都做到EXE资源里面。生成的EXE可独立运行。这个鱼是日本人做的,我觉得很好看,对日本人的好坏不作讨论,这里只讨论技术,我觉得日本人可以做出来的,中国人应该也可以。这条鱼状态很好,很惹人喜爱,为了个人爱好和兴趣,大家有兴趣的可以研究下。我知道贴子加分可以一次加100分,每天只能加一次。但不知道贴子能不能加到500分,如果能,我会加到500分来求这个答案。如果20天内没有答案,500分将会散给顶贴的人。如果求到了好答案并且达到了上述的第3条效果,我将支付1000分。
etomahawk在消息处理及图像编程方面是高手,也希望其它高手迅速出击!

解决方案 »

  1.   

    剛下這本書在看,看完了應該有所心得,你也可以看看,說不定可以早早結帖,^_^
    <<Delphi direct X图形与游戏程序设计>>
      

  2.   

    PNG格式DELPHI本身不是不支持的嘛?
    看了一下,效果是挺P的。
      

  3.   

    1.如何读取一个Png图片的一部分? 
    2.鱼游到屏幕边缘的时候,如何处理鱼的转身动作? 
    3.当两条鱼嘴对嘴的时候,如果模拟出接吻动作并释放一个“心”的气泡?我稍微发表一下下,因为我以前用c++开发类似与QQ宠物一样的程序,只是说说想法而已:1.我觉得, 那两条鱼,可以用两个透明窗体装载,透明窗体FORM1.上面装载的最好是两个flash
     因为以前做C++时,flash比较好做一点。 
    2.3  2和3我各人觉得这个比较好处理的吧,只不过是两个窗体位置的判断条件而已,碰倒屏幕边缘,碰到另一个窗体,
    根据位置条件, 调用不同的flash,并且窗体位置也相应移动。 我各人觉得还是比较好实现的。以上只是我各人的异界
      

  4.   

    个人觉得是不是应该用到“通道”的知识
    先通过getdc(0)得到屏幕的句柄,再在formpaint中写输出代码,再有一个timer控件,随着时间变化在新的位置输出图像,并释放原来的图像。如果图像到达屏幕的边缘了,即pos.x<0或者pos.x>clientwidth,pos.y<0或者pos.y>clientheight,则图像反转移动。
      

  5.   

       刚才想到,今天是11月11,光棍节啊。    为了纪念一下,我还是花点时间做个简单的,效果没有他做的那么好,资源暂时就不打包到程序里了。等有时间完善一下。    其实分数无所谓的(现在似乎也可以发200分的帖子吧,没试过,好久都没发帖问过问题了)。可以看看我回过的帖子,即使0分,只要我有时间,了解过,我也会回的。刚才看我的空间,才发现,注册六年了,好快。2002-11-09日注册。 不知道在这里混了6年的还有多少?不过估计跟我混的一样差的没几个了。哈哈(@_@) 现在在工作中,已经全部转向VC,但是,一直在关注Delphi,因为,delphi引领我进入window开发。很怀念   上传到我的资源了。(上传了怎么又不见,不知道CSDN怎么回事,明天看看出来不。)
       http://download.csdn.net/user/etomahawk
       -----------------------------------------------
       光棍节!   祝已婚的,家庭幸福,早生贵子!
       祝还在恋爱中的,早日修成正果!
       祝还在光棍的,早日摆脱光棍!   呵呵~~ 
      -------------------------------------------------
    测试测试测试测试测试
    测试测
    试测测试测试
    测试
    测试测试测试测测试
    测试试测测试
    试测试

    试测测试
    测试
    测试测试测试测试测试测试
    测试测
    试测
    测试试测
    试测试测试测
    试测试测
    试测试
    试测试
    测试
    测试
    测试测试
    试测试
    测试测试测试
    试测试测试
      

  6.   

    你的资源里面有,我已经下载了,还花了我5分。运行后效果与原来的有一定差距,我觉得主要原因是你将PNG转成BMP所导致。因为PNG可以直接支持透明显示,但Delphi需要包含一个Pas进来(我有这个)才支持PNG。你将BMP背景转为纯色来实现透明,效果不如PNG。我可以给你提供支持PNG的方法,不知道可否抽空重改一下?代码我还未来及看,刚刚运行后,突然发现无法退出,于是我选中鱼,按Alt+F4给关了。鱼的转身动作过度的还不是很好。当然最重要的是透明,您程序现在的透明效果远不如原程序的透明、逼真。如果这透明做不好,这样就失去了做它的意义。特别是鱼尾的半透明效果,我觉得是用BMP做不出来的,而用PNG的话问题就解决了。希望你有时间,我将支持PNG的演示源码发给你,请问你信箱多少?或者你发私信告诉我也行。
      

  7.   

    将文件做到资源里,然后用流方式读取,这个我会。将EXE做到资源里不释放到硬盘就直接执行我也会。实现拖动无标题栏窗体,最简单的方法是,在MouseDown事件里写上下面代码即可:
    ReleaseCapture;
    SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);代码乍一看,连个Image控件都没有用,完全是将BMP图像画到窗体上的吗?另外在网上查了一下,TSetLayeredWindowAttributes这个接口是做透明用的。其实,使BMP纯背景透明掉的方法我也有,是一个过程,纯代码实现不用引用外部DLL,调用即可透明,但效果跟你的一样,没有PNG效果好,因为PNG格式像GIF一样直接支持透明。
    烦请告之你的信箱,我发部分代码过去,可能会对解决问题及个人学习有帮助。
      

  8.   

    今天贴子已经加分,不知道明天还能不能继续加。下面另开贴给分了:http://topic.csdn.net/u/20081111/18/93889324-e419-41a8-b384-48fcdb04cab5.html有人说原鱼是用DXScript脚本语言实现的,这个我不懂。不要再顶贴了,已经求到答案(尽管不十分理想),再顶无效。
      

  9.   

    这东西要用 windows API 来做
    直接操作 屏幕CD
    把图片资源一次性读进内存,
    然后不停的把内存中的内容刷新到屏幕中
    透明效果和阴影,有专门算法,难度不大
    买本游戏编程的书就搞定了
      

  10.   

    漂亮的鱼!可惜刚学delphi,只会看、不会做555555555555555
      

  11.   

    能不能给一半分,另一半分折合RMB 哈哈
      

  12.   

    30楼已经说了,后面再顶无效。所以30楼以后发贴内容纯为顶贴的,无分。按照事先承诺,未解决第3点的话给500分。而且问题并没有完美结决。贴子已经无权限加分,散了100分给大家,另200分已经给了答案提供者,另开一贴,请答案提供者etomahawk 前去接分。