JavaFX吃豆人游戏的编写过程之三

分类: JavaFX编程, 吃豆人游戏.
标签: ,

javafxblogs.com Rss_google Rss_zhuaxia Rss_xianguo

6月4日发表了英文连载中的第4篇文章。在这篇文章中,主要介绍了吃豆人和精灵之间互动的代码实现。代码可在“JavaFX游戏实例共享网站”中下载。


到上一篇文章为止,我们已经实现了游戏中所有的人物。现在我们来增加吃豆人和精灵追逐和互“吃”的处理逻辑。如果吃豆人和精灵相遇,只有两种情况,吃豆人吃掉精灵或者反之。如果吃豆人刚刚吞吃了魔法豆,他可以吃掉精灵,否则吃豆人就会损失一条命,这时,需要播放一段吃豆人消失的动画(如下图所示):
shriking pac-man


这个动画在DyingPacMan类中实现,代码如下:


public class DyingPacMan extends Arc {

   var timeline = Timeline {
      repeatCount: 1
      keyFrames: [
        KeyFrame {
           time: 600ms
           action: function() {
        // hide the pacMan character and ghosts before the animation
              maze.pacMan.visible = false;

              for ( g in maze.ghosts ) {
                 g.hide();
              }
              visible = true;
            }
           values: [ startAngle => 90, length=>360 ];
         },
        KeyFrame {
           time: 1800ms
           action: function() {
              visible = false;
            }
           values: [ startAngle => 270 tween Interpolator.LINEAR,
                     length => 0 tween Interpolator.LINEAR ]
         },
      ]
    }

 ... 代码省略 ...
}


在这个动画中,定义了2个KeyFrames,一个在600ms,另一个在1800ms。在这两个关键帧中采用了JavaFX的线性插值(Interpolator.LINEAR)方式。线性插值的作用就是把动画中数据按照时间关系,在帧与帧之间线性变化,从而实现平滑的动画效果。在上述代码中,两个实例变量:startAnglelength, 通过线性的均匀变化,实现了我们需要的动画过程。参考下图的时间轴。第一个关键帧的时间是600ms而不是0ms,是因为我们希望游戏在这瞬间稍微停顿600ms。
timeline pac-man


好啦,到目前为止,游戏已经基本完成了,可以玩了。唯一不足就是精灵现在还是随机移动的,游戏的难度不大。不要紧,我们将在下周的文章中详细讨论。现在就点击下图来试一下这个游戏吧:(JDK1.5以上, Java Web Start 自动启动)


click to run
click to run



相关文章:

JavaFX应用实例、例子
用JavaFX编写的游戏Pac-Man
JavaFX Guy的博客
JavaFX 1.2的新特性
怎样用JavaFX编写游戏:吃豆人(Pac-Man)

JavaFX吃豆人游戏的编写过程之二
JavaFX游戏吃豆人的编写过程


英文文章连载:


第一篇文章,2009年5月14日:
Writing the Pac-Man Game in JavaFX - Part 1

第二篇文章,2009年5月21日:
Writing the Pac-Man Game in JavaFX - Part 2

第三篇文章,2009年5月28日:
Writing the Pac-Man Game in JavaFX - Part 3

第四篇文章,2009年6月4日:
Writing the Pac-Man Game in JavaFX - Part 4

评论 (0) 2009年06月06日

JavaFX吃豆人游戏的编写过程之二

分类: 吃豆人游戏.
标签: , , , ,

上周介绍了关于编写JavaFX吃豆人游戏的前2篇文章。本周发表了5篇连载文章中的第3篇。在最新的这篇文章中,详细介绍了精灵(ghost)动画的机理,基本上和Pac-Man人物是一样的:改变坐标位置,并且不断切换画面(frame)。和Pac-Man不同的是,精灵有3组图,分别是正常(normal)、空心(hollow)以及闪烁(flashing),如下图所示:





为了说明程序结构,精灵的移动算法是随机的,也就是不能追踪Pac-Man的足迹。更好算法的介绍将在第5篇文章中详细讨论。到目前为止,游戏中的角色都齐了:4个精灵和1个吃豆人。他们现在还是相安无事,即使见面也互相不会吃掉。在下一篇文章中将介绍有关的处理逻辑。有兴趣的可以试一下目前这个半成品游戏(点击图画启动游戏):



相关文章:

JavaFX游戏吃豆人的编写过程

第一篇文章,2009年5月14日:
Writing the Pac-Man Game in JavaFX - Part 1

第二篇文章,2009年5月21日:
Writing the Pac-Man Game in JavaFX - Part 2

第三篇文章,2009年5月28日:
Writing the Pac-Man Game in JavaFX - Part 3

用JavaFX编写的游戏Pac-Man
怎样用JavaFX编写游戏:吃豆人(Pac-Man)之二

评论 (0) 2009年05月29日

泡泡龙游戏

分类: JavaFX编程.
标签: , ,

程序员Liuxuan620用Javafx编写了一个有趣的泡泡龙游戏,可以体现出原游戏的风格。征得同意后,我把这个游戏放在网站上了,大家可以点击下图玩一下。用左/右键瞄准,空格键发射。有兴趣的可以download并学习一下源代码,程序写得非常简洁。



评论 (0) 2009年04月09日

用JavaFX编写的游戏Pac-Man

分类: JavaFX编程.
标签: , , , , , , ,

最近读了些JAVAFX的文章,看了一些示范程序,于是决定写个游戏试一试。大概花了2周的业余时间,写成了一个Pac-Man游戏(俗称PCMAN或吃豆子)。虽然离真正的“街机”版还有一段距离,但是也基本体验了JavaFX编程的易用性。由于处于学习阶段,还有很多需要改进的地方,以后有时间慢慢改改吧。现在答应了某个英文网站去写一篇文章介绍如何编写这个游戏,因此源代码暂时不能公开。待文章发表之后,大家可以看看代码,切磋一下。

这个游戏程序主要采用了以下JAVAFX技术:

1) 绑定(binding)

2)动画(animation)

3)变换(transform)

4) Java类集成

5)声明式语言

大家可以点击以下图标启动该游戏,需要JRE1.5以上,用1.6U10以上效果更好。第一次运行时,可能需要等一些时间(因为要下载JavaFX Runtime)….

screenshot

目前,JavaFX只支持Windows和Mac平台,Linux平台有一些变通的办法,可以google一下。

如果无法运行本程序,大家还可以看看YouTube上的视频:

评论 (5) 2008年12月12日