综合实践T111齐利刚俄罗斯方块Word文档格式.docx

上传人:b****6 文档编号:16878395 上传时间:2022-11-26 格式:DOCX 页数:25 大小:104.58KB
下载 相关 举报
综合实践T111齐利刚俄罗斯方块Word文档格式.docx_第1页
第1页 / 共25页
综合实践T111齐利刚俄罗斯方块Word文档格式.docx_第2页
第2页 / 共25页
综合实践T111齐利刚俄罗斯方块Word文档格式.docx_第3页
第3页 / 共25页
综合实践T111齐利刚俄罗斯方块Word文档格式.docx_第4页
第4页 / 共25页
综合实践T111齐利刚俄罗斯方块Word文档格式.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

综合实践T111齐利刚俄罗斯方块Word文档格式.docx

《综合实践T111齐利刚俄罗斯方块Word文档格式.docx》由会员分享,可在线阅读,更多相关《综合实践T111齐利刚俄罗斯方块Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。

综合实践T111齐利刚俄罗斯方块Word文档格式.docx

目录

摘要I

AbstractII

第1章JAVA语言编程简介1

1.1 

JAVA语言简介1

1.2JAVA语言在网络上的应用1

第2章课程设计的目的和要求3

2.1课程设计的目的3

2.2课程设计的要求3

第3章俄罗斯方块的基本玩法4

3.1游戏规则4

3.2游戏功能和操作4

3.2.1游戏功能4

3.2.2基本操作4

第4章整体设计5

4.1设计框图5

4.2俄罗斯方块功能部分5

4.2.1方块装载5

4.2.2处理键盘事件6

4.2.3判断满行及消行7

4.2.4显示控制7

第5章实验结果8

结论10

参考文献11

附录12

第1章JAVA语言编程简介

1.1 

JAVA语言简介

SunMicrosystems公司在推出Java语言的同时,推出了一套开发工具JDK。

Sun提供的基于字符模式的Java开发工具包JDK:

Java开发工具(JDK)是许多Java专家最初使用的开发环境。

Java是平台无关的语言是指用Java写的应用程序不用修改就可在不同的软硬件平台上运行。

Java源程序编写借助于记事本,Editpuls,UltraEdit等第三方编辑工具。

所有的Java文件编辑、编译、调试、解释运行都是通过使用字符命令来执行操作。

JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。

其核心Java

API是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。

JDK是整个Java的核心,包括了Java运行环境(JavaRuntimeEnvirnment),一堆Java工具和Java基础的类库(rt.jar)。

不论什么Java应用服务器实质都是内置了某个版本的JDK。

因此掌握JDK是学好Java的第一步。

JDK里面是java类库和java的语言规范,它提供的是无论你用何种开发软件写java程序都必须用到的类库和java语言规范.没有jdk,你的java程序根本就不能用。

最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。

其中IBM的JDK包含的JVM(JavaVirtualMachine)运行效率要比SunJDK包含的JVM高出许多。

而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。

但不管怎么说,我们还是需要先把SunJDK掌握好。

1.2JAVA语言在网络上的应用

Java程序可以获取网络上结点的图象、声音、HTML文档及文本等资源,并可以对获得的资源进行处理。

例如Java程序可以每隔一定时间读取某结点提供的最新数据,并以图表的形式显示出来。

在编程处理上,一般先生成一个URL类型的对象,然后用Java中相应的方法(method)获取该对象所代表的资源。

1.3软硬件需求

运行此游戏最低的软硬件要求入表1-1所示

表1-1硬件参数

操作系统

Windows98/me/2000/XP/2003

内存容量

64MB

显卡要求

8M

声卡要求

支持DirectX8.0音效卡

交互工具

键盘/鼠标

CPU

奔腾133以上

硬盘空间

400MB

开发软件

Java可视化编程3.0以上版本

第2章课程设计的目的和要求

2.1课程设计的目的

通过此次课程设计,巩固所学Java语言基本知识,增进Java语言编程基本功,掌握JDK、Myeclipse等开发工具的运用,拓宽常用类库的应用。

使我们通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java预言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。

2.2课程设计的要求

实现俄罗斯方块游戏,具体的游戏方块图形的设计是比较重要的一个方面。

