当前位置:文档之家› GameMaker标准中文教程

GameMaker标准中文教程

GameMaker标准中文教程
GameMaker标准中文教程

入门篇

GameMaker是一个很容易就可以开发你自己的电脑游戏的软件。这一章介绍你想制作的游戏所需要的知识。后面的章节会进一步讨论更多的功能,怎么发布你的游戏和介绍GameMaker的内建语言GML。

关于GameMaker的初级使用在下面的页面有介绍。

GameMaker制作原理

在研究GameMaker之前,最好先摸索一下GameMaker的制作原理吧。用GameMaker 做游戏都放在一个或多个房间里。(房间是一个平台,不是3D的,但可以包含仿3D的图片。)在这些房间里,你可以放置物体(可以在GameMaker里定义)。经典的物体有墙、运动的小球、主角、怪物等。有些物体(像墙)是静止的什么都不做。另一些物体(例如主角)会响应玩家的输入(键盘、鼠标、手柄)而运动。或者物体跟物体间也会产生某些反应。例如,当主角遇到怪物的时候,主角会死亡。在GameMaker中,物体是最重要的。

首先,大多数物体都需要一些图象来让它们显示于屏幕上。这种图象叫做精灵图象。一个精灵图象不单可以是一张图片,可以是一套动作的图片集,用于表达物体的动作效果。这样,就可以达到像走动,转动等效果。在游戏中,精灵图象在某些特殊的物体里是可以改变的。(这样当物体向左或向右走时可以显示不同的图象。)你可以在GameMaker里制作自己的精灵图象,或者导入一些图片素材。

物体会发生某些事。这些事叫做事件。当事件发生时,物体会执行相对应的动作。物体可以发生很多事件并可以响应很多不同的动作。例如,当物体创建时会发生一个创建事件。(说精确一点是,物体中的某个具体对象被创建;物体相当于一个类,而对象就是类的一个抽象。)例如,当一个球被创建时你可以给它一些运动动作,这样球就可以运动了。当两个球相遇时,会发生碰撞事件。在碰撞事件发生时,你可以给球一个动作,让它停止或者反向运动。或者也可以产生音效。GameMaker可以让你定义一些声音。当玩家敲击键盘时,会产生一个键盘事件,物体会执行相应的动作,例如移动。我们希望你可以理解一点,设计每种物体,你要先定义事件,再在事件里加入对应的动作。

当你定义好物体之后,你应该开始设计房间了。这样,物体才可以在房间里表演。在游戏里房间可以用来设计关卡或者大地图的不同部分。用动作可以从一个房间移动到另一个房间。房间,首先,要有一个背景。背景可以是纯色的或者是一张图片。这种图片你可以在GameMaker里创建或者从外部调用。(背景可以做很多东西,但暂时只是用于美化房间。)下面,你可以将物体放到房间里了。你可以放入多个同样的物体。因此,例如,你可以只定义一种墙物体就可以在房间里放入很多这种墙。你也可以放入多个同样的怪物物体,这时它们的行为是一样的。现在你可以准备运行你的游戏了。运行时,会先出现第一个房间。物体也会按照设定的动作运动。它们会根据发生的事件来执行相应的动作。

下面这些是比较重要的资源:

物体:游戏中定义有各种事件动作的实体,它们是游戏的主要表现部分。

房间:放置物体让它们活动的地方,可以理解为不同的场景。

精灵:用来展示物体的图片,它只是图片,无任何属性行为。

声音:用在一个游戏中的背景音乐或者音效。

背景:为房间定义背景的图片。

事实上还有其它很多的各种类型的资源比如说:路径、脚本、字体、时间轴等。它们在更复杂的游戏中起到了很大的作用。这些只有你在高级模式下运行GameMaker才可以看得到。如果你觉得有很多细节没有看懂,没有关系,在后面的章节中,我们将分门别类的对每一个资源设置项目进行详细的讲解。这里我们只希望可以让你对GM的运行体系有个大致的了解。

一个例子

首先最好让我们来看看一个简单例子。我们假设你在简单模式下运行GameMaker。第一个步我们先在脑海里大概的勾画一下我们要制作的游戏是什么样子的(你最好先做这一步工作,当你打算开发大型游戏时,你就不是简单的在脑海里勾画了,你必须有你的游戏开发进程表,以及各种有条理的书面规划,这样可以为你在以后的开发中节省很多时间)。我们现在的个例子是很简单的:有一个球在几面墙之间弹跳,玩家可以点击球,每一次点到会得一分。

那么首先我们需要两种不同的游戏物体:球和墙。这样我们需要两种精灵图片来表示两种物体。最后,当我们成功点中球时我们会听到一些声音。这个简单的游戏我们只要为它设置一个房间就可以了。不妨让我们自己动手来做做吧,在做的过程种如果你碰到什么地方不会的话可以调出例子来看看。(ball.gm6)

好了开始动手吧。首先我们制作好精灵图片,从“添加”菜单菜单里我们选择“添加精灵”,你可以看到一个弹出的窗体,在“名称”选项里我们输入“wall”,选择“读取精灵”按钮并选择一个类似墙的一个小图片,这样我们就得到了一个墙的精灵图片。现在你可以关闭该窗体了。以同样的方法为球(ball)也建立一个精灵图片。

下面我们添加声音,从添加菜单里面选择“添加声音”,另一个窗体将会打开,给声音取一个容易识别的名字并选择“读取声音”,载入一个声音资源并试试是否是你想要的效果,如果设置好了就可以将窗体关闭。

下一步是创建两个带事件的物体,首先让我们来看看墙物体。再次从添加菜单中选择“添加对象”,将会弹出一个比之前复杂一点的窗体。左边我们看到是物体一些大概的相关信息。我们给物体取一个贴切的名字并且从“精灵”下拉菜单中选择一个正确的精灵图片。因为墙是一个固体所以我们在“固态”选项框打上沟。现在我们来建立一个新物体,给它取名为“ball”,并且给它一个球的精灵图片。因为球是运动的所以我们就不要钩选“固态”选项了,一会我们还要给它

设置行为动作。在中间你可以看到一个还没有添加任何事件的空列表栏,在栏下面是一个名为“添加事件”的按钮,单击它会列出所有的事件。选择“建立”事件,你会看到它被添加到了事件列表中。在最右边你可以看到所有可以用的动作命令,它们都已经被分好组了。从“移动”组里面我们选择一个8个红箭头图标的动作拖动到动作栏中,这个动作将让物体朝一个特定的方向运动。当你完成拖动后一个对话框将会显示出来,在里面你可以指定物体运动的方向。选择所有的箭头以便选择一个随机的运动方向。你可以指定速度为8。好了,现在关闭对话框。现在球从开始建立就可以运动的事件已经设置好了。下一步我们将要设置球碰到墙会有什么反应。再次按“添加事件”按钮,在球的事件列表里选择“碰撞”事件,并且在下拉菜单里面选择墙物体(和墙相撞)。在这个事件里面我们将要添加一个“反弹物体”的动作。(在动作按钮上,你只要把鼠标放在上面几秒钟就会弹出动作介绍的帮助气球)最后我们需要定义当用户球物体被鼠标左键单击发生的行为。添加“鼠标”事件并且从下拉菜单中选择“左键”事件。为这个事件我们添加一些新动作:一个用来播放声音,另外一个用来更改分数值,两个动作分别可以在“主要一”组和“分数”组中找到。还有另外两个动作是用来给球一个新的随机位置并且朝一个新的方向运动。用同样的方法添加好。在声音动作里面我们选择好正确的声音。在分数动作里面,我们输入1并且在“相对”选项前点钩,意思是在当前的分数值上加一。最后,加上一个“跳到随机位置”动作和一个8方移动的动作。

现在我们的物体就准备好了,我们还要做的是设置房间,或者说场景。为游戏添加一个房间,再次选添加菜单选择“添加房间”,在右边你可以看到空空的房间还没有放置任何物体和背景。左边你可以看到一些标签菜单选项。一个用来设置背景,一个设置房间的大致属性,象长宽之类的,还有一个菜单你可以用来往房间里面添加定义好的物体,在底部你可以从下拉菜单里选择物体。通过点击房间的指定位置你可以将物体放置在房间的指定位置。你可以右击物体来将它删除。用墙物体建立一个美观的方形墙壁,最后把一两个球物体放置在房间的墙壁围好的空间里面。我们的游戏到此已经全部准备完毕。

现在是我们将要测试的时候了,单击“运行”按钮,看看会有什么发生。如果在球刚开始运动的设置上没有发生错误,那么你试着点击它看动作是否有误。你可以通过键盘“ESC”键停止游戏。同时你也可以为这个小小的例子做更多的变化,比如你学了粒子效果,你可以为球添加运动的轨迹效果,并且当两球碰撞时产生火星等。

恭喜你,你已经用GM制作好了你的第一个游戏。好了接下来,就让我们更深入的到每一个环节去学习吧。

精灵图象

精灵图像在游戏中是用于表现物体的资源(可以将物体看成灵魂,那精灵图象就是肉体)。一精灵图像可以是一个单独的图像,也可以是一组一个接一个播放的图片集。

当你做一个游戏的时候,通常你会收集游戏里所需要的精灵图形素材。你可以在GameMaker的网站上找到一些简单的素材,在网上也有很多。一般格式都是gif 的。专业游戏制作组制作游戏时会让美工设计好一套各种角色图形。一般的爱好者可以自己动手,也可以到网络上通过其它途径寻找现有图形资源来制作游戏。

你可以通过添加菜单或者工具栏的按钮来添加精灵图象。添加时,会打开一个精灵图象的属性窗体。

在上方你可以指定精灵图像的名称.全部精灵图像(和其它全部的资源)都要有一名称。你最好给予每个精灵图像一个描述性的名称。并确定所有资源有不同名称。虽然不需要严格地遵守命名规则,但建议你在精灵图像名称上只使用文字、数字和底线符号(_) 命名(任一其它的资源也一样)并以一英文字开始。特别是不要使用空格符,一旦你开始使用脚本后将会发现按规则命名非常重要。

要加载一精灵图像,点选“读取精灵”按钮。将会弹出一个标准的文件打开对话框,你可以指定精灵图像。GameMaker可以加载许多不同格式的图象文件。当你加载一动画gif,不同的帧组成精灵图像(注意被压缩的动画gifs文件不可以被加载)。只要精灵图像被加载,那么第一个子图形会被显示在窗体右边。当精灵图形是动画时,你可以使用工具栏的箭号按钮来更改它们的顺序。

