基于Authorware的迷宫游戏开发

时间:2022-07-11 06:04:13

基于Authorware的迷宫游戏开发

摘要:Authorware7. 0是一种基于设计图标和流程线结构的多媒体设计平台,它具有丰富的函数和程序控制功能,以及强大的交互控制能力。该文通过对基于Authorware的迷宫游戏的设计与实现过程的详细介绍,阐述了Authorware强大的交互功能和丰富的函数库的应用。

关键词:Authorware;迷宫游戏;交互;函数

中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)22-5453-02

Authorware-based Maze Game Development

WANG Yun, ZHU Shan-hong

(College of Computer and Information Engineering, Xixiang University, Xinxiang 453003, China)

Abstract: Authorware7. 0 is a multimedia design platform, which is based on the design icon and flow line structure, and it has a wealth of functions and process control functions, as well as powerful interactive control.This article describes the Authorware-based maze game design and implementation process, elaborated Authorware powerful interactive features and its function applications.

Key words: authorware; maze game; interaction; function

在各种多媒体应用软件的开发工具中,Macromedia公司推出的Authorware是不可多得的开发工具之一。Authorware采用面向对象的设计思想,是一种基于流程图和设计图标的多媒体开发工具。它具备多媒体素材的集成能力和超强的交互控制能力,同时整合许多程序设计语言的特色,提供了丰富的函数及程序控制功能,特别适合于制作交互能力强、流程控制复杂的多媒体作品,这也是Authorware区别于其他多媒体创作软件的最大特点[1]。目前,它己广泛地应用于教育与训练、军事应用、信息管理、商业、电子出版、游戏和娱乐等领域。

1 游戏分析

本迷宫游戏在Authorware7.0中开发。游戏开始时,在界面上有一座迷宫和一个误入迷宫的老鼠。迷宫里有很多条路,大部分通向死胡同,只有少数可以通向出口,且出口只有一个。如果老鼠遇到死胡同,可以重新搜索其它的路,直到找到出口为止。

游戏的开发过程如图1所示。

2 游戏的总体设计

由分析可知,此游戏由两大部分组成:一是初始化状态,即设置背景及老鼠的初始状态;二是老鼠在迷宫中跑动,搜索出口,直到找到出口为止。在老鼠的跑动过程中,需要控制老鼠的跑动方向和跑动速度,用Authorware来开发此游戏,可把此项内容单独作为一部分,用交互图标来实现。本文采用左右方向键改变跑动方向,上下键改变跑动速度。其程序总体结构如图2所示。

3 游戏的详细设计及实现

3.1 程序初始化

初始化过程中,需要设置整个迷宫环境及老鼠的初始化状态。

3.1.1 设置迷宫环境

迷宫的每一条通路,都是由一面面的墙壁隔开而形成的。这里需要注意的是,每一面墙壁都必须单独占用一个显示图标,否则将无法设置老鼠当时跑动的空间大小,即两面墙壁之间的空间大小,这里可以把所有的墙壁(可用直线画出来)放到一个命名为“墙壁”的群组图标里面;另外,“出口”必须单独占用一个显示图标,以便于判断老鼠是否到达出口。

3.1.2 设置老鼠初始化状态

在计算图标中设置老鼠的所有初始化状态:

1)假设老鼠是方形的,计算其宽度:Rsize= INT( DisplayWidth@"老鼠" / 2 );定义老鼠此时的前进方向:Rdirection := 1,即为向上;用系统变量DisplayX(存放对象中心到演示窗口的左边界的距离)和DisplayY(存放对象中心到演示窗口的上边界的距离)定义老鼠位置:RatX := DisplayX@"老鼠",RatY := DisplayY@"老鼠";定义老鼠跑动速率(sec/in):RatRace := 0.1。

2)用Rect函数创建一个背景大小的矩形,为老鼠的跑动空间设置最大范围:Enclosure := Rect( DisplayLeft@"背景", DisplayTop@"背景", DisplayLeft@"背景" + DisplayWidth@"背景", DisplayTop@"背景" + DisplayHeight@"背景" )。

3)结合函数、变量和循环控制程序语句(repeat…with…),对群组图标“墙壁”里的所有墙壁进行操作,设置老鼠在每一时刻可以跑动的空间,即当时老鼠所处两面墙壁之间的空间。其核心代码如下:

RatSpace := Array( TRUE, DisplayWidth@"背景", DisplayHeight@"背景" )

repeat with i := 1 to IconNumChildren( @"墙壁" )

Wall_ID := ChildNumToID( @"墙壁", i )

WallProximity:=Rect(DisplayLeft@Wall_ID,DisplayTop@Wall_ID, isplayLeft@Wall_ID + DisplayWidth@Wall_ID - 1, DisplayTop@Wall_ID + DisplayHeight@Wall_ID - 1 )

WallProximity := WallProximity + Rect( -RatSize, -RatSize, RatSize, RatSize )

WallProximity := Intersect( WallProximity, Enclosure )

WallProximity := WallProximity - Rect( Enclosure[ 1 ], Enclosure[ 2 ], Enclosure[ 1 ], Enclosure[ 2 ] ) + Rect( 1, 1, 1, 1 )

repeat with j := WallProximity[ 1 ] to WallProximity[ 3 ]

