|
1977 年,第一台 Cray-1 计算机出厂,Apple II 计算机上市,Radio Shack公司推出了当时售价为 599.95 美元的 Tandy 的 TSR-80。Tandy 系统采用黑白显示器器、盒式磁带存储、4 KB(可扩展到 52 KB)的 RAM 以及 Z80 8 位 1.77 MHz 处理器。而同样在 1977 年,我编写了自己的第一个计算机程序。这仅仅是巧合,还是宇宙事件间不可思议的一致? 自此以后情况发生了一些变化。我曾经使用过 110 MB 的可移动硬盘,它的体积如同一个要花笔小钱才能买到的大蛋糕那样大。而现在,我的书桌上散放着像地铁代币一样的 128 MB 闪存卡。我还记得“迷你型”计算机曾占了房间的大部分,而且需要许多空调和电力来运行。今天,我可以将计算机挂到腰带上四处走动。嗨,我还记得自己曾经认为 300 波特的声耦合器真的很酷。事实上,我曾拥有一台电传打字机终端,其中就包含如打字机那么大的 300 波特的声耦合器。它是我的第一台“便携式”计算机。 当回首自己在计算机世界中经历的 25 年时,我想到了其间出现的所有计算机游戏。从简单的 Pong 游戏到今天的 arcade 风格的复杂游戏,计算机和游戏一直在共同发展,就如同参加技术会议就会获得免费 T 恤一样。 因此,作为我在计算机行业中的 25 年经历的适当体现,我将编写一个适用于 Pocket PC 的游戏,此游戏具有我刚迈入计算机世界时常见游戏的特征。 采用 eMbedded Visual Basic 构建游戏 本月,我们将深入讨论一个 Microsoft eMbedded Visual Basic? 开发以前很少讨论的领域 — 游戏。在很大程度上,我们已经并且仍将继续采用 Microsoft eMbedded Visual C++? 来开发游戏。因为 eMbedded Visual C++ 允许您构建运行更为快速的应用程序、更好地控制系统资源并与 GAPI(微软公司的游戏 API)连接,所以游戏开发人员会选择它也是在情理之中。 注如果想了解更多有关使用 eMbedded Visual C++ 开发游戏的信息,请参阅我的合作伙伴 John 的文章 Time for GAPI。 然而,这并不意味着不能使用 eMbedded Visual Basic 来开发游戏。实际上,如果创建游戏只是为了供人消遣,那么它就非常适合于开发富有情趣的单人游戏项目。 现在,eMbedded Visual Basic 语言由于缺乏对结构的支持而阻碍了它与 GAPI 的共用。不过,最近有一家名为 SpriteHand Software的公司 (http://www.spritehand.com) 推出了一个称为 ASpriteCE 的控件。通过为您处理复杂的图形问题,该控件使 arcade 风格的游戏开发变得简单。下面我将对其进行介绍。 Pocket Bricks:似曾相识的游戏 本文所要构建的游戏与过去的游戏有关。它是一个简单的游戏,包括一个球、一个球板以及一堆方块。在玩游戏时,您可以四处移动球板,引导球去击中方块并将其击出,当所有的方块都消失时,您就赢了游戏,否则,您就输了所有的球。 我将这个游戏称作“Pocket Bricks”。开始屏幕示例如图 1 所示。通过 Pocket PC 上的方向盘控制游戏。球板可以左右移动。 
图 1. Pocket Bricks 游戏的开始屏幕
当球击中方块时,方块从屏幕中消失,并增加您的积分。进行中的游戏如图 2 所示。 
图 2. 进行中的游戏
构建 Pocket Bricks
Pocket Bricks 是从一个标准的 Pocket PC 项目构建。您需要将的 ASpriteCE 控件的一个副本添加到此项目中,如图 3 所示。 
图 3. eMbedded Visual Basic 组件对话框
Pocket Bricks 窗体的设计非常简单。如图 4 所示,窗体的主体是一个单一的 ASpriteCE 控件。该控件下方是 3 个标签,一个用来显示运行积分,一个用来显示剩余游戏币(球)数,另一个用来显示当前等级。 
图 4. Pocket Bricks 窗体的设计
不要着急,让我先做一个广泛而深入的免责声明。Pocket Bricks 游戏的目的是演示如何使用 eMbedded Visual Basic 创建游戏。这款游戏不具备任何商业价值,不能上市销售,不可以对其进行购买以作为某人的生日礼物,并且它也不是那种能售出一百万美元供您到哥斯达黎加隐居的游戏。所以,不必在新闻组对它进行疯狂攻击,不必租用任何飞机横幅抗议,也不必购买任何有线电视广告时间来告诉全世界我的游戏有多么差劲。我自己知道这个游戏有多么差劲。但是,对于一个只花了 4 个小时编写出的游戏而言,您还能期望什么呢?嗨,我甚至还要坦白承认我在这 4 个小时里所做的事情。大部分时间用来玩 Pocket Bricks 游戏而不是编写它。我并不是唯一喜欢玩这个 Pocket Bricks 游戏的人。我的妻子声称“女性会发现它有益于健康”,我认为这是她独占 Pocket PC 的借口。
Pocket Bricks 背后的代码 我们将从如下所示窗体的“General Declarations”部分开始对代码的讨论。这一部分可以分成两个部分:常量声明和窗体范围内的变量声明。
Option Explicit Const BALL = 1 Const BALL_X = 115 Const BALL_Y = 200 Const BLUE_BRICK = 10 Const BONUS_BRICKS = 1 Const BRICK_SIZE = 10 Const BRICK_START = 40 Const CYAN_BRICK = 20 Const GREEN_BRICK = 30 Const MAUVE_BRICK = 40 Const NUMBER_OF_BRICKS = 56 Const PADDLE = 0 Const PADDLE_X = 89 Const PADDLE_Y = 230 Const RED_BRICK = 50 Const SOUND_BOUNCE = 2 Const SOUND_CLEAR = 4 Const SOUND_MISS = 3 Const WHITE_BRICK = 60 Const YELLOW_BRICK = 70 Dim bolBallMoving As Boolean Dim intBallSpeed As Integer Dim intBrickCount As Integer Dim intCurrentDirection As Integer Dim intLevel As Integer Dim intThisBallBricks As Integer Dim intThisBallTotal As Integer Dim intTokens As Integer Dim lngTotalScore As Long
|
|
|
|
|
|