“透明”选项指定精灵图像的背景是否要被当成透明来处理。大多精灵图像背景都是透明的。背景色是由图像最左下方的像素颜色来决定。所以要确定图像要显示的部分中没有是透明色的颜色,否则将被透明化而不被显示。

可以用“编辑精灵”按钮来处理精灵图像,或甚至创建一完全新的精灵图像。后面章节有详细介绍。

声音与音效

大部分游戏有特定的声音效果和一些背景音乐,在GameMaker网站中也简单的提供了一些声音文件,你可以在网络上搜集更多音效资源。

添加声音资源到你的游戏中,可以在添加菜单中使用“添加声音”命令或在工具栏中使用对应的按键。这时候会弹出一下像下面的属性窗体:

在上方你可以更改声音资源的名称。需要加载一声音,单击“读取声音”的按钮,显示一个文件打开对话框,在上面你可以选择声音文件。有两种类型的声音文件,wave文件和midi文件(关于mp3文件后面有介绍,因为比较特殊):wave文件通常用于短音效。它们使用许多的内存,但是播发很快就结束。可在你的游戏中当作音效使用。midi文件使用较少内存,但是它们被限制在只作为背景音乐,不支持各种音效。而且任何时间只可以有一个midi声音在播放。

你可以使用播放按键听声音效果。有一个“保存声音”的按钮用于保存当前的声音。这按钮不是必须的,但某些时候还是有用的。

背景

第三种基本资源是背景。背景通常是较大的图像,常用于游戏发生的房间中做背景(或前景)。通常背景图像可以用看不出缝隙的元件类图形用来重复排列形成。GameMaker的网站也提供了一些简单背景图象。

要添加一背景资源到你的游戏,在增加菜单中使用“添加背景”命令或在工具栏中使用相对应的按钮。这时将会弹出背景的属性窗体:

同样你要给背景取一个名称。单击“读取背景”按钮以加载一背景图像。GameMaker支持许多格式的图象文件。要注意背景图像不可以是动画!(透明)复选框指出背景是否为部份透明,大部份背景不透明的所以默认值为否。最左下方像素的颜色被拿来当做透明颜色。

你可以使用“编辑背景”按钮来更改背景或创建一个新背景。

物体

到目前为止你应该可以添加一些漂亮的图片和好听的声音到游戏中了,但它们不能产生任何行为。现在我们来了解GameMaker中最重要的资源:物件。物体是在游戏中实际动作的实体,大多数情况下它们会用精灵图像来展示自己,这样你就你可看见它们。同样它们有行为,它们可以对一定事件作出反应,这就是物体区分于精灵图像的区别,因为它们有事件、有行为。在游戏中你见到的放在场景中的东西都是物体(除了背景之外。更精确地说,它们是物体的实例)。人物、怪物、球、墙壁、等等,全部是物体。也有一些特定物体是你不看到的,因为它没有设置一个用来显示它们的精灵图像,但是它们仍被放在场景中,它们事件在控制游戏某部分的运作。

需要了解精灵图像和物体之间的差别。精灵图像只是(动画)图像,而没有任何行为。通常物体有一个精灵图像代表它们的外观,但是物体有行为,没有物体游戏就不发生任何事件产生任何效果,也就没有游戏!

还要了解在物体和实例之间的差别,一个物体描述一特定的实体集合。例如:一个怪物。在游戏中一种物体是可以有多重实例的。当我们谈及到一个实例时代表一个物体中一个特定的有一个ID编号的实例,当我们谈到一个物体时代表该物体中全部的实例。也就是说一个物体可以有很多个实例用来代表这个物体来使用,物体是所有实例的总称。物体是一个集合,实例是物体的一个抽象(如果学过面向对象编程会很容易理解,就是类跟对象的关系)。

要添加一个物体到你的游戏中,从添加菜单中选择“添加对象”。会出现下面的窗体:

这相对来说会复杂一点。左边有关于物体的一般信息。在中间是物体发生的事件表列,在右边是物体对应事件的多种不同的动作。事件和动作将会在后面的章节介绍。

同样你需要给物体一个名称。然后你要指出用来显示物体外观的精灵图像。在精灵图像方块中单击鼠标左键,或在靠近它的菜单按按钮单击鼠标左键,将立刻弹出一个菜单,其中包含了所有可用的已经添加的精灵图像。选择一个你想要用来代表物体的精灵图像。如果之前没有添加精灵图象,可以点击“新建”按钮来添加一个精灵图象。这样会比先定义精灵图象在调用快些。

在下面有两个复选框,一是“可见”,可见表示在舞台上物体是可看见的。一般大部份游戏在舞台上物体是可见的,但有时无形的物体是相当有用的,例如,你可以使用它们来描述怪物运动情况。隐形的物体同样作出事件反应,且其它的实例也会发生碰撞事件。标示“故态”的复选框指定物体是否是一个静止物体(像墙壁)。和实体物体碰撞与和非实体物体碰撞效果是不相同的。一般固态的都用于描述不运动的物体。这些后面有更多介绍。

事件

GameMaker使用事件驱动物体产生动作。那就是说,当游戏发生某些事情的时候,物体的实例会得到事件(一种告诉物体发生什么事的信息)。物体实例可以通过执行动作来响应这些信息。每种物体,你都可以设置事件,并说明该事件发生时,物体实例该做些什么。物体的实例添加事件和此事件对应动作后,会在发生此事件时产生相应的动作。这看起来似乎复杂了点,但事实上很简单。比如事件鼠标左键单击这个事件发生,而在这个事件中添加了播放一个声音的动作,那么当在物体的一个实例上点了鼠标左键后,会播放一个声音文件。你可以使用一个非常简单的拖放方法来指定动作。

在物体属性表单的中央,有事件列表,列出物体必须作出反应的事件。最初是空的。你可以增加事件到其中,由单击“添加事件”按钮。将出现一个事件列表的小窗体。在里面,你可选择你想要增加的各种事件。例如,如果是键盘事件,你必须选一个按键。

在窗体右边列出了全部的动作,由小图标表示,它们已经分好类。在下一个章节我将描述所有的动作和它们的功能。

在事件和动作之间有动作列表,列表包含当前事件的动作。要增加动作到列表,用你的鼠标拖曳它们,从右边拖到列表中就行了,它们将照拖曳顺序排列,并有一简短的描述。对于大多动作,你需要设置一些参数。这些也将会在后面章节有介绍。

现在你可以开始增加动作到不同的事件里,用鼠标左键点选要设定的事件来选择,然后在其右方动作列表中拖拉动作到事件对应的动作菜单里(注意删除一个

事件时所有的事件里的动作会被全部删除。还有如果事件里动作列表为空,那么这个事件也会自动被清除)。

你可以使用拖曳更改列表中动作的顺序。当拖曳时假如你按住键,将会复制这个动作。甚至可以在不同物体中的动作列表之间使用拖曳(将一个动作拖曳到不同物体)。当你在动作列表中的一个动作上点选鼠标右键时,会弹出一个菜单,其中你可以删除动作(也可由使用按键来完成)或复制和粘贴动作。按+键可以选中所有动作。当你将你的鼠标指针放在一动作上方不动,会显示鼠标停留的动作的简介。更多有关动作的信息后面还有介绍。

用Delete键可以删除事件以及它所有的动作。假如你想要指定动作到一不同的事件请单击标示更改的按键,并选择你想要的新事件(新的事件不能是已经被使用过了的)。某些事件名称的旁边有一菜单符号紧邻着它表示在里面为事件的集合,有很多可选事件。当你在菜单上单击鼠标按键,或在事件名称上点鼠标右键,出现菜单让你可以挑选想要更改的事件。

下面为几个常用事件介绍:

建立事件:当物体的一个实例被创建(或者说是放到场景上时)触发事件,是物体实例的第一个执行的事件,一般用来为实例设定特定变量以及定义物体开始时的运动或者要发生的动作。

破坏事件:当实例在场景中被删除时触发的事件。更精确地说,它发生在实例被摧毁之前的瞬间,所以当事件在执行时,实例还存在!例如你可以让一个魔鬼死亡/消失时发出大叫声(播放一个声音文件),或者使用它来更改游戏分数,或者创建别的物体。

计时器事件:每个实例有12个定时时钟,可以精确控制物体在某刻发生某个动作,你可以给时钟设置一定的动作,再给时钟设置一个倒计时步数,然后时钟倒数计时直到步数到0,在那个瞬间时钟事件触发,时钟里的动作执行。要指定动作到一给定的时钟,首先你需要在菜单中选择它。时钟非常有用,你可以使用它们去让特定的行为不断发生。例如一个怪物在每20步更改它运动的方向一次(要实现这中效果你可以在时钟事件里的动作里再设定时钟这样就会反复被激发)。

步事件:步事件发生在游戏的每一个步里,因此你可用于放那些需要被连续执行/一直发生的动作。例如,假如一个物体要会跟随别的物体时,你可以在步事件里把这个物体坐标设为要给跟随物体的坐标加减一点请小心使用这个事件,在有步事件的物体中,不要用过多复杂的动作,否则会大大减慢游戏速度。其中有三种不同的步事件。通常你只需用默认的步。你也可以通过弹出菜单选择开始步和停止步事件。开始步事件是在每个步的最起初执行,注意它在发生任何事件之前。正常的步事件是物体实例被放到它们的新位置之前执行。停止步事件是在步的结束时执行,在物体绘制之前。常使用在如按照当前方向来更改精灵图像。

碰撞事件:不论何时当两物体实例碰撞(也就是,它们的精灵图像重迭)时,发生碰撞事件。精确地说是两个碰撞事件发生:因为每个实例各设置了一个碰撞事件。实例可以对碰撞作出反应。要设置碰撞,先点碰撞事件菜单,再选择你想要定义碰撞事件的物体,其次你把动作放在动作列表里。

实例与一固态物体和一非固态物体碰撞时是有差别的。首先,当在碰撞事件中没有添加动作时,什么也不会发生:当前的实例保持原来的运动,即使被碰撞的物体是故态也如此。当碰撞事件包含了动作时,则出现下面的情形:当被碰撞物体是固态物体,实例先被放回它先前的位置(即在碰撞发生之前的位置),接着执行碰撞事件。最后,实例被放到它的新位置。当被碰撞物体不是固态物体时,原先实例不会被放回,实例仅在它当前的位置上执行事件,并且,碰撞不会检查两次。稍微想一下就明白这是理所当然的。因为物体不是固态物体,我们可在它上面移动。碰撞事件有许多用处,物体实例可以使用它来实现墙壁的反弹。你可以使用它来销毁物体假如它们被子弹击中等等。

