Gamemaker打砖块教程

Gamemaker打砖块教程
Gamemaker打砖块教程

教程

页1 of 13

引言

欢迎来到Gamemaker!本教程将告诉你如何使用游戏制作语言(GML)创建你的第一个游戏,将需要大约30分钟完成。我们希望它会教你用Gamemaker进行工作的重要基础,以及给你的游戏实验的基础和不断提高的同时学习所有关于这个难以置信的编程工具。

既然这是一个教程,我们准备重制一个每个人都知道的经典街机游戏打砖块!学习完本教程结束时,您将创建一个玩家控制的球拍,一个弹跳球,砖,墙,和一些其他的东西,所有这些都将学习Gamamaker如何工作,如何使用GameMaker Language(GML)编码和(我们希望!)在这个过程中体会到乐趣!

你将要开发的游戏会使用一些特殊的资源,我们已经为这个教程特别创建了资源。你只需在您的计算机上找到他们,请去Gamemaker屏幕的顶部菜单,并选择Help下拉菜单。你会看到一个选项标记Open Project在资源管理器。如果你选择了该项,那么标准文件浏览器将打开显示你的内容Gamemaker工程目录,你可以浏览“Assets”子目录,所有的资源都存储在“Graphics”(图片)和“Sounds”(声音)文件夹下。

同时还建议你打开帮助手册(按F1来对开),这样你就可以阅读教程中使用的函数的一些具体细节。

单击Next 按钮进入教程的下一页。

教程

页2 of 13

添加一些精灵

像前面介绍的,我们想复制一个打砖块游戏,所以让我们来创建一些游戏中要用到的基础的对象。首先我们需要为游戏中的砖块添加精灵,所以右击资源树精灵文件夹,选择第一个选项“Create Sprite”(创建精灵)

现在你可以命名你的精灵,使它可以明确说明是一个砖块的精灵,我建议使用“spr_brick”(前置是资源类型,帮助你在以后的大型游戏中非常容易使用),现在点击按钮“Load sprite”,然后浏览到这个教程的资源文件夹(如果你不确认在哪里可以找到,你可以点帮助菜单,并选择“用资源管理器打开工程”)既然你将浏览助手,然后你可以选择砖块精灵资源了。

这里面有几个关于精灵资源的不同的属性,但是现在我们只需要指定它的origin(中心),这指定它的X与Y位置,这将用于在游戏房间定位一个实例,可以看作是它的原点,这也用于转动与缩放于其他用途,现在我们只需要指定砖块中心即可,点击按钮(Center)你将会看到指定的origin跑到了精灵图的中心。

现在,我们的精灵砖块就做好了,接下来创建玩家球拍精灵。但是这次我们采用不同的方法,你可以看到另外的设置,导入助手。下面的文字,你将会看到我们这次将要用到的精灵。只需要将图片拖到主界面区域并松开鼠标。

这时你会看到一个对话框打开了,并问你你想要导入的资源类型(你应该选择sprite),然后就会创建一个新的精灵。使用该方法你可以快速简单地创建精灵、背景,只需要把它们拖进GM窗口中即可,现在可以为新的精灵命名了,例如叫作:spr_bat。然后指定它的原点为中心点。

接下来,同样创建俩精灵,一个是墙精灵,一个是球精灵。

用你想要的名字命名它们,然后关闭墙精灵,我们不用管它,但是对于球精灵,我们要多做

一点事。

第一件事就是指定中心为原点,第二你需要到标记为Collision Checking(碰撞检测)的界面,然后点击按钮(Modify Mask调整碰撞盒),在这里我们将调整碰撞盒(在GM中用于碰撞的区域),这里我们将其指定为一个椭圆,这样它就只覆盖球自己,要做到这个只需要简单的点击按钮ellipse在这个形状小节,像下面这样:

关于碰撞盒属性的更多信息,访问手册中的高级使用下的关于精灵更多内容一节。设置完成之后,关闭碰撞盒属性窗口与精灵属性窗口,保存一下你的游戏。下一节我们将继续。

