当前位置:文档之家› GameMaker 教学

GameMaker 教学

GameMaker 教学
GameMaker 教学

Game Maker 教学

创建迷宫游戏

作者:Mark Overmars

版权所有2007 YoYo Games Ltd

迷宫游戏是非常流行的游戏类型,用GM可以非常简单的创建该类游戏。该教程将一步步的介绍如何创建该类游戏。首先,我们将创建一个最简单的可运行的游戏,然后,将使我们的游戏更具扩展性更具吸引力。在教程的Example文件夹中提供了游戏中的源程序,制作游戏中用到资源也都在Resources文件夹中给予了提供。

游戏策划

在游戏制作之前,我们应该想像一下,我们的游戏应该是什么样子的。这是游戏设计中最重要,有时也是最困难的一步。一个好的游戏应该是令人兴奋的、令人惊叹的以及令人上瘾的。游戏应该为玩家设定清晰的目标,而用户界面也应该是很直观的。

我们将要制作一个迷宫游戏,每一个房间包含一个迷宫。为了从迷宫中逃脱,玩家必须收集齐所有的钻石,然后到达出口。为了完成这一目标,玩家需要解决一系列的智力问题,并且要避开怪物。在这个游戏中,我们可以创建很多种类型的智力问题,例如:必须被放进石头的坑、能用炸弹破坏的墙壁等等。另外,很重要的一点是:千万不要在第一个房间中就把游戏的所有要素全部展现出来。一步步的显示新的东西和怪物,将会使游戏更加有趣。

所以,游戏的主要目标是玩家所控制的角色。游戏中有墙(也可以是不同的类型的东西,这样可以使游戏看起来更吸引人)、需要收集的钻石、还有那些躺在地上不动,被玩家捡起或者被碰触的东西。另外房间中还需要有一些特殊的东西,此外还要有那些自己走来走去的怪物。下面就让我们一个一个来处理这些东西吧。

一个简单的开端

首先,我们先不考虑游戏中的钻石。我们将创建这样一个玩家到达出口的游戏。在这个游戏中有三个实例:玩家、墙和出口。所以,我们需要为它们准备三个精灵和三个对象。你可以在教程的Example文件夹里找到第一个最简单的游戏:maze_1.gmk,打开游戏源程序,试着运行它。

游戏中的对象

首先,让我们来创建对象。对每一个对象使用一个32×32的精灵图:

用常用的方法来创建这三个精灵,并分别将其命名为:spr_person(玩家)、spr_wall(墙)、spr_goal(目标)。其中,玩家和目标必须设置透明色。

接下来,继续创建三个对象。首先创建墙壁对象,将spr_wall设置为对象的精灵,将对象命名为:obj_wall并选中其中的Solid(固定)复选框,这样,其他的对象就无法穿过该对象了。由于墙什么也不用干,所以不用为该对象定义任何事件。

第二步,让我们来创建目标对象,这是玩家需要到达的目标的对象,它不是一个固定的对象。使用结束的旗帜来作为对象的精灵,这样就使玩家的目标十分明确。当玩家与目标对象发生碰撞时,让玩家进入下一个房间。所以,我们为其放置collision(碰撞)事件,该事件可以在mani1(主要设置1)组中找到。这时就有一个问题了,当玩家已经到达最后一个房间时,进入下一个房间就会导致错误。所以,当玩家与目标对象碰撞时,首先检查是否有下一个房间,如果有则进入下一个房间,否则重启游戏。所以,修改过的对象事件将如下所示:

很明显,在一个完整的游戏中,当玩家结束了最后一个级别时,我们最好在重启游戏的基础上,多做一些工作,比如:显示一张好看的图片、给出最好玩家排行榜的位置等等。我们将在后面介绍这些相关内容。

最后,我们需要创建玩家所要控制的角色对象,这里就需要一些更多的工作了。用户的输入应该能控制角色的移动,另外,角色还不能碰到墙上。我们使方向键来控制角色移动(对于玩家来说,这是很容易接受,并且是简单的)。有多种方法可以使我们控制角色移动,最简单的方法是当玩家按下一个方向键时,就使角色向指定方法移动一个单位。第二种也是我们所要使用的方法是只要玩家按下方向键,角色就向指定方向移动。另外的方法是角色处于持续向一个方向移动状态,直到按下另外的方向键(就像PacMan比克曼的移动方法)。