键盘事件:当游戏者按下键盘上的键时,按键事件就发生了。每个按键,可以设置不同的事件。在菜单中你挑选需要被定义按键事件的按键,然后再添加动作。通常,游戏里只有少数的物体会用到少量的按键。当压住按键不放时,该键所定义的动作会一直循环执行。有两个特别的按键事件,一个称为“没有按键”,当没有按下键时,事件会发生在每步中;第二个称为“任意键” ,当任意键被按下时发生。注意在键盘右方数字小键盘中,要按按键激活数字键盘,数字按键事件才会有作用。

鼠标事件:当鼠标光标停在代表精灵图像的实例上时,产生了此物体实例的鼠标事件。按照鼠标的按键情形而定,有<没有按键>,<左键>,<右键>,或<中键>事件等等。当游戏者一直按着鼠标按键不放时,鼠标按键事件会在每一步中发生。按下事件是当按键被压下时发生,注意只发生一次。释放事件是当压下的按键被放开时发生。注意事件只在鼠标光标移到实例上时才发生。如果你想在任意位置都可以响应鼠标事件,你可以用全局鼠标事件。还有两个特别有用的事件,一个为鼠标移到物体实例上时发生的事件,一个为鼠标移出物体实例时发生的事件。鼠标滚轮的滚动也可产生事件。最后还有些关于游戏手柄的事件。

其他:

还有一些其它的事件在游戏中也是很有用的。可以在菜单中找到:

·离开房间:当实例的位置完全在场景的外面时触发事件。

·与房间边界碰撞后触发:当实例与场景的边界相交时触发事件。

·游戏开始:当游戏开始时触发了事件,适用于第一个场景中全部的实例。它在房间开始事件之前发生(后面有介绍)甚至在场景中物体实例的创建事件之前发生。它经常用来定义某些背景音乐和初始化某些变量,或加载某些文件资料/游戏动画等。要注意只能由一个物体定义此事件。

·游戏结束:当游戏结束时事件发生到全部实例。例如用来在游戏结束时储存特定数据。同样的,只能由一物体定义此事件。

·房间开始:当房间开始时发生,用于初始化房间中的实例,它发生在创建事件之前。

·房间结束:房间结束时发生。

·生命数为0:GameMaker嵌入了一个生命系统。可用来设置玩家的生命数,有一个动作可设定和更改生命值,当生命值小于或等于0,就发生该事件。它通常用于结束或重新开始游戏。

·健康值为0:GameMaker也嵌入了一个健康系统。有动作用于设定和更改健康值。当健康值小于或等于0时,该事件发生。这通常用于从新获得生命或重新开始游戏。

·动画结束:一个动画由许多图像轮流显示而组成,在最后一个显示的图像之后,会又从第一个图像开始,事件正是在那瞬间发生。例如,可以用于更改动画,或删除实例。

·路径结束:事件发生在当实例沿路径运动并到达路径的终点时,后面对路径有更多的介绍。

·用户自定义:有八个事件。它们通常不会发生,你可以用代码来调用它们。

绘图事件:可见的实例会在每个步骤将把精灵图像绘制在屏幕上。特别注意当你在绘制事件中设定动作后,物体不会被绘制出,取而代之的是执行对应的动作。所以一般用一个不用在舞台上显示出来的物体添加绘制事件。还要注意绘制事件只有在当物体是可见时才可以执行。

按下键:类似于按键事件,但是它只发生一次,只在当按键被压下时,且不是连续的。当你想要让一个动作只发生一次时会用到。

放开键:发生一次,在当按键被放开时,且不是连续的。

清楚GameMaker处理事件的顺序是非常重要的,各种行为发生顺序如下:

·开始步事件->时钟事件->按键事件,按键压下和按键释放事件->鼠标事件->正常的步事件->(现在全部实例在它们的新位置上)->碰撞事件->结束步骤事件->绘制事件。

当相对应的情形发生时,如创建,摧毁,和其它的事件会被执行。

动作

动作指的是要执行的行为,放置于事件之中。不论何时当事件发生时就会执行设定的动作。GameMaker中有大量可用的动作.清楚它们的功能是很重要的,本章节中我将说明一下简易模式下的全部动作。GameMaker默认动作已经分好六组,当你把鼠标光标固定放在一个动作图标上方,会显示一个提示气球提示它的功能。

只要拖曳动作图标到动作表列就可以把一个动作放在一个事件中。你也可以通过拖曳更改动作在表列中的次序。拖曳时按住键可以复制动作(在不同物体属性窗体之间你也可以拖曳和复制动作)。

当你添加一个动作,通常会弹出一个属性窗体,你可以为动作填入一定的参数。许多动作都会有二种参数:在窗口上方你可以指定动作要用于哪个实例,默认值是自己本身,意思是动作将会发生于指定的物体实例。在一碰撞事件中,你也可以把动作作用到涉及在碰撞中的被碰撞物体,这样你可以摧毁被碰撞的物体。最后,你可以选择把动作用到指定的物体里全部的实例中,比如这样你就能更改全部的红色球成为蓝色球。第二个参数是标示着“相对”的复选框,意思为当你输入一个数值时,是相对于当前的数值产生变化的。例如,你可以在当前的分数加减值,而不是把分数直接更改成新的数值。你还可以双击已添加的动作图标来更改动作参数。

下面是各种动作分类的页面:

移动动作

第一组的动作是由与物体运动有关的动作集合成。有下列动作:

开始朝某个方向移动

使用此动作使一实例在特定的方向开始运动。使用箭号按键来指出方向,使用中央按键来停止运动。可以设定物体运动的速度。速度是用每步几个像素来给定,默认值是8,速度最好不要使用负值,你可以规定多种方向,例如样你可以让一怪物开始往左或右方移动。如果选中多个方向,物体会随机选中其中一个方向运动。

设定运动的方向和速度

第二种方法是使用蓝色箭头来定义一个运动,这样你可以指出一个精确的方向,是一个介于0和360度数之间的角度值,0代表水平向右。方向是逆时针旋转的,如90度为一朝上的方向。假如你想要一任意的方向,你可键入任意方向random (360)(意思为在0-360之间任取一随机数值)。注意“相对”前的复选框,假如你勾选方框,新的运动设定会增加到旧的运动设定上。好比说,假如实例是朝上运动而你增加一点向左的运动,最后新运动将是朝左上方运动。

朝指定点移动

这是第三种让物体移动的动作,你指定一个位置和运动速度,实例按指定的速度向位置移动(注意物体不会停在指定的位置!只是朝位置方向移动)。例如,你想要子弹朝宇宙飞船的位置运动,你可以设定子弹朝向的位置为:spaceship.x,spaceship.y(后面章节有更多关于变量的使用方法)。假如你勾选“相对”复选框,即是在指定相对于当前实例位置的新位置(速度不可以勾选“相对”!)。

设定水平速度

一个实例的速度由一水平和一垂直速度组成。你可以用这个动作来更改水平的速度,速度是正值代表往右运动,是负值代表往左运动,垂直的速度将保持不变。使用“相对”来增加水平的速度(或用一负数减少它)。

设定垂直的速度

同样的,仅更改实例的垂直速度。

设定重力

用此动作你可以创建物体的重力效果。你指定一方向(角度在0到360度之间)和一个重力加速度值,指定方向的重力速度值会添加在物体实例当前的运动中,通常你设定小的加速度(如0.01),设定方向为竖直向下(270度)。假如你勾选“相对”复选框你将增加重力的速度和方向。注意,与实际生活中不同,你可以设定不为朝下的重力方向。

水平反向

这动作可以使物体实例运动的水平速度反向。例如当物体碰到竖直的墙的时候用此动作。

竖直反向

这动作可以使物体实例运动的竖直速度反向。例如用于碰撞水平的墙。

设定摩擦力

摩擦使实例在运动之时速度缓慢减下来。在每个步骤中数值会与速度相减,直到速度变为0,通常摩擦力值设的比较小(如0.01)。

跳到一指定位置

使用此动作你只要指定x和y坐标将实例放在一特殊的位置。假如你勾选“相对”复选框,位置是相对于实例的当前位置来放置。

跳到开始位置

此动作把实例放回刚开始它被创建的位置。

跳到一随机位置

该动作把实例放置到场景中的一个随机位置,这些位置没有其它故态物体。你可以指定使用网格。如果你指定正数,则被选择的坐标将是指定数值的整数倍,例如,可以被使用让在你的游戏中的实例保持对齐。可以指定水平定位与垂直定位。也就是后面说到的吸附网格。

对齐到网格

使得你可以把一实例的位置定位到网格上。你可以指定水平和垂直两者的定格数值(就是网格的最小单位的尺寸),对制作智能定位游戏是很有帮助的,比如炸弹人系列。

设置房间贯穿

用这个动作,你可以使物体在房间里贯穿。例如从左边出去,会从右边出来。其他方向类似。

移动到接触位置

设定运动方向,直至碰到物体为止。如果物体当前的位置已经有碰撞,那将不会运动。否则物体会移动直到碰撞发生。你可以指定一个方向以及一个移动的最大距离。比如说一个物体正在下落你可以指定它在碰撞到另一个实例之前运动的最大距离。还可以指定这种效应发生是只针对碰撞到固体物体还是全部物体。很典型的你可以把这个动作放在碰撞事件中用来让实例产生朝一个特定位置运动,当在中途中遇到其他物体就停下来的效果。

碰到物件反弹

当你在碰撞事件放入这个动作,实例会自然的从物体上反弹开。假如你设定“精度”参数为“不精确”,只有水平的和垂直的墙壁才会被正确处理。当你设定“精度”参数为“精确”时,倾斜(甚至弯曲的)墙壁也可得到令人满意的处理结果(但是速度稍慢)。你也可以指定是否是从固态物体,或是从所有物体上反弹。注意弹跳的路径有时不是完全正确的,但在大部分情况下效果是很好的。

主要一

该组动作与物体实例创建、变化、和清除有关。

创建一物体实例