因为俄罗斯方块游戏中主要的动作就是控制游戏方块的移动和翻转,以便于组成一行行连续的方块从而增加游戏的空间,让它消除。

由于主要的游戏动作都集中在这个游戏方块上,因此游戏方块的设计就显得格外重要了。

为了增加程序的可拓展新,这里设计一个游戏方块的基类,各个具体的游戏方块都是从这个基类开始继承。

这样,当需要增加游戏方块时就不用重新设计新的类,只需要从这个基类集成出一个类就可以了。

第3章俄罗斯方块的基本玩法

3.1游戏规则

俄罗斯方块游戏规则是对于随机给出不同的形状(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型)下落填充给定的区域,若填满一条便消掉,记分,当达到一定的分数时,过关,每关方块下落的速度不同,若在游戏中各形状填满了给定区域,为输者。

3.2游戏功能和操作

3.2.1游戏功能

游戏界面需求:

良好的用户界面,有关数显示和分数显示。

让方块在一定的区域内运动和变形,该区域用一种颜色表明,既用一种颜色作为背景,最好设为黑色。

还需用另一种颜色把黑色围起来,宽度适中,要实现美感。

游戏形状(方块)需求:

良好的方块形状设计,绘制七种常见的基本图形(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型),各个方块要能实现它的变形,可设为顺时针或逆时针变形,一般为逆时针。

键盘处理事件:

方块下落时,可通过键盘方向键(上、下、左、右键)对该方块进行向上(变形),向下(加速)、向左、向右移动。

显示需求:

当不同的方块填满一行时可以消行,剩余方块向下移动并统计分数。

当达到一定的分数时过关。

3.2.2基本操作

基本操作就是点击程序运行键游戏开始运行,通过键盘的上、下、左、右方向控制键来控制产生随机图形的位置和形状,即方向键上来控制图形的旋转,方向键下加速图形下落速度,方向键左和右分别控制图形左右移动,从而完成整个游戏的控制。

第4章整体设计

4.1设计框图

俄罗斯方块游戏是对于随机给出不同的形状(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型)下落填充给定的区域,若填满一条便消掉,记分,当达到一定的分数时,过关,每关方块下落的速度不同,若在游戏中各形状填满了给定区域,为输者。

游戏流程图如图4-1所示.

图4-1俄罗斯方块游戏流程图

4.2俄罗斯方块功能部分

程序一运行,游戏就开始了,出现的方块是随机的,然后你就用键盘上面的上下左右这四个方向键来控制游戏的运行。

其中上键,控制游戏方块的形状改变,下键控制它下落的速度,左右键分别控制左右。

当填满一层后,会自动消除。

若游戏方块上顶之后不再出新的方块,那游戏结束。

以下是主要功能模块设计。

4.2.1方块装载

定义一个随机变量,然后调用随机函数(rand=(int)(Math.random()*7)+1),

所取得的随机数在1到7之间,用这7个数字表示7中常见的方块,并从7种方块中随机抽取图形。

每一种方块都是由两个一维数组(x,y)表示的,其中一个用来保存方块所在行,另一个数组用来保存方块所在列,这样有利于方块在屏幕上准确而有活动的定位。

所有7种图形都是在三行三列的地图中研究后给出的坐标,给出的坐标也是方块在游戏地图中靠最顶行的坐标。

这就好象方块存在于一个三行三列大小的图形中而够成的一张图片。

图片的运动也就是方块的运动,这样,要实现方块的变形,就要在三行三列的图形中定义一个最左上角的基点,方块运动,基点也跟着运动。

基点坐标在加载方块是加载,基点的存储空间在加载每个方块数组的最后定义。

这样使得方块在游戏地图中的每一个地方都可以变形。

也不会因为变形而方块在游戏地图中的变动很厉害,出现瞬移的现象。

图形坐标装载完后,先判断在方块的下一行是否已有方块,如果有则说明方块以到达游戏地图的顶端,游戏将结束。

没有则先把方块坐标保存,这是为了在方块向下移动的时候在它的后面不会有虚假的方块,因为方块向下运动,记录的是新一行的方块坐标,但旧一行的没有消掉,所以要先旧方块的坐标保存起来,搽掉旧方块再显示方块。

这样也会减少屏幕的闪烁问题。

如图4-2所示。

图4-2方块装载

4.2.2处理键盘事件