点击Next进入下一章节。

教程

页3 of 13

创建一个墙对象

现在我们有了游戏的基础精灵素材了。现在我们开始来创建对象。一个对象是所有实例的基础类,而一个实现是直接显示在GM的房间中的。这意味着你可以有一个对象,但该对象可以有多个实例,而每个实例都有着同样的对象的同样属性。但是(既然它们是互相依靠的)它们可以被改变,也可以操作的互相独立的。好了,下面我们来创建我们的墙对象。

像创建精灵一样,右击资源树上的对象文件夹,点击创建对象(create object)设置。

现在给你的对象一个名字(例如:obj_wall),然后点击相关精灵图标,选定我们前面创建的墙精灵。

墙的实例将会被用来创建游戏区域的边界,它们用于停止玩家的球拍,防止它移动到房间外面,然后还要用于碰撞球,而使球总是在房间里面(除非球从球拍下离开了),但是我们还要使它不可见,所以它不能被玩家看到有实际的墙,这样房间看起来好看一些。

要让墙对象不可见,我们需要不选中对象visible(可见)选项。

一个不可见的对象仍然会执行碰撞,并且像其他可见对象一样运行其中的代码,只是它不再执行draw event(绘制事件)中的所有内容。所以在其中写代码也不执行,拖拉进去的东西也不行。

在继续下一章之间保存你的游戏。

点击Next查看下一章。

教程

页4 of 13

创建一个砖对象

外墙对象创建好了。砖对象的作用是让球碰撞它,并且会被球撞坏。像前面创建墙对象一们,下面我们创建一个砖对象。右击资源树下的对象文件夹,点击创建精灵设置。

现在给你的对象起个名字(例如:obj_brick),然后点击绑定精灵图标,指定为砖块精灵。

一个新的按钮现在出现在精灵名字下面,叫作Edit,这将会打开精灵属性窗口,所以点它,现在是我们精灵图中的更多的子精灵。

现在我们打开属性窗口,点击Edit(编辑精灵)按钮打开精灵编辑器,然后你可以看到一个

新的窗口,它显示砖块精灵有很多子精灵。这个数值就是image index(图像索引),你看,每个精灵都可以有一个变量:sub-images,它使精灵可选。这个子精灵可以显示一个接一个,这样就可以创建动画精灵,或者它们能被在不同状态(比如一个按钮未按时,按下时,抬起,放下等,所有的状态都有两个不同的子精灵)时被显示。

选择子精灵0,点击它,然后点击copy复制按钮,然后点击paste粘贴按钮,就添加了一个子精灵图。现在双击子精灵图1,打开编辑器,我们现在可以改变它的显示效果。我们现在为它指定不同的颜色,只改变它的颜色,这样使我们游戏中的砖块更加丰富多彩,要做到这样,去这个Image拖下拉菜单,选择colorize(颜色),它将会打开另外一个窗口,在这里,你可以改变子图像的颜色。

既然你对结果满意了,点击OK按钮,然后就保存有了新的颜色的子精灵图(拉动绿的拉杆颜色就会变动)。现在重复上面的操作,直到你有至少4个不同颜色的子精灵图。

当你有了不同子图像的砖块精灵,关闭精灵编辑器,并返回砖块对象。我们现在来告诉GM,不要用动画来展示精灵,而只是随机显示子精灵。添加一个create event(创建事件),然后拖进去一个代码动作(控制面板下的代码)到里面。这将会打开代码编辑器,这里你需要输入以下代码:

代码的第一部分设置image_speed(图像速度)为0这个速度用于显示精灵图不同子图像的速度,默认值为1,即每帧显示一个。将其设置为0,就是告诉GM,不用动画显示精灵图,只是显示子精灵。第二行是一个随机选择子图像。就是在创建时,选择不同的颜色。

保存你的游戏。

点击Next进入下一章。