创建一物体的实例。可指定创建哪种物体及创建实例的位置,假如你勾选“相对”复选框,则创建位置为相对于当前实例的位置。在游戏中创建实例是相当有用的:如一艘宇宙飞船可以创建子弹、一炸弹可以创建一个爆炸等等。在一些游戏中你还将要一个控制物体来不时地创建怪物或其它的物体。在新的实例被创建时,会执行被创建物体的建立事件。

建立移动物体实例

与上面的功能类似,但有两点不同。这动作不但可以在某位置创建一个实例并可给予它一个运动方向和速度值,使之开始运动。当勾选了“相对”复选框时,只是位置相对,而不是速度和方向。例如,用这动作创建移动的子弹有个小技巧。在相对于飞机的位置0,0创建子弹。方向就用飞机的方向,直接在方向上输入direction。(这是一个表示当前飞机的移动的方向变量。)

随机创建物体实例

你可以用这动作创建指定的四种物体中的一种创建实例。你要定义这四种物体和创建位置。这四种物体中的其中一种会创建于该位置上。如果选了“相对”,创建位置会相对于当前位置。如果你想选择少于四个物体,可以用“No object”表示。这可用于在某个位置创建随机敌人。

更改实例

将当前实例换成别的物体实例。例如,你可以将一炸弹实例更换为一爆炸实例。更改后全部的设定值,如运动或是相关变量的数值,保持相同。你可以指定是否在当前物体上执行清除事件及为新物体执行创建事件(即“完成事件”)。

摧毁实例

用此动作你可以摧毁实例。自身、其他、或者对象。

销毁一个位置上实例

用此动作让你摧毁所有进入到某一位置的实例。例如当你使用一个爆炸时相当有用,当你勾选“Relative”复选框则该位置为相对于当前事件发生物体的坐标。

更改精灵图像

这动作你可以用于更改实例的精灵图像。你指定新的精灵图像,如果是gif动画的图象还可以指定它的桢数。通常都用0(第一张图象)。如果你不想更换当前显示的子桢图象的时候,你也可以用-1。最后,你可以指定精灵图象动画的速度。如果只想看到某一确定的子图,可以将速度设置成0。如果速度比子图象个数大,会循环跳桢显示。不要使用一个负的速度值。更改精灵图象是比较重要的。例如,

你常常想按实例走动的方向来设定不同的精灵图像,可为角色在每一方向(一般为四个方向)做一不同精灵图像。在键盘事件内用箭号按键来指定运动的方向和更改精灵图像。

变形精灵

使用此动作用来更改实例精灵图像的大小和方向。使用缩放值来放大和缩小图象,使用度数值来使图形产生逆时针旋转。例如,如果想按照方向值来旋转,可以在度数输入“direction”。同时可以指定图像水平或者竖直镜象。

设置精灵混合

使用这个动作你可以改变精灵图形的颜色。你定义的这个颜色和当前精灵图象混合显示,如果你想在游戏中用不同的颜色来显示一个精灵图象你最好把精灵图形制作为一个黑白的图象并用混合颜色来改变它的颜色。同时你也可以指定精灵图象的显示透明度。数值1为完全不透明,0为完全透明。中间值用来设置部分透明效果。这个动作用来制作爆炸效果时非常好的。

播放声音

使用这个动作你可以播放一个先前增加到你的游戏中的声音。你可以指定播放声音的方式,播放一次(默认值)或循环播放。多个wave格式的声音是可以同时播放的。如果你使用midi文件那么一个时间内你只能播放一个文件,其它的midi 会停止。

停止声音

停止播放指定的声音,假如多个实例的这种声音都正播放,则全部停止。

如果声音播放

如果有一个指定的声音正在播放那么执行下一个动作。否则就跳过执行下个动作而执行后面的动作。你可以勾选NOT得到相反的效果。比如你可以用这个动作来测试是否有背景音乐正在播放,没有的话就播放一个新的背景音乐。

到先前的房间

移到先前的房间,你可以指定在不同房间中的切换效果,假如你在第一个房间中得到一个不好的效果,用试验决定怎么做最好。

下一个房间

移到下一个房间,你也可以指定切换效果。

重新开始当前房间

当前房间会重新开始,你可以指定换房间效果。

到自定义房间

使用动作使得你可以去一个特别的房间,你可以指定房间和切换效果。

如果上一个房间存在

这个动作测试是否有上一个房间。如果有下一个动作就被执行,你可以使用这个动作测试是否有上一个房间。

如果下一个房间存在

这个动作测试是否有下一个房间。如果有下一个动作就被执行,你可以使用这个动作测试是否有下一个房间。

主要二

这套动作用于处理一些定时,显示消息等动作。

设定一计时器

使用这个动作你可以为物体实例设定12个计时器中的任一个,你要指定步数和计时器编号。在经过指定步数之后,实例将接收到相应的时钟事件,你也可以由勾选“相对”复选框来增减数值。假如你设定步骤的数目到小于或等于0就是关闭时钟,则指定的给计时器的事件就不会发生。

暂停

使用这个动作使得你可以使场景暂停一段特定时间,通常用在开始或结束一个关卡时,或当你要给玩家某些信息时。你可以指定的数值(以毫秒当单位)来暂停游戏。你也可以指定是否屏幕一开始重绘来显示游戏最后一幕暂停时的场景。

显示一消息

这动作你可以在一对话框中显示一消息。你可以直接输入要显示的消息。在消息文本中假如你使用#符号则它将会换行(如果你想输出"#"号,则要用"\#"代替)。若消息文本以引号或双引号符号开始时,则此讯息代表一个表达式。关于表达式,后面有更多介绍(注意当你的游戏在调试模式下执行时,不可以使用消息功能)。

显示游戏信息

用此动作你可弹出游戏信息窗口,后面有专门章节介绍。

重新开始

用此动作重新开始游戏。

结束游戏

用此动作退出游戏。

保存游戏

用此动作你可以保存当前游戏,你键入文件名来存盘(游戏文件会被存在游戏工作目录中)。之后可以读取。(请注意,只会保存一些基本的状态。例如一些当前播放的音乐,数据结构,粒子等是不会保存的。)

载入游戏

从文件中载入游戏。你指定文件名。要确认要加载的游戏存档是与当前的游戏用相同版本的GameMaker制作的。不然将发生错误。

控制动作

有一些动作可以用语控制是否执行某些动作。大多数这些动作都会问一个问题,例如一个位置是否为空。当答案是对的时候(真)则执行下一个动作,否则动作将被跳过不执行。假如你想要执行多种动作(或跳过,视结果而定)则需要由在动作两边放置起始及结束区块(三角形符号那种,在C语言中相当于用来指定区域的大括号“{}”)。你也可以用else来执行当条件为假的时候的动作。通常大致如下:

这里的问题是某位置对当前物体实例是否为空。如果为真,物体会执行下面的移动动作。如果为否,会执行else后面的动作块,即跳到一个指定的位置。

所有的问题都有个NOT的复选框。如果选上了,会达到相反的效果。也就是,如果条件为否的时候,执行后面的动作或动作块。

有些问题是相对于某一类物体的。这类问题如果当指定的那类物体其中一个物体实例满足条件就会返回响应的值。

下面来介绍一下各问题的功能吧。

如果位置为空

若当前的实例在指定位置不与物体产生碰撞,则问题的返回值“真”。你可以指出该位置为相对或绝对。你也可以指出碰撞的是只有考虑碰撞固态物体还是全部的物体,此动作通常用于检查物体实例是否可以移到一特殊的位置上而不和其它物体实例重叠或者碰撞。

如果位置存在物体

是先前动作的相反动作。如果在指定的位置存在物体返回“真”。

如果物体在位置上

若在指定的位置上存在一指定的某类物体,则其返回值为真。

如果物体的数量为某一数值

你先指定一物体和一数值。假如当前物体的实例数量等于指定数值时,则返回值为“真”。通常用来检查一个物体在房间上的实例数目是否为0,如果是,就结束当前关卡或者游戏。

随机一定几率为真

你先指定一个数值,例如为n。那么,下一动作或动作块的执行概率则为n分之一。也就是按概率来执行动作。n越大,下一动作执行的概率越小。如果为1.5,则概率为三分之二。如果少于1,就没意义了。

如果提出问题为真

你指定一个问题,一个对话框显示给玩家,上面有是和否的按钮,当玩家解答为是时此动作的结果是“真”。此动作不可以使用于调试模式下。

如果表达式为真

你可以输入一个表达式,如果表达式为真,则将执行下一个动作,后面有更多有关说明。

如果鼠标按下

假如指定的鼠标按键被按下则返回值为真,通常使用在步事件中。例如:你可以检查是有按压下一个鼠标键,如果是,则移到鼠标位置(使用跳到一指定位置动作,输入坐标数值mouse_x 和mouse_y)。

如果实例对齐网格

假如实例的位置是在一网格上,则返回真。你可指定水平的和垂直的网格线距离。在某些特定的动作中,例如当实例被指定在网格上移动时,是非常有用的。

区块的开始

指出动作块的开始位置。相当于C语言中的“{”。

区块的结束

指出动作块的结束位置。相当于C语言中的“}”。

其它

当问题的结果为其他情况时,执行在其它(else)动作后面跟着的动作或动作块。

重复下一个动作

此动作用于重复执行下一个动作或动作块,你只要指定重复次数。

跳出当前事件

当遇到此动作时,原先在此事件的动作不再进一步执行,通常使用于一个问题之后,例如,当一个位置是空的,什么也不需要被执行,所以我们跳出事件。

执行一段代码

当你添加该动作的时候,会弹出一个窗体,你可以在上面写入要执行的代码。里面可以是一些函数的调用或者是零散的代码。这只用于使用些较简单的代码。如果比较复杂的,建议用脚本。关于代码和脚本在后面有介绍。

注释

用这个动作可以添加一些关于动作的注释方便别人阅读。是没有执行效果的。

设置变量的值

游戏里面有很多内建的变量。用这个动作你可以改变这些变量的值。你也可以定义自己需要的变量。当你勾选了“相对”的时候,会相对于当前该变量的值进行改变。要注意,该变量之前必须有值。

如果变量的值为某值

这动作检测如果某一指定的变量为指定的值的时候,则返回真。你也可以设置是大于或等于指定的值。

绘制变量

使用此一动作,你可以在屏幕指定的位置上画出变量的数值,此功能常用于在屏幕上画出当前分数。

分数动作