repeat with k := WallProximity[ 2 ] to WallProximity [ 4 ]

RatSpace[ j, k ] := FALSE

end repeat

end repeat

end repeat

3.2 方向及速度控制

设计方向及速度控制时,有个难点:一般情况下,大多都会想到使用“按键响应”来控制,但是经过笔者试验,发现按键交互不能确保方向键一直可以灵活使用,如果想要灵活使用方向键来控制方向及速度,使用“按键响应”的操作将会比较复杂。因此,本游戏采用“热区域响应”的方法来控制老鼠跑动的方向及速度,只需要将热区域设置成很小的一块,并放在一个不易被鼠标点击到的位置(如左上角),然后在其属性的“快捷键”中设置成方向键变量即可。左右上下方向键变量为:leftarrow,rightarrow,uparrow,downarrow。

本游戏中采用左右方向键改变跑动方向,上下键改变跑动速度。前进方向分为8个,向上为1,右上为2,按顺时针依次往下排列。方向示意图如图3所示。每按一下左方向键可控制老鼠逆时针转动一下头,按一下右方向键可控制老鼠顺时针转动一下头,其实现可用Test函数来实现。而速度的改变则可用if…then…语句来实现。具体实现如下:

逆时针转动方向:Rdirection := Test( Rdirection = 1, 8, Rdirection - 1),其含义为:如果Rdirection = 1,则按一下左方向键使Rdirection = 8,否则Rdirection = Rdirection -1。

顺时针转动方向:Rdirection := Test( RatDirection = 8, 1, RatDirection + 1 ),其含义为:如果Rdirection = 8,则按一下右方向键使Rdirection = 1,否则Rdirection = Rdirection +1。

加速:if RatRace > 0.01 then RatRace := RatRace * 0.8,其含义为:按一下向上方向键,则Rate(sec/in)变为原来的0.8倍,缩短了跑动时间,即提高了速度。

减速:if RatRace < 1 then RatRace := RatRace * 1.25,其含义为:按一下向下方向键,则Rate(sec/in)变为原来的1.25倍,增加了跑动时间,即降低了速度。

3.3 搜索出口

在搜索出口的过程中需要一边跑动,一边判断是否已到达出口,若没有到达,继续按照方向键的控制沿通路跑动,若已到达出口,则结束游戏,并表示祝贺。

1)移动控制

跑动需要老鼠移动位置,所以可用Authorware中的移动图标,采用“指向固定点”类型,设置老鼠的跑动目标为变量RatX和RatY,Rate(sec/in)设置成前面定义的变量RatRace。

在跑动过程中,根据老鼠跑动的方向不同,其坐标的变化也会不同。由方向示意图图2可知,当Rdirection为1和5时,横坐标将不会发生变化,而当Rdirection为2、3、4时,则横坐标+1,当Rdirection为6、7、8时,则横坐标-1;同理,当Rdirection为3和7时,纵坐标将不会发生变化,而当Rdirection为4、5、6时,则纵坐标+1,当Rdirection为1、2、8时,则纵坐标-1。设当前方向上新的坐标为(i,j),则其变动可设置如下[2]:

i := RatX + ValueAtIndex( [ 0, 1, 1, 1, 0, -1, -1, -1 ], Rdirection )

j := RatY + ValueAtIndex( [ -1, -1, 0, 1, 1, 1, 0, -1 ], Rdirection )

其中函数ValueAtIndex(anyList, index)的含义为:返回指定列表中指定位置的值。

本游戏中,当老鼠前面是墙壁时,是无法移动的,只有前面没有墙壁时才可移动老鼠。其核心代码如下:

ifRatSpace[ i - Enclosure[ 1 ] + 1, j - Enclosure[ 2 ] + 1]then

RatX := i

RatY := j

end if

以上代码设置均可在移动图标的附属计算机图标中设置。

2)判断是否到达出口

判断老鼠是否到达出口,可用决策图标中的计算分支结构结合Overlapping函数来判断,若两个显示对象“老鼠“和”出口“重叠放置,则Overlapping函数的值为真,即Overlapping(@"老鼠", @"出口").。

当老鼠到达出口后,可在“祝贺”显示图标的“计算”属性中改变RatRace的值,使其为一个很大的数(比如999999),让老鼠的跑动速度近似于0,以老鼠停在出口并结束整个游戏。

至此,迷宫游戏的设计制作全部结束,运行程序调试,然后打包生成即可。

4 结束语

Authorware是基于图标的可视化模式的编程工具,它的灵魂就是函数的使用。丰富的函数库使得Authorware具备了一般高级语言的功能,但是更加简洁和高效[3]。用Authorware开发的发迷宫游戏,就具有上述特点,而且还可打包生成单机版,也可打包生成网络版,支持迷宫游戏的在线管理。

参考文献:

[1] 袁海东.Authorware7.0教程[M].北京:电子工业出版社,2006.

[2] 陈晔.利用Authorware软件开发贪食蛇游戏[J].电脑知识与技术,2007(5):1288-1289.

[3] 梅申信,梅林. Authorware 中的函数使用[J].安徽农业大学学报,2004,31(2) :242-245.

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

上一篇:多方协同,提高计算机类工程硕士学位论文质量 下一篇:分布式计算技术介绍