我们需要为所有的方向键事件添加相应的动作。所要添加的动作是很简单的,它们只是简单的设置右方向(速度使用4),当玩家抬起键盘时停止角色的移动。我们使用键盘事件没有键盘输入,停止角色移动。尽管有一点复杂,但我们仍然希望使玩家控制的角色与游戏中的网格构成的迷宫对齐,否则角色的动作就会变得很困难。例如,当角色进入到一个通道中时,你将不得不停在一个确切的正确位置。这个问题,可以通过以下方案解决。在control (控制)动作组中有一个动作专门用于检测对象的实例是否与网格对齐。如果对齐到网格,则下一个动作才会被执行。我们将这个检测动作放置到每个方向键事件中,并且将其中的参数设置为32因为这是我们的迷宫的网格所用的尺寸,如下图所示。

很显然,当角色与墙发生碰撞时,我们也应该停止他的动作,所以在角色与墙的碰撞事件中我们放置一个事件,用于中止角色的移动。这里,有一个问题你需要注意,如果你的角色的精灵图没有完全进入到网格中,这是一种很常见的情况,这时,当你的角色与墙发生碰撞时,就不会与网格对齐(更准确的说,这发生于边框的大小比环绕于精灵图的速度更大时),在这种情况下,角色将会被钉在那里,而对键盘事件不再反应(因为,这时它不对齐于网格),同时也不会再往前移动了(因为有墙在那里)。解决这个问题的方法是使用精灵图更大一些,或者取消精确碰撞,或者为整个精灵图添加边框。

创建房间

以上,所有的动作都添加完了,下面我们来创建房间,创建一个或者两个像迷宫的房间。在每一个房间中的目的地放置目标对象,并把可控制角色对象放到起始位置。

完成

以上就是全部了,第一个游戏已经准备好了,可以试着修改一下。例如,在角色的创建事件中改变角色的移动速度,创建更多的迷宫,改变精灵图等等。

收集钻石

虽然游戏完成了,但我们游戏的目的是收集钻石。钻石的制作是很简单的,但是如何才能确认玩家在收集完钻石前不会到达目的地而离开房间呢?在上边的基础上,我们添加一个门对象,如果房间中有钻石存在时,门对象就和墙对象一样,不允许通过。当所有钻石被收集完之后,门对象就消失了。你可以在Example目录中找到名为maze_2.gmk。你可以试着加载该源程序,并执行。

了为完成这样的目标,除了墙、目标、人对象之外,我们还需要两个对象,钻石和门。其中钻石对象非常简单,它只需要在与人发生碰撞时,自己销毁。所以在碰撞事件中放入一个销毁动作。而门对象将会被放置于隔开目标的位置上,门对象是固定的(这样可以防止人通过它)。当人与门发生碰撞时,我们停止其动作即可。在门的步伐事件,我们需要检测房间中是否有钻石存在,如果钻石数为0则销毁自己。另外,当门被销毁时,我们需要播放特定的声音,让玩家知道门已经被打开了。所以,整个步伐事件看上去将会如下图所示:

让游戏更好玩

现在,游戏的基础已经搭建好了,让我们再做点工作,使游戏更好玩。

游戏中的墙看上去是太丑了,所以,我们来对其进行一下简单的装修,用三个对象来替代墙,其中一个用于墙的拐角,一个用于水平方向的墙,另一个用于垂直方向的墙。分别为它们指定正确的精灵并且都将它们设置为solid固定的。经过简单的装修,房间看上去顺眼多了。如果再给房间添加点背景,就更好了。

为了避免给所有的三种墙都指定碰撞事件(在后面将介绍到各种不同的怪物,与这个是类似的),这里我们使用GameMaker中的一个重要的技术。我们指定拐角墙作为其他墙的父对象,这就意味着都将作为拐角墙的一个特别的变量。这样一来,它们将会有相同的动作(除非我们为其又定义了不同的动作),对于其他实例,这也是一样的。所以,我们只需要为拐角墙定义相应的行为即可。这样,墙的行为将自动作用于其他的墙对象。另外,也可以把门对象的父对象指定为拐角墙对象。

分数

让我们为玩家设计一个分数,这样可以让玩家衡量他的程度。要实现这样的功能是很简单的。对于每一个钻石对象销毁时,分数增加5点。所以,在钻石的销毁事件中,我们为分数添加5点。为目标对象增加40点,所以为目标对象的与控制角色的碰撞事件中,我们为分数增

加40点。

当玩家完成了最后的房间时,将会弹出一个高分排行列表,在Gamemaker中可以非常简单的实现这样的效果,因为正好有这样的动作。所以,我们需要对目标对象作一下调整,以使其在逃出游戏的最后一个迷宫时,显示高分列表。当目标对象与玩家发生碰撞时,以下事件将被执行:

它添加了一些分数,播放了声音,并且稍等片刻进入下一个房间。如果这已经是最后一个房间,则显示一个高分列表,并重启游戏。

注意:玩家的分数将会自动显示于房间的标题中。这样确实很丑,我们创建一个控制对象来显示分数,该对象不需要精灵,并且将会被放置于所有房间中。并且控制对象还可以执行一些游戏中的全局控制。现在,我们只需要它显示分数即可,所以,在其绘制事件中,我们设置字体和颜色然后使用绘制分数的动作。

开始屏幕

如果有一个开始屏幕用于显示游戏的名称,看起来会很漂亮。为了这个目标,我们在游戏开始之前创建一个房间。可以创建一个漂亮的背景(你可以指定只在第一个房间使用,使其占用更少的显示内存),把这个背景应用于第一个房间(最好不为房间设定背景色,同时,房间标题上也不显示任何内容)。另外还需要为该房间添加一个开始控制对象(该对象是不可见的),该对象只是简单的等待用户按下任意键,然后跳转到下一个房间(该对象同时需要设置分数为0,并且要确认分数不会在游戏的标题栏上显示)。

声音

没声音,再好的(游)戏也出不来,所以,我们需要为游戏添加一些声音。首先,我们需要为游戏添加背景音乐,这里使用一个好听的Mid文件,我们在start_control(开始控制对象)中开始重复播放该文件。接下来,我们需要为收集钻石、开门、到达终点这些事件添另音效。

这些创建的音效资源仅在相应的事件发生时执行一次。当到达终点时,在终点音效播放之后,最好使用sleep(休息)动作稍停一会儿,再进入下一个房间。这样不至于使玩家觉得太突兀。

创建房间

下面,我们创建一些有钻石的房间。注意,前面介绍的第一个游戏中是没有钻石的,只是让玩家简单的从迷宫中逃脱。这样的设计是合理的,因为,第一步是让玩家明白,如何到达终点脱离迷宫,然后再说收集钻石。所以,给第二个房间一个收集钻石的标题,玩家就会知道自己该干什么了。

怪物和其他进一步的挑战

咱们的游戏进行到这一步,看上去已经似模似样了,但是,仍然不够完整,只有这些东西,玩久了会相当无趣。所以,接下来,我们为游戏添加一些怪物,再添加一些炸弹、可以推动的石头块,和需要石头填充的大坑。完整的游戏可以在Example文件夹下的maze_3.gmk找到。

怪物

在这个游戏里,我们将创建三种不同类型的怪物,一种是左右水平移动,一种是上下垂直移动,而最后的是四个方向移动。添加怪物是很简单的。当一个怪物对象被创建时,就向一个方向移动,当其碰到墙时,就改变其移动方向。当人撞上怪物时,角色就被杀死,丢失一条生命,并重启当前房间。我们将在游戏开始为玩家设定三条生命。

让我们首先创建水平移动的怪物。先创建一个简单间的精灵图,然后用指定的精灵图创建一个怪物对象。你它的创建事件中,让其向左或者向右移动。为了使游戏更难,可以使怪物的移动速度(比控制角色)稍快一点。当怪物与墙发生碰撞时,反向其水平移动方向。

第二种怪的工作机理与第一种非常相似,区别在于,此类怪物在创建时,使其向上或者向下做垂直移动。同样,当碰到墙壁时,反向其垂直的移动方向。

第三种怪就稍微复杂一点了。这类怪物在开始创建时,它既可以水平移动,也可以垂直移动。当它与墙壁发生碰撞时检测是否可以向左或者向右移动。如果都不行,则反方移动。整个过程看起来如下图所示:

为了避免怪物看起来太小的问题,可以不使用怪物精灵图的精确碰撞检测,另外也要为整个图像设置边界边框。

当游戏控制角色与怪物发生碰撞时,我们可以播放一个可怕的声音,停顿一会儿,使玩家的生命减少1并重启当前的房间(注意,这些顺序不能搞错,要把重启房间放到最后,因为当房间重启之后,其他的动作就不会执行了)。另外也需要为controller控制对象设置一个no more lives(没有更多生命)事件,显示高分排行榜,并重启游戏。

生命

我们使用Gamemaker内建的生命机制为玩家设定3条生命,可以以数值显示玩家的生命。控制对象可以像显示分数一样,显示玩家的生命数。但是用可见的小图片来显示生命数比仅用数值显示好看的多。在动作列表中的score(分数)组中,有以小图片显示生命的动作。这样,控制对象的修改过的绘制事件看起来就如下图所示:

注意,这里我们也使用了字体资源来显示分数内容。

炸弹

下面来为游戏中添加炸弹和起爆器。我们这样设计起爆器和炸弹:当玩家接近起爆器时,引爆房间中的所有炸弹,炸弹并炸毁它四周的所有东西。炸弹可以用来在墙上炸一个洞,或者用来炸死怪物。为了完成这一目标,我们需要创建三个新的对象:一个起爆器、一个炸弹、还有一个爆炸效果。对于每一个对象,都需要相应的精灵图像。

炸弹的设计是很简单的,它只坐在那里啥也不干。确认为了确认怪物显示于炸弹之上(比显示在下面要强呀),我们将其deepth(深度)属性设置为10。对象实例按其深度顺序进行显示。最高的深度最先显示,而较小的深度则来显示。所以,将炸弹的深度设置为10,它比其他对象的默认的深度0大。这样可以保证怪物显示于炸弹之上。

起爆器对象也很简单。当它与玩家控制角色发生碰撞时,就把所有的炸弹实例转变为爆炸效果实例。这个目的,可以用将一个对象改变为另一个对象的动作来实现。在应用于选项,我们选择应用到所有的炸弹对象。如下图所示:

爆炸对象只显示一个小动画,在动画播放之后,执行自销毁动作(你应该注意当把一个炸弹对象变为爆炸效果对象时的爆炸区域是处于正确的位置)。该对象还要销毁所有其临近的对象。这就需要一点额外的工作了。首先,我们不希望炸弹销毁它自己,所以我们移动到一个临时的位置。然后,我们使用相应的动作销毁指定爆炸效果旧的位置周围的所有对象。最后,我们把爆炸放到其原始位置。如下图所示:

注意,如果玩家太接近爆炸效果时,就会导致错误。所以要确认,起爆器应该远离炸弹。仔细设计炸弹与起爆器的关卡是很重要的,这样会有更多趣味,并更具挑战。

石头和坑

让我们为游戏中添加一些更加复杂,更具有智力挑战性的内容。这里需要创建可以被角推动的石头,另外再添加一些玩家不能通过,但是可以被石头填充用于创建新的通道的坑。这将会为游戏增加更多的可能性。石头必须被推到正确的方向以创建通道,你也可以使用石头阻止怪物移动。

石头是一个固定的物体,关于它最主要的问题是当玩家控制角色推它时,它能跟着推的方向移动。当玩家与石头发生碰撞时,我们执行以下动作:检测相对位置8*other.hspeed,8*other.vspeed是否为空,这个位置是石头将要被推向的位置。如果该位置为空,则把石头移动到这个位置。如果这个位置有一个坑,则也把石头移动到这里。为了避免怪物穿越石头,我们把墙拐色对象作为石头对象的父对象。这样会有一定问题,因为定义了人与石头之间的碰撞,而父对象则是人与墙之间的碰撞会使玩家停止移动。这显然不是我们想要看到的。为了避免这种情况,我们为人与石头的碰撞定义动作时,人也会跟着移动。这样,当人与石头发生碰撞时,就会执行其自身定义的动作,而不是其父对象的动作。这样,人就不会停止移动了(更准确的说,是新的碰撞事件覆盖了其父对象中的碰撞事件,你也可以使用这种方法给子对象与其父对象不同的事件)。

洞也是固定的对象,当它与石头对象发生碰撞的时候,将它自己和石头对象一起销毁。我们也把墙拐角对象当作其父对象。

使用石头对象与墙对象,你可以创建很多具有挑战性和智力性的房间。不过这也有一些问题,你也可以很容易的把你自己困在石头中,而使游戏无法进行。所以当出现这种情况时,我们需要给玩家重启当前房间的机会,同时减少用户一条生命。在这最后,我们使用R键盘事件来重启房间。为控制对象添加R键盘事件,我们只需要简单的减少玩家一条生命,并重启当前房间。

我们游戏的第三个版本已经完成了,现在是时候把以上介绍这些元素混合起来制作一些有趣的关卡了。

一些最终的改良

现在,让我们做些工作,以使游戏更加完善。我们需要改善显示效果,我们需要一些有趣的关卡。为了实现这一目标,我们需要添加一些奖励机制添加一些特别的房间。游戏的最终完善版位于Example文件夹中的maze_4.gmk。

更好的显示效果