大多数游戏里,玩家都会有相应的分数。并且一些游戏还给玩家一定数量的生命机会。最后,玩家还可以有健康值。接下来的动作会很容易的实现玩家的分数,生命和健康值。

设定得分值

GameMaker自身有一套分数机制,分数可以显示在窗口的标题栏上。你可以用该动作来改变分数。你可以为分数设置一个确定的值。但一般都是勾选“相对”复选框,在原来的分数上增减。

如果玩家得分为一个数值

这是一个控制动作,当分数等于、大于或少于指定的数值时,如果符合条件,则返回真。通常用来测试玩家是否得到多少分以上给予奖励什么的。

绘制分数

需要指定显示位置以及放在得分数值前的内容。这类关于绘制的动作只能放在绘制事件中。

显示高分榜

对于一些积分类的游戏都会有得分排行榜。这个动作就是显示这个排行榜,如果当前玩家的得分在前10名内,系统会自动要求你输入你的名字并记录。你可以指定榜的背景图象,窗体是否显示边框,以及各种颜色参数等。

清除积分排行榜

这个动作清除积分排行榜的积分清单。

设置生命

设置生命值。跟分数的设置类似。只不过代表的东西不同。当生命小于或等与0的时候,会触发“生命数为0”事件。

如果生命

如果生命值为某个值。

绘制生命数目

绘制生命数目。

用精灵绘制生命数目

这个动作以图形的方式来显示生命。(就是相当于有几次玩的机会,一般游戏中会显示X5这样的字样表示你还有五次机会可以玩,死一次减一次机会)你可以使用小图形来显示(比如一个桃心代表一个人,五次机会就绘制五个桃心),你指定显示图形的位置以及用来显示的图形,这个动作必须放在绘制事件中。

设置生命值

GM有一套自己的生命值系统,当数值为100时为满,为0时代表已经没有分数。你也可以自己指定这个生命值数值。当生命值为0时,会触发“生命值为0”的事件。

如果生命值为一个数值

当生命值为一个你指定的数值时,返回真。执行下面的动作。

绘制健康条

使用这个动作你可以图形方式绘制生命条,当生命值为100时生命条完全填充绘制,为0的时候时就是空的。你可以指定生命条的大小和颜色等。

设置窗口标题信息

一般你可以用游戏的窗体来显示游戏得分等。使用这个动作你可以自己设定窗口的标题内容。

绘制动作

一般在每一步中,每一个物体实例都会将它的精灵图象绘制在房间内。你可以通过绘制动作来改变它的绘制内容。(注意,这些只在物体可见时才可以看到效果。)

游戏设计与制作课程设计题目

游戏设计与制作课程设计 以下4个题目任选一个按要求完成,并于6月5日(即第15周周四)前提交包含所有材料的课程设计袋。 题目1:太阳系模拟 太阳系(Solar System)是以太阳为中心,和所有受到太阳重力约束的天体的集合体,主要包括太阳,八大行星,以及卫星.此课题模拟太阳系各大行星和卫星围绕太阳旋转运动。 基本设计思路和运行效果可参考“《《计算机图形学》课程设计报告”一文相关内容。 要求: 开发环境——VS2008以上 SDK ——DirectX 9.0c 以上 题目2:基于阴影贴图的阴影的实现 阴影贴图是实现实时阴影的一种方法,它可以实现任意曲面上投影的阴影效果,而不仅仅是平面阴影。 通过本次课程设计,要求: 1、了解基于阴影贴图的阴影实现的基本思路和算法; 2、结合参考文献理解实现过程; 3、基于阴影贴图的阴影实现存在的问题和改进的方法。 4、编写相应的实现代码和测试代码。 参考: 1、”Introduction.to.3D.Game.Programming.with.DirectX.9.0c.Shader.Approach”第22.2节“Shadow mapping”。 2、DX SDK自带的“ShadowMap sample”。 题目3:二维游戏“Breakout!(打砖块)”的设计与实现 进入Breakout的初始界面,屏幕上方的彩色矩形方块代表砖块,屏幕下方的较长的矩形方块表示板子。板子的垂直位置不变,但可在屏幕边界之间通过用户的输入左右移动。还有一个小球,从屏幕中间向下运动,球可从板子或左右墙面反弹击中砖块。击中的砖块即消失。小球不断实现反弹击中砖块的过程,直到以下两种情况出现,退出游戏: 1、小球碰到地面(即屏幕的下边界),即玩家没用板子接住球。在这种情况下,假设一关游戏给三次击球的机会,如果总共有三次没有用板子接住球,玩家失败,退出游戏。 2、所有的砖块都被击中,玩家赢,退出游戏。

JAVA课程设计打砖块(含代码)

Java程序课程设计任务书 一、主要容 打砖块游戏是一种动作电子游戏的名称。玩家操作一根萤幕上水平的“棒子”,让一颗不断弹来弹去的“球”在撞击作为过关目标消去的“砖块”的途中不会落到萤幕底下。球碰到砖块、棒子与底下以外的三边会反弹,落到底下会失去一颗球,把砖块全部消去就可以破关。 二、具体要求 通过图形用户界面(Graphics User Interface,GUI)和线程,使用户和程序之间可以方便地进行交互。运用Swing组件,编写小应用程序游戏,加深对Java语言的理解,深入地了解图形用户界面的设计,更加熟练地运用编程软件。 功能要求: (1)游戏运行需键盘的操作; (2)游戏可统计分数; (3)球落到底下会失去一颗,按ENTER可重新开始。 开发工具:JCreater软件; 开发技术:J2ME。 三、进度安排 12月28日:课程设计选题,查找参考资料 12月29日:完成打砖块游戏程序设计分析 12月30日~ 1月3日:完成程序代码的编写 1月4日~ 1月5日:游戏测试与完善 1月6日~ 1月7日:完成课程设计报告,准备答辩 四、主要参考文献 [1] (美)埃克尔著昊鹏,饶若楠等译. Java编程思想[J]. 机械工业,2005 [2](美)Gary J.Bronson著珑雅文译. Java编程原理[J]. 清华大学,2004 [3](美)Michael Morrison著徐刚,于健,薛雷译. 游戏编程入门[J]. 人民邮电,2005.9 [4](美)Wendy Stahler著冯宝坤,曹英译. 游戏编程中的数理应用[J]. 红旗,2005

[5](美)克罗夫特(David Wallace Croft)著彭晖译. Java游戏高级编程[J]. 清华大学,2005 [6](美)David Brackeen著邱仲潘译. Java游戏编程[J]. 科学,2004 [7] 聂庆亮编著. Java应用开发指南[J]. 清华大学,2010 [8] 耿祥义,跃平编著. Java面向对象程序设计[J]. 清华大学,2010 [9] 绍方编著. Java编程实用技术与案例[J]. 清华大学,2000.11 [10] 明日科技编著. Java编程全能词典[J]. 电子工业,2010 摘要 随着Java语言的不断发展和壮大,现在的Java已经广泛的应用于各个领域,

软件开发设计报告5_12

《软件开发实践》 设计报告 项目名称:打砖块小游戏 姓名学号工作量 何建清2012141463199 80% 廖宇2012141463001 20% 2014 年 5 月 4 日

目录 1.引言........................................................................................................... 错误!未定义书签。 1.1 开发目的......................................................................................... 错误!未定义书签。 1.2 开发背景......................................................................................... 错误!未定义书签。 1.3 参考资料......................................................................................... 错误!未定义书签。2.软件分析设计.. (1) 2.1 游戏描述 (1) 2.1.1 对需求的支持 (1) 2.1.2 游戏目标 (1) 2.2 总体设计 (1) 2.2.1 游戏运行环境 (1) 2.2.2 游戏描述 (1) 2.2.3 游戏框架 (1) 2.3 模块设计 (2) 2.3.1 功能 (2) 2.3.2 算法 (2) 2.4 界面设计 (3) 2.5 代码设计 (3) 2.6 游戏素材展示 (4) 2.7 开发环境 (5) 3. 项目管理和保障 (5) 3.1 项目计划 (5) 3. 2 游戏使用说明 (5)

打砖块JAVA游戏代码

#include #include #include #include #include void draw(int x1) { int m=0,n=0,x=40,y=20; int t=0,i,j,k=1; int a=0,b=127,c=88; for(i=0;i<8;i++) { n=i*20; y=n+20; for(j=0;j<16-t;j++) { m=(j+i)*40; x=m+40; POINT points[]={{m,n}, {x,n}, {x,y}, {m,y}}; setfillcolor(RGB(a,b,c)); fillpolygon(points, 4); a=8*k+8;

b=j*3+k+200; c=20*k; k=k+8; } t=t+2; k=1; } m=300; n=160; x=340; y=180; POINT points[]={{m,n}, {x,n}, {x,y}, {m,y}}; setfillcolor(RGB(a,b,c)); fillpolygon(points, 4); } void end() { settextstyle(50, 0, "宋体", 0, 0, FW_BOLD, false, false, false); settextcolor(RED); outtextxy(200,200,"游戏结束!"); getch();

closegraph(); } void start() { int n=0; loadimage(NULL,"IMSGE","background"); while(1) { setbkmode(TRANSPARENT); settextstyle(50, 0, "楷体", 0, 0, FW_BOLD, false, false, false); if(n%2==0) settextcolor(GREEN); else settextcolor(RED); outtextxy(80,100,"请按空格键开始游戏"); Sleep(250); if(_kbhit()) break; n++; } }

JAVA课程设计打砖块

Java程序课程设计任务书 一、主要内容 打砖块游戏是一种动作电子游戏的名称。玩家操作一根萤幕上水平的“棒子”,让一颗不断弹来弹去的“球”在撞击作为过关目标消去的“砖块”的途中不会落到萤幕底下。球碰到砖块、棒子与底下以外的三边会反弹,落到底下会失去一颗球,把砖块全部消去就可以破关。 二、具体要求 通过图形用户界面(Graphics User Interface,GUI)和线程,使用户和程序之间可以方便地进行交互。运用Swing组件,编写小应用程序游戏,加深对Java 语言的理解,深入地了解图形用户界面的设计,更加熟练地运用编程软件。 功能要求: (1)游戏运行需键盘的操作; (2)游戏可统计分数; (3)球落到底下会失去一颗,按ENTER可重新开始。 开发工具:JCreater软件; 开发技术: J2ME。 三、进度安排 12月28日:课程设计选题,查找参考资料 12月29日:完成打砖块游戏程序设计分析 12月30日 ~ 1月3日:完成程序代码的编写 1月4日 ~ 1月5日:游戏测试与完善 1月6日 ~ 1月7日:完成课程设计报告,准备答辩 四、主要参考文献 [1] (美)埃克尔著陈昊鹏,饶若楠等译. Java编程思想[J]. 机械工业出版社,2005 [2](美)Gary 著张珑刘雅文译. Java编程原理[J]. 清华大学出版社,2004 [3](美)Michael Morrison著徐刚,于健,薛雷译. 游戏编程入门[J]. 人民邮电出版社, [4](美)Wendy Stahler著冯宝坤,曹英译. 游戏编程中的数理应用[J]. 红旗出版社,2005 [5](美)克罗夫特(David Wallace Croft)著彭晖译. Java游戏高级编程[J].

