使用JavaScript创建一个简单的Windows 8游戏: 第 3部分- 游戏逻辑

分享于 

6分钟阅读

Web开发

  繁體

在10天内开发 Windows 8应用程序。

我可以在的bowen http://blogs.msdn.com/cbowen的Chris博客 check

创建一个简单的Windows 8游戏系列:

这是一系列文章中的第三篇,将展示如何创建( 非常) 简单 Windows 8游戏。 我们将使用 HTML5.JavaScript。WinJS和一些从 CreateJS的有用库。

游戏是基于XNA样本游戏 "catapult war实验室"。 我们将在开发基于web技术的Windows 8的新版本时重用这个游戏的资产。

本文中,我们将使用一些游戏逻辑和JavaScript来实现生活。

游戏循环

任何游戏的心跳都是游戏循环。 它是一个运行多次的函数,有两个主要任务更新进行的内容,然后绘制新场景。

第 2部分中,我们已经将大纲放置到位:

现在问题是,我们如何获得 gameLoop() 函数,并且每秒运行多次。

EaselJS Ticker类

,EaselJS有一个 Ticker类,它具有一些我们将使用的特性:

  • 管理游戏循环的计时
  • 暂停/恢复游戏循环
  • 测量经过时间

这是一个 static 类,所以我们可以开始使用它。 在 default.js 中,添加一个新的startGame() 函数,并在 prepareGame()的末尾调用它:

在这里我们告诉Ticker使用 window.requestAnimationFrame 来控制 gameLoop 函数的调用频率。

对于web应用程序来说,requestAnimationFrame 是一个比较新的API,它帮助确保不需要不必要地做工作。 要理解为什么这比设置固定定时器要好( 比如。 在 setTimeout() ) 中,查看 IE 测试驱动站点的 requestAnimationFrame示例。

每次 requestAnimationFrame 准备就绪我们的游戏循环就会运行。

准备瞄准开火" !

好了现在我们有一个运行游戏的游戏,所以是时候添加一些乐趣了 !

每个玩家/弹弓将向另一个方向发射弹药/岩石。 我们需要知道一个镜头是当前飞行的,谁是转动的,以及镜头是如何运动的。

首先,让我们向 default.js 添加更多变量:

现在,让我们通过将以下内容添加到 update() 函数中来使用它们:

现在,双方都会在转弯时自动开火。 ammoBitmap移动到火箭的顶部中心,shotVelocity 在有界范围内给定一个随机值( 调整为屏幕分辨率)

我们还将添加一个 fireShot() 函数来显示镜头,并告诉游戏它在空中:

更新显示

在我们通过空气移动镜头之前,让我们重点讨论一下游戏循环方程的2nd 半。 这通常非常复杂,但EaselJS阶段将负责将我们的内容( 所有的孩子- 位图,文本,等等 - 我们添加到舞台) 绘制到画布中,所以我们所需要的全部:

就是这样如果你运行游戏,玩家 1会自动火火,射击将会出现在红色的弹射器上。

。但它不会让步。 让我们 moving。

移动镜头

让我们返回 update() 函数并向 if (shotIsFlying) 语句添加逻辑:

现在还不运行,我们仍然需要两个函数,但这里进行以下操作:

  • & ( 可能是负数向上或者向左或者向左移动) 移动镜头
  • 行 151 - 应用重力减缓速度
  • 收费 Lines - 在屏幕的左边或者右边hit或者离开了?
  • 行 157 -160 - 错过了镜头并更换了播放机
  • 行 162 -168 - Player Player Player - 看看是否击中了 Player。 如果是,更新玩家 2的生活。
  • 行 169 -175 - Player Player Player - 看看是否击中了 Player。 如果是,更新玩家 1的生活。

让我们添加 checkHit(Bitmap) 函数:

那是什么话题? 如果某个点位于对象的当前位置上,那么它就很容易看到一个点。 不幸的是,我们缩放对象,并且只能使用原始大小,所以我们需要检查自己。 只要一点数学就可以了。

处理点击

现在,添加 processHit() 函数:

这只是结束镜头,改变球员,并确保游戏没有结束。

结束游戏

让我们结束游戏结束这个帖子。 添加 endgame(Image) 函数:

好了现在你可以运行游戏,看看谁赢了。

接下来

我们在这部分里添加了很多的东西,画,动,打,结束-。 但有两个洞。 首先,玩家不实际玩游戏,所以我们将在下一次添加输入处理。 它的次,事情非常安静,尤它的是对于战争,所以我们也会发出一些声音。

到第 4部分 !


相关文章