keyDown()是处理按键的事件,刚开始运行程序时,游戏还没有开始,这时除S键(解键盘锁的键)是有用外,其他的键都给锁住,这样可以避免键盘过早的控制游戏。

在判断是否在S键的语句中还加了对游戏锁取反并判断是否为真的语句,两个语句同时成立时,才会解开游戏锁,程序开始时,游戏还没有开始,游戏锁是关的,但是取反后它就是真的,所以只要按下S键后,两个语句都成立。

这样做是为了在游戏开始时再按下S键,游戏不会重新开始,即游戏开始后,S键就没有用了。

按下S键后,游戏锁才被解开,键盘也被解开。

每当有按键,也就是方块要产生变化时,先保存方块的坐标,便于清理旧方块,显示新方块。

当方块要进行上(变形)、下、左、右变化时,先对方块将要移动到的位置进行判断,判断是否有障碍,有则保持原来的位置不变,没有则根据所按的键执行相关的操作。

再把方块的位置显示在屏幕上。

方块的移动其实也只是对行或列坐标的增减而己。

4.2.3判断满行及消行

满行判断及消行是到达事件中的一部分,是方块堆积,并对每个小方块所在行个数统计后,利用循环语句从屏幕最底行依次向上对有方块的每一行进行判断,判断是不是空行,如果那一行是空行则证明它以上的所有行都将不会有方块,也就不必要向上查找了。

不是则判断当前行是否满行的,如果满行则看有个连续几个满行的在一起。

然后再判断是否有行满的情况,否的话就继续检查上一行。

不然就进行消行处理及方块下移。

最后再向上查找满行情况直到本行为空时为止。

消行及方块下移:

当有行满时,则说明需要消行,有消行那么所有方块则要下移。

当本行满时,则以间隔为1向上查找,当遇到所查找的行也是满行,那么它的间隔自增1,然后继续向上查找,直到那一行不是满行的情况,则将此行所有数据信息移到本行,以后本行以上的每行都会以这个间隔去判断它将获得的那行数据,可以则继承,不然和上述一样操作。

如果将获得的那行数据为空行,则只须对本行的数据清空即可,那么方块下移也就完成。

4.2.4显示控制

方块组成:

小方块是由三个不同颜色的正方形方框组成,其中正方形有实心

的也有空心的,这样使得方块变得好看点能看出堆积的视觉效果.每个图形是由四个小方块拼凑而成的。

显示控制时先看之前是否发生过消行事件,如果发生了清除屏幕所有方块、成绩和关数,全部重新绘置,使得消行视觉化。

然后再清除旧图形,绘制新图形。

其实消除屏幕只是将屏幕重新画一次而己,清除成绩和关数,也只是在有显示成绩和关数的地方画一个白色的框而己。

重新绘置新点,就是从下向上判断看哪些地方有方块的就得新画一个小方块,没有的不画。

第5章实验结果

通过键盘的上、下、左、右方向控制键来控制产生随机图形的位置和形状,即方向键上来控制图形的旋转,方向键下加速图形下落速度,方向键左和右分别控制图形左右移动,从而完成整个游戏的控制。

运行结果如下:

(1)运行程序出现俄罗斯方块界面,产生随机给出不同的形状(长条形、Z字形、反Z形、田字形、7字形、反7形、T字型)开始慢慢下落,如图5-1所示:

图5-1俄罗斯方块初始界面

(2)控制游戏方块的形状改变,下键控制它下落的速度,左右键分别控制左右。

当填满一层后,会自动消除,如图5-2所示。

图5-2消除一行

(3)若游戏方块上顶之后不再出新的方块,那游戏结束,如图5-3所示。

图5-3游戏结束

结论

综合实践部分,是培养学生动手能力,思维能力的重要环节。

这次通过综合设计,我完成了俄罗斯游戏的软件开发任务。

在整个开发过程中遇到了很多问题,如方块的装载和变形、屏幕太闪烁的问题、满行判断及消行的处理。

但最终都被我一一解决。

这个游戏虽然玩起来比较简单,但是用语言来把它编写出来,其实还是需要一定思维能力的。

回顾这个设计过程,我学到了许多书本上没有学到的知识。

通过这次自己制作的软件,丰富了自己的实践技能,扩展了本专业的知识面,使我受益非浅,同时也体验到了搞软件开发的困难度。