小游戏 打砖块

小游戏打砖块 制作人: 步宇星20062366 信息学院06计算机系 开发平台: Visual C++6.0 软件介绍: 模拟红白机小游戏,打砖块。 如果你是80年代出生或者孩子是80年代出生的话,或者你是一个心理年龄 比较中,家里一定会有任天堂出品的红白机,或者小霸王。那些怀旧的经典游 戏中有一款叫做打砖块的小游戏。 本作品就是我在PC上仿真它做出来的。 游戏开始时的截图。 这是一个用DirectDraw做图形处理的全屏幕游戏。操作在屏幕下方。 玩过的人都知道游戏规则,很简单,控制球棒接住球并把所有的方块打掉,就 可以进入下一关。屏幕上方又显示level,level越高球速越快,另外每关背景 和音乐也不一样。

这是第二关背景改变了 下面的卡就不在给图了 主要程序框架: 本游戏是在win32平台下用开发的,所以跟每个win32程序一样 都是以WinMain为程序入口,用WindowProc来处理消息(WM_CREATE、 WM_ACTIVATE、WM_PAINT、WM_DESTROY)。 1、主消息循环 // 游戏初始化 Game_Init(); // 进入事件循环 while(true) { if (PeekMessage(&msg,NULL,0,0,PM_REMOVE)) { // 如果是WM_QUIT退出事件循环 if (msg.message == WM_QUIT) break; // 翻译消息

TranslateMessage(&msg); // 把消息送给回调函数 DispatchMessage(&msg); } // end if // 进入游戏主程序在这里进行每一帧的绘制 if(!Game_Main()) return (0); } // end while // 做游戏结束工作 Game_Shutdown(); 为了保证响应windows,Game_Main()采用状态机的方式工作,每次操作完返回给windows下次再进入Game_Main()时根据所在状态工作, // 游戏状态 #define GAME_STATE_INIT 0 #define GAME_STATE_START_LEVEL 1 #define GAME_STATE_RUN 2 #define GAME_STATE_PAUSE 3 #define GAME_STATE_OVER 4 #define GAME_STATE_SHUTDOWN 5 #define GAME_STATE_EXIT 6 游戏先进入 GAME_STATE_INIT 状态做好初始化工作 进入 GAME_STATE_START_LEVEL 状态重置每关的初始数据 进入 GAME_STATE_RUN 循环在这里执行游戏逻辑、输入检测,并绘制每一帧并返 回windows 重复第三步 第三步中按下Enter键进入GAME_STATE_PAUSE 状态游戏将暂停,直到按下space键回到第三步 第三步中将生命用完(life值小于0)进入GAME_STATE_OVER状态,直到按下R键回到第二步 上述步骤中如按下Esc键则进入GAME_STATE_SHUTDOWN状态此时做结束工作并发送WM_DESTROY消息 进入GAME_STATE_EXIT状态此时Game_Main()不做任何操作就返回 2、图像处理部分 考虑到游戏对速度的要求,图像处理主要利用比GDI快得多的DirectDraw完成(文字显示用了GDI)。所有Direct的相关代码都在被我封装在ddrawlib.cpp中,其中的全局变量和函数原型以及宏和定义都在ddrawlib.h申明。我这么做的目的是让自己习惯于利用引擎的API来编程。实际上ddrawlib就是一个基于Direct的简单2D游戏引擎。 关于该引擎的函数库说明,源代码中有详细的注释,这里不多讲了。

C#课程设计(打砖块)

辽宁工业大学 C#.NET程序设计课程设计(报告)题目:打砖块游戏 院(系):软件学院 专业班级:计算机信息管理101班 学号: 101403009 学生姓名:姜洪亮 指导教师:胡峰 教师职称:助教 起止时间:2011.11.21至2011.12.02

程序设计专题(报告)任务及评语

目录 第1章程序设计专题目的与要求 (1) 1.1 程序设计目的 (1) 1.2 程序设计的实验环境 (1) 1.3 程序设计的预备知识 (1) 1.4 程序设计要求 (1) 第2章程序设计内容 (2) 2.1概要设计 (2) 2.2程序整体设计说明 (2) 2.3程序部分源代码及注释 (8) 2.4测试结果 (12) 第3章程序设计总结 (13) 参考文献 (14)

第1章程序设计目的与要求 1.1 程序设计目的 《C#.Net程序设计》是计算机科学与技术专业的必修专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。本课程的程序设计专题实际是软件技术专业学生学习完《C#.Net程序设计》课程后,进行的一次全面的综合训练,C#.Net 程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。 1.2 程序设计的实验环境 硬件要求能运行Windows xp操作系统的微机系统。C#.Net程序设计语言及相应的集成开发环境visual https://www.doczj.com/doc/295757778.html,。 1.3 程序设计的预备知识 熟悉c#语言及visual https://www.doczj.com/doc/295757778.html,集成开发环境。 1.4 程序设计要求 按程序设计指导书提供的课题,要求学生在自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个项目解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,能够进行简单分析和判断;能编写出具有良好风格的程序;掌握c#.net2003的基本技能和面向对象的概念和方法;了解windows编程。同时培养学生进行分析问题、解决问题的能力;培养学生进行设计分析、设计方法、设计操作与测试、设计过程的观察、理解和归纳能力的提高。

基于Java的打砖块游戏毕业论文

北方民族大学学士学位论文论文题目基于JA V A的打砖块游戏开发 系(部)名称: 计算机科学与工程学院 学生姓名: 专业: 软件工程 学号: 指导教师姓名: 论文提交时间: 2014-5-7 论文答辩时间: 2014-5-17 学位授予时间: 北方民族大学教务处制

基于JAVA的打砖块游戏开发 摘要 打砖块是一款堪称经典的小游戏,在掌上游戏机上和许多手机上都能发现这个小游戏。游戏基本内容是玩家通过控制一个能够左右移动的挡板,反弹正在运动中弹球,使之改变移动的方向,用小球消除游戏窗口里面的的砖块,然后到达下一关,在障碍物被消除的过程中,可能会产生一些能改变挡板或者小球状态的物品,例如:挡板变长、变短,小球威力加强等等。 本系统是一个基于Java语言平台的打砖块游戏。主要任务是设计打砖块游戏的算法,并使用JA V A语言编写程序,最终完成游戏编程,并使之能够正确运行。主要是小球的碰撞检测和运动轨迹的算法,碰撞部分可以将小球看成一个矩形,当矩形的边界坐标与砖块、挡板、墙壁等一样时,可以判断为进行了碰撞,而运动轨迹只要在碰撞后将X轴或Y轴取反就可以了。 本文第一章阐述了选题目的及Java游戏目前的发展现状。第二章介绍了Java 语音的特点和基于Java游戏开发的相关的技术。第三章详细介绍了打砖块游戏,包括游戏的规则和期待的效果等。第四章进行打砖块游戏的具体设计与实现,包括界面的设计,类的设计,算法的设计等等。第五章对游戏进行运行和测试,以期检测游戏中的各种问题。期望通过本游戏实例掌握小型Java游戏开发和Java 编程的基础的知识和技巧,使自己具备开发Java游戏基本能力。 关键字:java,游戏设计,测试,打砖块,算法

C++课程设计:打砖块游戏

课程设计报告 课程名称:面向对象程序设计C++ 设计题目:打砖块游戏 专业:计算机科学与技术 姓名: 学号: 指导教师:李晓虹 2015 年 12 月 30 日

一、需求分析 本系统为一个用C#实现的为我们所熟悉的简单的打砖块游戏,该系统的具体功能如下: 能简便的开始游戏,游戏中的功能与日常我们所熟悉的游戏的功能一致 ,直到砖块全部打光过关和在砖块打光之前机会用完游戏结束功能; 当游戏结束时会自动弹出消息框提示本关所获得得分数; 当过关时会出现提示图片,点击进入下一关,下一关的方块位置和所组成的形状。 二、系统运行环境 (1)硬件环境:计算机 (2)软件环境:本系统的设计采用Visual C++6.0编写。在Windows7环境下测试通过 (3)本游戏软件在Windows平台下都可以运行 三、总体设计 3.1 开发与设计的总体思想 3.1.1 设计思路 随着社会生活节奏的加快,越来越多的人,选择在自己的闲暇时间用玩游戏的方式去缓解自己的生活工作上的压力,所以,此款游戏的最终目标就是给游戏玩家带来一种精神上的放松以及娱乐消遣带来的快乐。所以经过反复仔细的思考,我决定在用一种简单、大方的颜色作为游戏的背景颜色,并且里面插播一首轻音乐来使游戏者感到轻松、愉悦。 3.2功能介绍 1) 游戏设计游戏开始时,小球会停在挡板正中间,而且此时小球可以随着挡板左右自由移动,当按下空格键小球弹出,并在程序设定的区域中不停碰撞反弹。 2) 当小球碰撞到墙壁、挡板、和砖块的时候,均以相同的速度反弹,并且砖块被碰撞后会以相同的速度反弹,并且当砖块被碰撞后会消失。 3) 挡板可以左右移动以接住小球,若超过三次没有接住,则游戏结束,按退出键退出,当所有砖块全部打光时则出现进入下一关的提示框,点击进入下一关。

unity3d打砖块游戏代码

BrickBreaker Game Step 1: Create New Project “BrickBreaker” File -> New Project (check Standard Assets(Mobile).unityPackage) Then save the scene following below instruction. Change name of scene to “MainScene”. File -> Save Scene