我们当前游戏的显示效果,老实说是太简陋了。所以让我们来改善这种效果。我们要做的主要事情是使游戏中的玩家控制角色看起来象在向每个方向移动。要实现此目标,最简单的方法是使用包含4个子图像的新图像,每一个子图像表示玩家的一个方向,如下图所示:

通常Gamemaker将会循环播放包含子图像的图像。为了避免出现这种情况,只需要设置对象的变量image_speed=0即可。当需要改变图像中的子图像时,使用change sprite(改变精灵图)动作设置相应的子图像为显示的精灵图像即可。如下图所示:

与之相同,我们也可以为怪物设置不同方向的精灵图,但是我们不是明确的知道在何处改变方向。比较简单的方法在怪物的step结束事件中添加检测代码来检测对象移动的方向,然后在此基础上为其指定相应的精灵图。

奖励

接下来,为游戏添加两项奖励机制:一项为玩家奖励100分,另一项为玩家奖励一条额外的生命。这些实现起来都很简单。当它们与玩家角色碰撞时,播放一个声音,销毁它们自己,同时实现在当前基础上增加100分,及增加1条命的动作。这样就全部完成了。

单行道

为了使游戏更加复杂,让我们为游戏添加只允许向一个方向移动的单行道。为此,我们需要添加四个对象,每一个都是一个指向不同移动方向的箭头。当角色完全在这些箭头上时,将会被移动到指定的方向。所以需要为角色的step事件添加一些代码,判断角色是否以正确的方向与网格对齐,同时是否与箭头相会,如果符合条件,我们就使玩家向相应的方向移动(我们给这时的移动速度设置为8,这样会更加有趣)。

怪物害怕系统

在这里,我们要创建一个类似Pacman游戏中的怪物害怕系统。为了完成这样的目标,我们在怪物的创建事件中为其添加一个名为afraid的变量,并将其设置为0(假值)。当玩家与新的环形对象发生碰撞时,我们使所有怪物对象的afraid属性变为1,并且把怪物的精灵图改变为害怕状态的图像。现在当角色与怪物发生碰撞时,我们首先判断它的afraid值,如果该值为1,则将其移动到其被创建的初始位置(jump to the start position动作),否则则使玩

家生命减少1,并重启当前房间。

现在发布游戏

我们已经创建了很多对象了,但现在我们手里的东西,仍然不是一个真正的游戏。一个非常重要的原因是我们需要为游戏设计多个不同的关卡,这些关卡将从易到难。在最初的关卡中,只使用很简单的几个对象,在随后的关卡中一步步显示更多的内容。要确认游戏在50关时有一些特别的惊喜。应该为不同的玩家设计与其相适应的关卡。而对于儿童,则应该比大人设定更多的智力项目。

另外,游戏也需要一个文档,在Game Maker中使用Game information可以很容易为游戏创建文档。最后,玩家不会一次把游戏从头玩到尾,所以需要为游戏添加存档、读档机制。幸运的是,Game Maker中可以非常简单的实现这样的功能。因为其内建有存档、读档机制,使用F5键,即可保存当前的游戏,而按F6则可以加载最后保存的游戏。你也应该把这些提示信息加入到游戏文档中。

你可以在教程的Example目录中,找到游戏的完整版——maze_4.gmk,这个源文件中包含了游戏中用到的所有对象。你可以加载它,并运行它,并且可以按照你的需要对其进行你认为合适的修改。你可以为游戏设计更多的关卡(现在只有20关)。另外,你也可以添加一些你自己设计的对象,例如,能打开门的钥匙,能在房间中从一个地方移动到另一个地方的传送阵,玩家可以杀掉怪物的子弹对象,还有时不时的开关的门,让玩家保持同样方向的冰雪路面,可以发射子弹的陷阱等等。

最终

最后,我真的希望这个教程对你使用Game maker设计游戏有所帮助。切记,先策划好你的游戏,再一步一步(更确切的说是一个对象一个对象)来实现你的想法。另外,一个特定功能,可以有多种解决方案。所以,如果一个方法行不通时,可以选用其他方法来实现。祝你好运!

更多的阅读

为了阅读更多关于Game maker创建游戏的内容,建议你购买下面这一本书:

Game Maker学徒,为初级开发人员。2006年出版。

这本书一步步介绍了很多Game maker中的技艺,并且它创建了九个很漂亮的游戏,这些游戏也很好玩哦。

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

游戏设计与制作课程设计 以下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/b35881930.html,。 1.3 程序设计的预备知识 熟悉c#语言及visual https://www.doczj.com/doc/b35881930.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(); };

相关主题
文本预览
相关文档 最新文档