教程

页5 of 13

创建球拍对象

一个碰球游戏需要一个玩家控制的球拍移动碰一个球来撞击并破坏砖块,让我们开始球拍对象。

像前面一个创建一个新的对象,绑定球拍精灵图,并为它起一个名称(obj_bat)。现在我们将要添加移动操作为对象的键盘事件。要开始这个,我们将使用方向键,来添加一个keyboard event(键盘事件),并在上下文菜单中选择第一个设置Left(左键)。

这样就添加了一个左方向键事件,有三种不同的键盘事件分别是Pressed(按下)released(抬起事件)只在键盘被按下或抬起时执行一次,但keyboard eveny(键盘事件)是在键盘按下时持续执行,所以一些代码将会被一步都被执行在键盘持续按下时。

拖一个代码动作到新的事件中,并添加以下代码:

代码的第一部分是检查球拍左方是否有跟墙的碰撞,如果没有的话,就将球拍向左移动5个像素。接下来创建右方向键动作,添加以下代码:

可以看到这个代码跟上面的那个比较类似,只是现在检查的是右方。(记信在GM中位置是被用于在房间中的x值与y值定义,0,0指定为左上角)所以+x是向右,-x是向左,+y是向下,-y是向上。

最后,我们再添加一些控制代码为开始游戏为球对象(球的对象我们将在下一节创建)。由于我们需要也指定另外一个键盘事件空格键,我们将添加下面代码:

这个代码看起来更复杂,但是也很简单,它说所有的球对象,如果它的变量go是假的,就将它设置为真,并给球一个速度,每帧5像素,和一个随机的方向,方向范围为45-135之间。这个with函数是非常强大的,它允许你运行其他对象中的代码块,你也可以看到在上面,我们在游戏开始是使用了发射球对象。

点击Next进入下一章。

教程

页6 of 13

创建球对象

最后也是最复杂的,我们需要制作的对象是球对象,像前面介绍的一样,先创建一个对象,并为其绑定精灵图。

在开始的时候,我们需要为对象的create event(创建事件)添加以下代码:

这是控制变量,指定玩家在游戏开始是发射球,现在添加一个步事件(step event)并给它添加如下代码:

这个代码将会检查控制变量它的值是否为假,如果为假,它将使球的横坐标跟随球拍的横坐标。如果go的值为真,则判断,如果Y坐标大于房间高度即球跑到房间外,将使游戏重新启动。

注意:我们能使用with函数在代码的第一部分,但是在这情况下,更简单的获取球拍的x 坐标是用对象的索引加一个点来直接使用它。这种方法是好的,但是也是有限制的,如果房间中没有对象而直接引用就会提示错误(但with结构就不会),但现在并没有问题,因为我们知道,房间中肯定会有球拍对象,另外这种方法也仅限于房间中只有一个对象的实例的情况(而with结构会指代所有的实例)。

最后的事情就是为实例添加碰撞事件,先添加球与墙的碰撞事件。

拖一个代码到事件中,添加如下代码:

这告诉球弹离墙,当它与墙发生碰撞时。我们已经设置碰撞为精确的,来使它看起来更真实,注意,并不建议所有时间都设置精确碰撞,因为这样会占用更多内存。但是现在只这个实例是,并不会有什么问题。下一个要设置的是球与砖块实例的碰撞,添加一个碰撞事件,然后拖进下面的代码:

像前面一样,球会从砖上弹开,同时我们使用了with结构来告诉GM在碰撞发生时来销毁砖块实例,怎么样使用特别的关键字other,在碰撞事件发生时other关键字总是指代另一个对象,所以当使用with(other)代码结构,你实际上是在说:执行这个代码在与球相对应的其他实例中。在很多情况下,这种结构非常有用。

最后的碰撞事件需要添加的是球与玩家球拍的碰撞,所以这次再添加一个与球拍对象的碰撞事件,并添加如下代码:

上面的代码是一样的,但是下面的代码是怎么回事?好的,在反弹,这个球与球拍碰撞的位置将影响到弹开的方向,所以首先,我们像通常一样计算反弹,然后,我们通过球拍的位置获取反弹的角度(碰撞发生时other的角度),和这个球对象他自己。这个角度也用于motion_add()函数来为球添加角度,我们设置速度为5,因为motion_add也会影响速度,因为我们不想这样,所以用speed=5来限制它。

现在我们几乎准备来第一次测试我们的游戏了,但首先我们还需要一个房间来玩这个游戏。保存一下你的游戏,继续下一部分。

点击next查看教程下一页。

教程

页7 of 13

创建游戏房间

要玩我们的游戏就需要一个房间,没有房间GM不能运行。所以右击资源树上的房间文件夹,

选择创建房间:

现在你应该打开设置(setting)选项卡给你的房间一个名称,然后设置房间的大小与速度。标准的默认大小是640*480就差不多了,但速度是60的会比30更好,这将会给更平滑的游戏体验,而且也并不会太复杂,但是如果很大的或者有非常多的实例时,还是保持在30为好。

我们现在能为房间里添加对象了,所以点击对象(object)选项卡然后选择墙对象,现在你可以放置很多的单一的墙对象到房间的边缘部分。但是现在的房间编辑器将会改变一个实例的属性,使得只需要三个墙对象就可以包围整个房间,这是十分重要的使你的房间中的对象数量少一点,使游戏运行更快,同时也更好。

放置一个墙对象在房间的左上角,然后右击它在弹出的菜单中选择对象属性(instance properties)

你现在可以调整实例的基础元素了,比如:大小、颜色、颜色、透明度等。在这里我们调整它的缩放值,使它可以覆盖整个房间。这只需要改变它的Y轴缩放比例,如果房间是480

高,则将其缩放比例为30倍,所以现在设置之后关闭菜单你将会看到房间中的实例的变化。重复这个过程,添加一个墙,使它覆盖右方和顶部房间(这时你需要不选中编辑器中的当对象Delete Underlying 覆盖时将其删除的选项),最后房间看起来是这个样子的:

现在你可以在房间中放置砖块对象了,这就简单了,只需要选择对象,将其一次一个放置到房间中即可,将它放置到你想要的状态,你也可以在房间底部添加一个球拍与球对象,最终房间看起来是这样的:

现在你可以保存你的游戏,并可以点击屏幕顶部的play按钮来试运行了。你可以看到,非常基础,但是我们现在继续添加一些别的东西,你也可以打开一个版本来比较你的工作。你也可以点击帮助菜单,然后选择菜单设置open gamemaker in explorer,你将会浏览这个教程在文件夹中。

点击next进入下一部分。

教程

页8 of 13

添加游戏体验

好的,你的打砖块游戏现在已经完成了,但是不够好玩,是不是?我们需要再添加一点元素,使游戏更好玩,吸引玩家的重要的因素,一个是分数一个是生命。

要开始这个,需要创建一个新的精灵,然后加截在分数框,从这个资源包含,给它一个名字,将其原点的x值设置为0,y值设置为中心。用精灵绘制在屏幕顶部使绘画位置更容易。

我们现在需要添加一个新的对象,叫作:obj_control或者一些简单的叫作:control,为它的create event(创建事件),接下来添加下面的代码:

这个代码设置文本的对齐方式以及绘制的颜色(这种设置可以在任何事件中,但是如果你不

计划改变设置,在创建事件中设置也是极好的),然后重新设置全局变量score和lives(分数和生命),这类变量内置在GM中,它不属于任何对象和实例,而是整个游戏,这就意味着任何实例都能读取或者改变它们,它们的值对所有实例都是相同的。

我们不得不添加一个绘制事件,所以实例将会绘制这些变量像一个分数框,在下面的事件中添加如下代码:

这个代码将会绘制精灵图通过draw_self()(因为当你为实例添加绘画事件时,GM就不再默认绘制绑定的精灵,除非你告诉它怎么画),然后绘制分数和生命。

你现在可以关闭对象,然后打开球对象,我们现在来改变它的步事件,使它能够减少生命,当它跑出房间时,不只是重新开始游戏,而是减少生命,我们改变的代码如下所示:

你可以看到,这个代码稍微复杂点了,它指定当球离开屏幕,它就从全局变量lives中减1,它然后检测是否生命小于1,如果大于1则创建一个新的球对象在球拍上,并销毁当前的球对象,但是如果生命等于0了,则游戏重新开始。

我们也将改变球与砖的碰撞事件,以至于当销毁一个砖时,我们能够得分,打开球与砖的碰撞事件,在代码最后添加下面一句:

好了,关闭对象,在继续下面内容之前,保存你的游戏。

点击next进入下一章。

教程

页9 of 13

增加可视化效果

在前面测试的基础上,我们下面将使游戏效果更好,我们将会添加一个背景,还一些地砖区

域,使墙看起来更漂亮。我们也将把砖块分门别类,而不是像现在这样都是随机的颜色。创建一个新的背景资源(右击资源树上的背景文件夹,选择创建背景),为游戏绑定一个背景,加载星空背景,给新的背景一个名字,然后关闭窗口,接下来创建另外一个背景资源,加载地砖图片,你应该选中将背景作为地砖使用选项,它将打开一个新的节,在里面你可以定义每块地砖的大小,将其定为16*16即可。

现在你可以打开房间编辑器,然后打开背景选项卡,关闭背景颜色,因为它不再需要了,然后从下拉框中选择星空背景,确认你已经选择水平与垂直的地砖。

你应该也为房间添加地砖,点击tiles(地砖)选项卡,在房间的边缘添加地砖(就是从你上边创建的地砖资源中),选定一个之后,在正确的位置放置它们。另外你还需要添加一个控制对象,使你上一节制作的显示分数、生命成为可能,房间最后的效果像这样:

最后要做的事情是改变砖块对象的创建事件,使它不再随机显示颜色,而是它的颜色均基于它的在房间中的位置,打开对象,改变创建事件,添加如下代码:

这个代码检查实例在房间中的Y的位置,并根据它改变精灵图索引,每32,就改变一个索引值。

保存你的游戏,现在再试玩一下,你会发现,跟你以前的版本再比有大的不同,尽管它还不是一个最终完成品。

点击next进入下一部分。

教程

页10 of 13

添加游戏介绍

所有的游戏都有一个标题屏幕来介绍游戏、视觉效果和一些设置等,如果再加上这些我们的撞球游戏就没什么不同了。

要开始这个,我们需要创建两个新的精灵图,一个是标题,另一个是PLAY按钮,所以,创建两个精灵,分别命名它们并加载相应的图片。

下一步创建一个对象叫作:obj_intro,或者其他的,并为其绑定play精灵,现在给它的创建事件添加如下代码:

从前面介绍的内容你应该知道了,设置变量alpha的值是设置透明度,但这里有一些新的东西需要学习,很明显,当玩一个游戏,一个重要的挑战就是打破前一个高分记录,所以,我们就使我们的游戏总是显示高分(即使你退出游戏重新开始),这里就通过使用ini文件。这个文件用起来很简单,可以用来存储一些小的信息,上面的代码就是打开一个ini文件,如果不存在的话会自动创建,并且从里面读取一个值(如果没有值,就会返回0),并将其绑定到变量hiscore,并显示到屏幕上。

接下来,你需要为对象添加绘制事件。

上面的代码将会绘制一个play按钮,然后绘制高分,并绘制标题,同时还绘制一个基础的转换效果,当按钮被按开始游戏的时候。这个按钮自己?下面我们需要添加一个时钟事件还一个鼠标点击事件,在鼠标点击事件中加入以下代码:

上面的代码判断是否透明度为0,如果为0则启动时钟事件,并设置分数为0,生命为3,我们这样做是为了确认事件只被执行一次,即使玩家按了多次按钮。现在再创建一个时钟事件,并使用如下代码:

最终的代码是重复执行,并增加透明度,实现渐变效果,并且在透明度=1时进入到游戏房间。

这就是介绍屏幕了,现在将其添加到游戏中吧。

点击next进入下一章。

教程

页11 of 13

创建一个自定义函数

现在的游戏已经基本上完成了,只需要再添加一点东西,一个重要的事情就是使球与其他对象的碰撞更简洁,不会使球与球拍在移动时发生粘连,要做到这个,我们需要使用脚本,脚本是代码的集合体,使用它你可以创建你自己的函数,它们就像GM的内建函数一样,可以有参数与返回值。

右击资源树上的脚本文件夹,创建新的脚本,将你的脚本命名为scr_move_out ,然后复制下面的代码:

这个脚本是干啥的?它是用来移动实例运行脚本,并给它一个方向1像素同时,直到不再与给定的对象发生碰撞。这个对象是通过参数来传递给脚本,就像直接移动对象实例是一样的。现在,我们已经有了自定义脚本,打开球对象,在事件中添加以下代码:

与墙的碰撞事件:

与球拍的碰撞事件:

与砖的碰撞事件:

使用新的函数现在使代码变得很清晰,而没有其他多余的东西。脚本是十分强大的工具,它可以被用于解决很多问题,如果GM的内置函数解决不了,就可以通过自定义函数来实现。

点击next进入下一章。

教程

页12 of 13

最后的调整

最后的调整是为我们的游戏添加一个渐变效果,当游戏结束时,存储最高分并重启房间将会清除所有的砖,这些功能我们都通过前面的控制对象(画高分的对象)来实现。

第一件事是改变对象的创建事件,代码如下:

像前面一样,设置文字的对齐方式,以及设置颜色,以及设置了两个变量用于控制游戏的渐变。对象现在需要一个步事件,然后打开并添加如下代码:

这个go变量将会被设置为假被球对象(这个代码在本页最后介绍),当生命达到0,然后将会启动渐变效果,同时将玩家移动到房间之中重新开始游戏的地方,但是,只发生这些是不够的。这个代码还打开了ini文件,然后比较里面存的分数与玩家现在获取的分数,如果当前分比存储的高分还大,则把当前分数存储进去替代老的,让你下一次去打破记录。

当go变量是真,这个代码将会检查是否有砖块对象存在游戏中,如果没有了则重新启动游戏,玩家可以继续游戏(注意:生命与分数是全局变量,所以它们可以从一个房间到另一个房间都保存它们的值,除非被某些对象重置,就像intro对象一样)。

我们也需要改变控制对象的绘制事件,让它有新的渐变效果,像这样:

设置对象的层次也是一个好注意,将它设置为负值,它就可以绘制在其他对象上面:

最后要做的事是让我们通过球对象告诉控制对象什么时候最后的生命失去了,所以我们要改

变球对象的step事件,添加如下代码:

好了,现在你的第一个用代码搞定的游戏就基本上完成了,有介绍屏幕、有游戏还有高分存储,很好呀。如果你想看最后这个游戏的例子,这里有最后一个gmz文件,将它导入GM 即可。

单击next进入下一章。

教程

页13 of 13

下面还有啥?

你的游戏已经完成了,看起来不错吧,但是能不能更屌一点?好的,再加点东西我确认是可以的。

例如,现在的游戏没有声音,所以怎么加一点音效到游戏中,绑定的文件夹中包含了一些音效文件,你所有需要做的是使用下面的代码:

替换上面代码中的sound用真正的你想要播放的声音资源(声音资源添加起来也很简单,像精灵和背景一样),在需要上面代码的位置:例如碰撞事件,或者游戏开始事件,等等,声音是一个游戏很重要的部分,没声音,再好的戏也出不来。