Step 2: Set Main Camera The position, rotation and scale of Main Camera are showed following figure. Change background color whatever you want. Change projection perspective -> orthographic Size = 20 Clipping Planes : Near = 0.3 Far = 25

Step 3: Create Directional Light GameObject-> Create Other -> Directional Light Step 4: Create Walls Create new cube following this instruction: GameObject -> Create Other -> Cube Change Cube Name to “ WallLeft”. “WallLeft” position, rotation and scale are following below figure Change “Main Color”.

最新打砖块游戏软件工程项目可研报告

打砖块软件可行性研究报告 1.规模和目标 本次软件开发项目为打砖块,初步确定做一个小中型规模单机版的游戏,同时也可以在游戏平台里面运行,确保能够在局域网或者互联网上与朋友对战,寻求一种游戏上的刺激,可以让人们在业余时间尽情的消遣自己,使全身心得到最大的放松。这是我们做这个游戏实现最基本的目标。现在从系统的逻辑模型出发,从3个方面研究打砖块游戏的可行性。 一.技术可行性(使用现在的技术能实现这个系统吗)在技术方面,截至目前,我们学习过C语言,VC++,汇编语言,接触过VB和java,结合游戏的本身特点和我们对C语言的掌握程度,特别是对于VC++,它功能强大,对于游戏里面的界面设计,动作类的算法以及常用函数构造和系统函数的调用等都可以用它来实现,相信能较好较快的编写出这个小中型的游戏系统。 二.经济可行性(这个系统的经济效益能超过它的开发成本吗)

在经济方面,初步从成本来看,我们做这个游戏,主要是耗费人力,至于财力方面,不需要投入什么,只要游戏能够在通用游戏平台里运行就几乎很成功了;从系统的经济效益来看,我们相当看好,估计它一定可以超过游戏本身所开发的成本。理由有两个方面:其一随着社会的越来越进步,人员的越来越紧张的竞争,工作压力的重要之下,必然有大部分人喜欢在工作闲暇之余让自己充分的放松,这个时候游戏就是最好的兴奋剂,可以带动整个人,让整个人兴奋起来,不至于那么疲劳和无聊。其二打砖块这个游戏通俗易懂,简单方便,老少皆宜,相信随着它的流行会有更多的人喜欢这款小游戏的。 三.操作可行性 (系统的操作方式在这个用户组织内行得通吗) 在操作方面,我们采用简单的操作方式和必要的帮助说明,让用户一看就知道如何操作,主要有左右方向键,前后移动键,发射打砖块键,击中目标砖块才可以得分,并且分数累计到了一定阶段,自动进入第二阶段,依次类推……..直到打到最后一关,而且每过一关砖块在空中飘过的速度就增加一次,我们主要用数据结构中的相关算法来实现;砖块的左右循环飘动,可以用循环递归语句实现;

《打砖块》游戏设计报告

——《打砖块》 学院: 班级: 学号: 姓名:

一.游戏设计规则 游戏开始时,小球会停在挡板正中间,且此时挡板可左右自由移动,当按下空格键后小球会弹出,并在程序设定的区域内不停的碰撞反弹。当小球碰到墙壁、挡板和砖块时,均会以相反的速度反弹,并且砖块被碰撞后会自动消失。挡板可左右移动以接住小球,若小球没有被接住,超出指定区域下边缘,则程序会自动提示“游戏结束”,点击“确定”后退出程序。当所有的砖块均消失时,程序会弹出提示“恭喜你,你赢了”。 二.游戏设计思路 整个游戏可以分为三个类:小球类、挡板类和砖块类。 其中最简单的当然是挡板了,在回调函数中增加“WM_KEYDOWN”的按键消息,在里面编写控制挡板移动的代码,挡板的移动是通过“上、下、左、右”四个键来实现的。 砖块在整个程序中负责两件事情,其一是程序初始化时随着小球和挡板出现在游戏界面中,再就是被小球碰到后消失。控制砖块出现与否是通过一个bool变量“blockExist”来实现的,当该变量为“true”时,就将砖块贴到目标DC上,否则就不贴。由于砖块数量很多,故可以用一个for循环来实现,所有的砖块用的都是一张图片,而变化的只是砖块的坐标。 本游戏中最复杂的要数小球了,因为小球要涉及到很多碰撞检测和反弹,而且这其中还和砖块、挡板有联系。小球涉及到的碰撞有:小球与墙壁碰撞、小球与挡板碰撞、小球与砖块碰撞。

碰撞检测实际上是检测小球的坐标是否进入了某个特定的区域,若进入了,则小球要反弹;否则,按原来的路线继续前进。小球能不断的反弹,事实上靠的是小球速度方向的改变,对于小球而言,它能出现在某个点上,是它所在坐标系中的坐标导致的。若设小球的坐标为(x_ball,y_ball),其速度为水平:vx,竖直:vy,将其坐标与速度之间建立赋值关系,即:x_ball+=vx,y_ball-=vy。 只要对其坐标进行相对应的计算,就能控制小球的反弹了。三.游戏主要代码 int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // TODO: Place code here. MSG msg; HACCEL hAccelTable; // Initialize global strings LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadString(hInstance, IDC_APIDEMOGAME, szWindowClass, MAX_LOADSTRING); MyRegisterClass(hInstance); // Perform application initialization: if (!InitInstance (hInstance, nCmdShow)) { return FALSE; } hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_APIDEMOGAME); // Main message loop: while (GetMessage(&msg, NULL, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))

打砖块开题报告

硬件课程设计实验报告 课题:基于BASYS2的打砖块游戏设计班级:测控1201 作者:王志鹏 学号:U201214414 组员:张亚枫 学号:U201214416 组员:郭圣桐 学号:U201214404 指导老师:吴建新 课设成绩:

1.1 项目要求 本项目要求设计并实现一个基于BASYS2的打砖块游戏,利用BASYS2实验板的键位实现挡板左右移动,外接VGA显示器实现游戏的界面。 1.2 项目背景 本项目作为《硬件课程设计》课程的训练项目提出,在基本的设计实现基础上,将不断对已有的设计进行进一步的修改和完善,最终完成整个硬件和软件开发过程。 FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合和布局,快速地烧录至FPGA 上进行测试,是现代IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。 了解利用FPGA实现电子琴的基本原理,综合运用所学知识实现一个具有多个模块的模数混合系统,为后续课程学习和工作打下基础。而且实现电子琴也十分有趣,能够加深电子系统在音乐艺术领域的应用。 1.3 开发工具简介 Basys2:该开发板是围绕着一个Xilinx Spartan-3E FPGA芯片和一个Atmel AT90USB USB控制器搭建的,它提供了完整、随时可以使用的硬件平台,并且它适合于从基本逻辑器件到复杂控制器件的各种主机电路。Basys2板上集成了大量的I/O设备和FPGA所需的支持电路,让您能够构建无数的设计而不需要其他器件。 ISE 13.1_1:ISE是使用XILINX的FPGA的必备的设计工具,它可以完成FPGA 开发的全部流程,包括设计输入、仿真、综合、布局布线、生成BIT文件、配置以及在线调试等,功能非常强大。ISE除了我们功能完整,使用方便外,它的设计性能也非常好,拿ISE 9.x来说,其设计性能比其他解决方案平均快30%,它集成的时序收敛流程整合了增强性物理综合优化,提供最佳的时钟布局、更好的封装和时序收敛映射,从而获得更高的设计性能。先进的综合和实现算法将动态功耗降低了10%。 Digilent Adept_v2-3-0:为XILINX公司的Digilent开发板下载程序用的软件,能够将ISE生成的.bit文件烧写至FPGA中。

J2ME手机游戏设计之“打砖块”

J2ME手机游戏设计之“打砖块” 一、游戏分析: 随着现代社会发展的日新月异,人们平常工作学习的竞争也在加大,生活的压力也跟着加重。所以利用闲暇之余,大家都需要休闲娱乐工具,来放松自己,缓解压力,消除紧张的疲劳状态。在这样的背景下,打砖块游戏作为一向休闲手机游戏应运而生,它不仅能舒缓我们的身心,而且能够开发我们的动手能力,提高自己的反应敏捷程度,充实自己。 二、游戏规则设计: BeatBrick:打砖块游戏的游戏规则为,每局有三个球,也就是有三条生命。首先发球,球在击打砖块后弹回。此时,须用球拍接住弹回的球并令其继续击打砖块。否则,球会掉出屏幕。直至球全部使用完或通全关则游戏结束。 游戏开始时,小球会停在挡板正中间,且此时挡板可左右自由移动,当按下空格键后小球会弹出,并在程序设定的区域内不停的碰撞反弹。当小球碰到墙壁、挡板和砖块时,均会以相反的速度反弹,并且砖块被碰撞后会自动消失。挡板可左右移动以接住小球,若小球没有被接住,超出指定区域下边缘,则程序会提示游戏结束,点击“确定”后退出程序。当所有的砖块均消失时,程序会提示你赢了。 三、游戏实现: 1、J2ME,即Java 2 Micro Edition,是SUN公司推出的在移动设备上运行的微型版Java平台,常见的移动设备有手机,PDA,电子词典,以及各式各样的信息终端如机顶盒等等。最重要的移动终端当然是手机了,因此,我们主要讨论手机相关的J2ME规范。 J2ME是Sun公司为嵌入式开发所定义的一个框架,一系列标准的规范所组成。所以J2ME是一个协议簇,而不是单一的规范。 2、游戏由6个类构成: GameScreen:GameScreen类表示游戏的核心,它包括对象的移动、图像的绘制以读取和响应用户的输人。本游戏从MIDP LCDUI的低级Canvas类派生一个类来代表游戏的屏幕,后面将对这个类进行详细的说明。 BeatBrick:由MIDIet继承而来的应用程序类来代表这个应用程序。这个类的作用就像其他的MIDIet一样,是和应用程序管理器(AMS)的接口。AMS会调用MIDIet的startApp 、pauseApp和destroyApp方法,告诉什么时候游戏开始、暂停和将要结束。 TextForm:这个类在屏幕上显示一段文字,然后再返回到菜单中。对于Help 和About对话框的实现这是一个很有用的方法。本游戏就是采用这个方法,由于这种显示是完全独立的,因此需要继承Form类来实现Form对象。 GameOver:告诉玩家游戏结束,制作方法和Splash类类似。 Splash:这个类的作用仅仅在于向玩家强调他们选择了该游戏,同时为游戏做一些宣传。闪屏是玩家运行游戏时第一个看到的图案,因此应该将它设计得非常绚丽。如果是针对Nokia手机开发游戏,还可以将闪屏制作成全屏的,那样效果会更好。有兴趣的读者可以将自己的闪屏设计得更好看或是动态的闪屏。 MainMenu:每一个游戏都应该有菜单系统,即使只包含“开始一个新游戏”和“退出游戏”的选项。本游戏包括了开始一个新游戏、如何运行游戏的帮助、游戏的信息和退出游戏的选项。产生菜单最简单的办法就是从LCDUI的List类