在这次设计的同时,我又从中学到了许多东西。

在这里非常感谢指导自己的老师和帮助自己的同学!

参考文献

[1].齐治昌、谭庆平、宁洪编著,《软件工程》北京:

高等教育出版社1997年7月

[2].印旻编著,《java语言与面向对象程序设计》北京:

清华大学出版社2000年9月

[3].荣钦科技编著,《Java2游戏设计》北京:

清华大学出版社2004年11月

[4].朱福喜编著,《Java程序设计技巧与开发实例》北京:

人民邮电出版社2004年2月

[5].JSP编程技巧/清宏计算机工作室编著.北京:

机械工业出版社,2001.1

[6].精通JBuilder3环境下的JAVA编程/锐思创作室编著.北京:

人民邮电出版社.,2001.1

[7].深入JAVAServlet网络编程.清华大学出版社

[8].Struts开发入门与项目实践.北京:

人民邮电出版社,2005.8

附录

主要程序:

(1)Controller控制整个游戏的运行

packagetext01;

importjava.awt.event.KeyAdapter;

importjava.awt.event.KeyEvent;

importjavax.swing.JOptionPane;

/*

*控制类,控制图形,障碍物,处理逻辑和响应事件

*/

publicclassControllerextendsKeyAdapterimplementsShapeListener{

Shapeshape;

Groundground;

ShapePanelshapePanel;

ShapeFactoryshapeFactory;

/*

*

*controller的方法

//构造

publicController(ShapeFactoryshapeFactory,ShapePanelshapePanel,Groundground){

System.out.println("

Controller的构造"

);

this.shapePanel=shapePanel;

this.shapeFactory=shapeFactory;

this.ground=ground;

}

publicvoidnewGame(){

Controller的newGame方法开始新游戏"

shape=shapeFactory.setShape(this);

//按键响应方法

publicvoidkeyPressed(KeyEvente){

您按了一个按键"

//TODO自动生成的方法存根

switch(e.getKeyCode()){

caseKeyEvent.VK_UP:

System.out.println("

1232"

if(ground.isMoveable(shape,shape.ROTATE))

shape.roate();

break;

caseKeyEvent.VK_DOWN:

if(ground.isMoveable(shape,shape.DOWN))

shape.moveDown();

caseKeyEvent.VK_LEFT:

if(ground.isMoveable(shape,shape.LEFT))

shape.moveLeft();

caseKeyEvent.VK_RIGHT:

if(ground.isMoveable(shape,shape.RIGHT))

shape.moveRight();

}

shapePanel.display(ground,shape);

@Override

publicvoidshapeMoveDown(Shapeshape){

Controller实现ShapeListener接口的shapeMoveDown方法"

//synchronized保证在同一时刻最多只有一个线程执行该段代码

publicsynchronizedbooleanisShapeMoveDownNable(Shapeshape){

Controller实现ShapeListener接口的isShapeMoveDownNable方法"

if(this.shape!

=shape){

returnfalse;

//shapePanel.display(ground,shape);

if(ground.isMoveable(shape,shape.DOWN)){

returntrue;

ground.acceptShape(this.shape);

if(!

ground.isFull()){//判断能否产生新图形结束游戏

this.shape=shapeFactory.setShape(this);

//else{

//this.shape=shapeFactory.setShape(this);

//JOptionPane.showConfirmDialog(null,"

游戏结束"

"

提示:

"

JOptionPane.YES_NO_OPTION);

//}

returnfalse;

}

(2)图形产生

importjava.util.Random;

*图形生产

publicclassShapeFactory{

privateintstastus;

//数组中的标志用来判断是否画图形

*定义三维数组实现图形并初始化

privateintshapes[][][]=newint[][][]{

{

{1,0,0,0,

1,1,1,0,

0,0,0,0,

0,0,0,0

},

{1,1,0,0,

1,0,0,0,

{1,1,1,0,

0,0,1,0,

0,0,0,0,

{0,1,0,0,

0,1,0,0,

1,1,0,0,

}

},

{1,1,1,0,

1,0,0,0,

0,0,0,0,

0,0,0,0

},

{1,1,0,0,

0,1,0,0,

{0,0,1,0,

1,1,1,0,

0,0,0,0,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 小学教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1