另一个可以做的事是升级,就是使球的速度越来越快,我不会直接给你这样的代码,但是我只会告诉你该咋做用你自己,建立一个升级实例,它每一步都运行一下,检测一下看是否到底部它能破坏它自己。

下一步你们想要在球对象中创建一个变量来控制最大速度,在球的速度为5,把它存在变量中,每一步都检查一下这个变量,在所有的其他事件中,如果你碰到了升级对象就可以为球拍设置速度(即最大速度的值)是球的速度或者其他东西。你甚至可以为控制对象设置一个时钟事件,过一段时间重新将速度设置为5.

怎么升级,怎么做复杂的球,怎么做大球拍,怎么做加速减速,你可能要做更多房间,一个接一个地玩,而不是重复玩一个房间(你可以用全局变量来控制)。

接下来就看你怎么想了,然后把你的想法变成游戏中可以实现的东西。祝你好运,做游戏快乐。

点击next没有下一章了。

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已经广泛的应用于各个领域,

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

游戏设计与制作课程设计 以下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游戏代码

#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++; } }

软件开发设计报告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)

scratch教程-打砖块游戏

scratch教程-打砖块游戏 首先先来决定会出现在游戏画面中的角色 球(ball)–球可以随时改颜色 砖块(brick)–不同颜色及不同分数的砖块 砖块反弹的平台(bar)–因为吃到不同的东西而会改变外形,如变长、变短…… 游戏规则: 透过滑鼠来改变Bar的位置,但必须控制其水平移动,也就y的值要固定。 按下滑鼠来发射球 球在碰到墙就反弹 碰到砖块後砖块就隐藏并加分 全部的Brick就不见就过到第二关 也可限定时间及球数 吃到不颜色的砖块会掉下不同的东西,而这些东可以改变Bar的外形 …… 备份好了吗?开始跟着站长一起来完成这个有趣的游戏 6-1-1 反弹板的程式 将反弹板的Y座标固定,X座标随滑鼠改变,这样就能让反弹板只能水平移动

6-1-2 设计球程式 如下图,一样是按下空白键时程式便开始执行,但我们在尚未发射球前,必须让求跟着反弹板移动,程式如下: 将球的X座标设定同反弹板的X座麽 将球的Y座标设定同反弹板的Y座麽,但必须加上一个值,因为反弹板有厚度(宽),球必须在其上,所以这个值要视你的反弹而定。

侦测是否按下滑鼠,按下後,让球面向上(0) 旋转一个角度,可自由设定,一般是30-45度 让球一直移动,碰到边缘就反弹 6-1-3 当球碰到反弹板 当按下空白键后球便会被发射出去,但是碰到反弹反却没有反应,那是当然的,因为我们才刚要写这一部份,如下图: 使用「如果」来判断,当球碰到反弹板就改变方向 使用「180-方向」来处理 反弹后先移动10步,接着又会回到外层回圈,球便会一直移动 6-1-4 设计砖块程式 设定二个变数:分数及时间

设计步骤: 程式一开始先显示 重复判断是否被球打到 如果被球打到就隐藏,然后将分数加一分将程式码复制到每一个砖块

小游戏 打砖块

小游戏打砖块 制作人: 步宇星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游戏引擎。 关于该引擎的函数库说明,源代码中有详细的注释,这里不多讲了。

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].

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.360docs.net/doc/af8575749.html,。 1.3 程序设计的预备知识 熟悉c#语言及visual https://www.360docs.net/doc/af8575749.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中。

打砖块游戏

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)如何实现小球的自动运动?

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类

打砖块-教学设计

《打砖块》教学设计 一、教学内容 出自广东教育出版社的小学信息技术课本第三册(下)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设计思路 首先,本次课程设计的主要目的就是为了增强同学们的专业课知识,是对专业书上的知识的进一步巩固和实践!为了更好的去完成本次的课程设计,我们针对手机游戏被广大消费

相关文档
最新文档