打砖块游戏

Flash动画制作课程教案

打砖块游戏的设计与实现片段讲稿 打砖块游戏的设计与实现: 一、游戏运行效果演示 向同学们演示效果,介绍游戏的基本功能。 二、游戏规则 打砖块游戏的基本规则。 三、解决方法 1.解决方法-设计界面 1)准备相应的素材,包含以下元件:砖块、小球、挡板、横向墙壁和纵向墙壁。 2)把元件从库里面拖出实例、并放到合适的位置,并给元件实例设置实例名。界面图如下: 元件实例名列表如下: 用于显示分数的动态文本绑定变量“fenshu”。 2.解决方法-需要解决的问题 1)如何实现多个砖块的显示? 1.在舞台上创建元件的一个实例。(操作) 2.复制出元件的多个实例。(复制影片剪辑方法:duplicateMovieClip())

3.给新复制出的多个元件实例相应的属性赋值。 实现程序思路:(假设舞台上共放20个砖块,分4行排列)如图所示。 第一块砖zhuan0与zhuan的x属性的关系:相等。zhuan0._x=zhuan._x 第二块砖zhuan1与zhuan的x属性的关系:zhuan1的x属性的值等于zhuan的x属性的值加上zhuan的宽度。zhuan1._x=zhuan._x+zhuan._width。 第六块砖zhuan5与zhuan的x属性的关系:相等。zhuan5._x=zhuan._x+zhuan._width*0 推出结论:_root["zhuan"+i]._x=zhuan._x+(i%5)*zhuan._width; 采用同样的方法分析y属性推出结论: _root["zhuan"+i]._y=zhuan._y+(Math.floor (i/5))*zhuan._height; for(i=0;i<=19;i++) { //复制元件 duplicateMovieClip("zhuan","zhuan"+i,i); //设置复制后元件的新属性 _root["zhuan"+i]._x=zhuan._x+(i%5)*zhuan._width; _root["zhuan"+i]._y=zhuan._y+(Math.floor (i/5))*zhuan._height; _root["zhuan"+i]._width=zhuan._width; _root["zhuan"+i]._height=zhuan._height; } 2)如何实现挡板跟随鼠标的移动? 挡板元件当前的x坐标=鼠标光标的x坐标 banzi._x=_root._xmouse ; 和enterFrame事件结合实现。 root.onEnterFrame =function() { banzi._x=_root._xmouse ; } 3)如何实现小球的自动运动?

打砖块-教学设计

《打砖块》教学设计 一、教学内容 出自广东教育出版社的小学信息技术课本第三册(下)B版。 二、教材分析 本课是本书的第10课,这节课主要是在于通过编写小游戏来激发学生学习的乐趣,通过Scratch软件制作的小游戏,来提高对Scratch的编程水平。通过制作“打砖块”的小游戏,引导学生在制作的过程中,进一步了解Scratch编程的主要步骤:明确效果需求、选用哪些模块搭建脚本程序、具体如何搭建,为后面更精彩的课程打下基础。 三、学生分析 通过认识Scratch、魔术表演、演奏音乐、漂亮的风车、幸运大转盘、猫抓老鼠等这几课的学习,让学生充分领略到了Scratch编程软件的乐趣。本课教学对象是小学六年级学生。此年龄段学生喜欢玩各类电子游戏,对游戏规则和游戏中途控制等相关内容感兴趣;虽然已对Scratch程序设计中程序脚本的制作方法有了初步了解,但对Scratch软件中众多的控件功能、作用还不了解,需要进一步的学习。因此,这节课主要在于通过自己动手编写游戏的过程激发学生们对Scratch进一步的探索,留出足够的时间让学生动手操作,让学生感受Scratch软件的神奇,体验成功的乐趣。 四、教学目标 1.知识与技能 (1)掌握侦测鼠标位置方法。 (2)学会角色方向设置。 (3)学会设置停止和奖励机制。 2.过程与方法 通过制作“打砖块”的游戏,了解Scratch软件创作游戏的步骤与过程,为以后的学习创作出更多有趣的动画与游戏。

3.情感态度与价值观 通过小游戏的制作,让学生体验到成功的喜悦,进一步增进学习Scratch 的兴趣。 五、教学重难点 教学重点:掌握侦测鼠标位置方法,学会方向设置。 教学难点:了解小球在舞台中运行时移动方向及在碰到物体后的反弹的方向。 六、教学准备 多媒体课件、Scratch、《打砖块》游戏以及相关素材 七、教学过程

打砖块游戏设计报告

************* 面向对象方法及程序设计 课程设计报告 打砖块游戏的设计与开发 分组:第九组 组员姓名:******************** 班级: *********** 指导教师: **** 完成日期:2014年 06月21日

题目:打砖块游戏的开发与设计 为了加强计算机科学与技术专业学生的学科实践能力,巩固和强化所学专业知识,提高学生的学习兴趣,本课程设计实践周特别强调理论与实践相结合,利用所学专业知识,进行实践项目的开发,提高学生的实践编程能力和技术文档的写作能力,提高学生的学习兴趣,,为后期的学习奠定一定的实践基础。 目录 第一章课程设计的目的与要求 (3) 1.1课程设计目的 (3) 1.2 课程设计的实验环境 (3) 1.3 课程设计的预备知识 (3) 1.4课程设计要求 (3) 1.4.1人员分配,形成课程设计小组 (3) 1.4.2 分析课程设计的题目要求 (3) 1.4.3写出详细的设计说明 (3) 第二章课程设计内容 (3) 2.1设计思路 (3) 2.2功能介绍 (4) 2.3相关素材 (4) 2.4程序整体设计说明 (4) 2.5程序部分源代码及注释 (4) 2.6程序结构流程图 (6) 2.7程序代码 (6) 2.8运行程序 (17) 第三章课程设计总结 (17)

第一章课程设计的目的与要求 1.1课程设计目的 本次课程设计是计算机科学与技术专业最重要的实践环节之一。 本次课程设计的目的和任务: 1.巩固和加深学生对VC++语言的基本知识的理解和掌握; 2.掌握VC++语言编程和程序调试的基本技能; 3.利用VC++语言进行基本的软件设计; 4.掌握书写程序设计说明文档的能力; 5.提高运用VC++解决实际问题的能力; 1.2 课程设计的实验环境 硬件环境要求能运行Windows 2000/XP操作系统的微机系统,VC++程序设计及相应的开发环境。 1.3 课程设计的预备知识 熟悉C语言及C语言的开发工具 1.4课程设计要求 1.4.1人员分配,形成课程设计小组 按照指导教师的要求,参与课程设计的同学根据彼此学习间的默契度以及在游戏设计上想法的不谋而合,自由的选择自己的队友,形成课题设计小组。 指导教师要求每组成员人数必须控制在3~5人之间,使得在课程设计的过程中,尽量的保证每个人都能够参与其中,积极的动脑思考。我们是第九组课程设计小组。 1.4.2 分析课程设计的题目要求 为了使得课程设计能够更加的独特,并且能够在最大限度上呈现出一个完美的课程设计,体现出同学们的创新的好的想法,指导教师给我们准备了不同的设计课题。 我们组选择的课题是“打砖块”的游戏设计与开发。 1.4.3写出详细的设计说明 针对我们的这个课程设计,我们小组的成员,查阅了大量的相关的专业书籍,并在游戏的一些细节问题上,充分参考了指导老师的意见和建议。 第二章课程设计内容 2.1设计思路 首先,本次课程设计的主要目的就是为了增强同学们的专业课知识,是对专业书上的知识的进一步巩固和实践!为了更好的去完成本次的课程设计,我们针对手机游戏被广大消费

对抗游戏课程设计

对抗游戏课程设计 信抗班袁爽 913104480110 一、程序功能简介 一个对抗游戏,根据随机产生的数字决定双方的输赢,并且按分数进行游戏。 二、课程设计要求 (1)当双方进行游戏时,游戏者可根据自身的牌点决定是否继续下注,例如拿到A把握增大,则在计算机的牌点出来之前加大赌注,但不超过5点。 (2)将双方牌点的比较扩大为两张牌点之和,若出现一组对子,则对子牌点大于任何单牌,若双方均为对子,则比较牌点之和。 三、程序算法说明 注明:因为是自己手写的程序,自己友元函数用的不是很熟练,没有像书上一样把比较函数封装到类里面,是在主函数中直接进行了比较过程,而且自己更改了书中显示牌的方法,自己写了一个显示牌的函数(op)封装到了类里,以后显示函数的过程就没有那么长了。还有一点是关于加注这个动作,不清楚加注确切是加到哪里,程序中我将其加入了score里面。详细程序标注: #include #include #include #define MAX 13 //牌的最大点为13 class War //生成一个类 { int plyr, comp,PLYR,COMP;//plyr玩者的第一轮牌点, comp计算机的第一轮牌点,PLYR玩家的第二轮牌点,COMP计算机第二轮牌点 static int Score;//玩者的分数,当分数为小于等于0或大于等于52时游戏结束 static int Loop;//出牌次数,游戏结束时给出总的出牌次数 int stake;//加注的量,大于等于1小于等于5 public: int Player1();//返回玩者第一轮的牌点 int Player2();//返回玩家第二轮的牌点 int Computer1();//返回计算机第一轮的牌点 int Computer2();//返回计算机第二轮的牌点 void Initialize1();//给出玩者和计算机的第一轮牌点 void Initialize2();//给出玩者和计算机的第二轮牌点 int CheckScore();//返回玩者分数 void GameOver();//游戏结束,显示玩的轮数 War();//缺省构造函数,初始化对象 static int Increase(int s);//分数增加 static int Decrease(int s);//分数减少 static int Loops();//出牌次数增加 int Gamers();//加大赌注 void op(int x);//显示随机生成数字对应的牌点,简化主程序 int Returnloops(); };

相关主题
相关文档 最新文档