ImageVerifierCode 换一换
格式:DOCX , 页数:38 ,大小:276.10KB ,
资源ID:2979838      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2979838.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《Java程序设计》实训报告.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《Java程序设计》实训报告.docx

1、Java程序设计实训报告Java 程序设计实训报告 俄罗斯方块 一、 实训任务及要求:1.1、实训任务1.运用 Java 实现小游戏的开发2.了解 Java 开发项目的流程3.掌握规划,设计,开发,测试的能力1.2、实训要求熟悉java的编程环境J2SDK掌握Application 和Applet的程序结构,并能熟练编写和调试两类程序。熟练使用各种常用类库。理解 JDK 的事件处理机制,掌握 java.awt 、 javax.swing , javax.swing.event 中的 GUI 标准组件的用法,学会合理运用布局策略、综 合运用各种界面元素,编程构造满足应用需要的图形工作界面。二、需

2、求分析:1.课程设计的目的和意义俄罗斯方块游戏是一个经典的小游戏,由于它简单有趣,因而得到了广泛的流行,男女 老幼都适合。而俄罗斯方块游戏的设计工作复杂且富有挑战性,它包含的内容多,涉及的知 识广泛,与图形界面联系较大,包括界面的显示与更新、数据收集等,在设计的过程中,必 将运用到各方面的知识,这对于 visualbasi 语言设计者而言,是个很好的锻炼机会。2.系统功能设计1.本系统主要设计以下几种功能2.1、游戏难度选择功能3.游戏难度选择界面设置在程序运行开始时,一共有九种难度供玩家选择,每选一级难 度,都会相应地显示出代表该难度的图片。开始时不设置任何默认的难度,如果玩家不 选难度直接

3、按“ Enter ”进入,将会弹出提示框,提示其先选难度再进入。4.2、方块下落、变形功能5.在整个俄罗斯方块游戏中,方块的设计是核心。这里设计了一个方块类: Square( ) ,用来生成方块以及实现块的左移、右移、向下、变形、重画、同步显示、初始化新块等。6.3、自动升级功能7.当分数累积到一定大小时 ,系统将自动为玩家提高难度 。这里设置了每消除 10 行方块, 就增加一级难度。当难度增加的时候,方块会相应地改变颜色,以作为对玩家的提示。8.4、游戏音乐功能9.游戏开始音乐就自动播放,游戏暂停与结束时音乐相应消除。10.5、获取帮助功能11.这里设置了一个类,用来显示帮助,按 F1 键就

4、能弹出窗口,显示游戏规则。3.系统功能设计分析1. 俄罗斯方块游戏根据功能的不同,设置了如下 12 个类: Square, Command, GameArea, GameSetting, GameOver, Help, ImagePanel, JieMian, MyPanel, MyTimer, PlayMidi, WinListener ,每个类的描述如下:2.1 、 Square ,方块类。这个类中定义了生成方块的方法,用二维数组 int pattern ,存放 7 种方块的四种状态。在构造方法中以随机的形式生成方块,同时提供了以下几种方 法: reset( ) , leftTurn( )

5、 , leftMove( ) , rightMove( ) , fallDown( ) , assertValid(int t,int s,int row,int col) , dispBlock(int s) 。分别实现方块的重画、翻转、左移、右移、下落、同步显示等功能。2.2 、 Comman,d 处理控制类。这是一个实现 ActionListener 接口的类,主要处理点击按钮事件。类中定义了三个 int 型变量: button_play ,button_quit , button_pause ,和一个 boolean型的变量:pause_resume,并赋值。在 GameArea类中通

6、过事件响应,在按钮执行 方法中调用其值,使用 switch 语句,根据不同按钮不同的值,来响应不同的事件。2.3、 GameArea游戏界面类。GameArea继承了 JFrame,是俄罗斯方块的主要游戏界面。这 个类定义了 GameSetting类的gameScr对象和ImagePanel类的imagepanel对象作为游戏区 域面板和控制区域面板。 在游戏区域 ,主要是根据相应格子的设置标志来显示相应的图形图 片,这样就实现了俄罗斯方块的实时显示。2.4、 GameSetting, 游戏画布类。这个类生成的对象将作为游戏界面的方块下落区域,画布的设置为 15 行 10 列,当中的方格边长为

7、 30,类中还定义了一个二维数组 int scrArr 作为屏幕数组, 表示每一个方格 。游戏区域中每一个方格是否存在游戏方块是由该方格的值 来决定的,如果该方格的值为 1,则表示该方格中存在游戏方块;如果该方格中的值为 0,则表示该方格中不存在游戏方块,因此二维数组用于记录游戏区域中每个小方格的值。此 外,类中还定义了画方块的方法 ,根据不同的难度画出不同颜色的方块 。单击 Play 按钮时, 系统调用 initScr( ) 方法,初始化屏幕,将屏幕数组清零。当满足满行删除的条件时,系 统调用 deleteFullLine( ) 方法,进行删行加分,而且每删除十行,难度自动增加一级,方 块颜

8、色改变,并在难度显示框中相应显示。2.5 、 GameOve,r 游戏结束弹出提示框类。当游戏结束时,系统弹出提示,包括玩家分数以 及询问玩家要继续游戏还是退出。2.6、 Help,帮助类。在游戏界面,按 F1键,弹出提示窗口,获取帮助。2.7、 ImagePanel ,背景图片类。这个类继承了 JPanel 类,用来作为游戏界面中控制区域的 容器,并添加图片。2.8 、 JieMian ,主界面类。这个类继承了 JPanel 类,作为游戏的第一个界面,也是难度选 择界面。定义了 9 个单选按钮 ,当玩家未选任何难度就按 Enter 时,系统会弹出一个提示框, 提示玩家先选难度再进入。2.9、

9、 MyPanel,重写 MyPanel类,使 Panel的四周留空间。2.10、 MyTimer,定时线程类。类中定义了一个 run ()方法,用sleep ()函数实现方块下 落的快慢,即调节难度。2.11 PlayMidi,添加音乐类。在游戏过程中添加背景音乐。2.12、WinListener,关闭窗口类。4.主要类的UML类图表示1.Square2.in t pattern3.int SquareType4.int SquareState5.int blockState6.int row,col7.GameSett ing scr8.+ void reset()9.+ void left

10、Turn()10.+ void leftMove()11.+ void rightMove()12.+ boolea n fallDow n()13.boolea n assertValid(i nt t,i nt s,i nt row,i nt col)14.+ synchroni zed void dispBlock(i nt s)5.(Square 类的UML类图表示)15.GameSett ing16.int un itSize17.int rowNum18.int colu mnNum19.int maxAllowRowNum20.int Square In itRo21.int S

11、quare In itCol22.in t scrArr23.Square b24.initScr()25.+ void pain t(Graphics g)26.+ void draw Un it(i nt row,i nt col,i nt type)27.+ Square getBlock()28.+ int getScrArrXY(i nt row,i nt col)29.+ int getI ni tRow()30.+ in t getI ni tCol()31.void deleteFullLine()32.boolean isGameEnd()33.+ void keyPress

12、ed(KeyEve nt e)三、详细设计:1模型层设计1)图形的产生通过图形工厂类 ShapeFactory的getShape(ShapeListener listener)方法随机产生方块的某种状态,这里运用了工厂设计模式, 这种设计模式是为了实现高内聚低耦合而存在的, 这种设计模式的通俗解释就是:你想要一个产品 ,你需要让工厂给你生产一个,你要告诉工厂你要生产什么产品,就把你需要生产的这个产品当做参数传给工厂类的生产产品的方法, 然后根据你传进来的产品, 而决定工厂人生产什么产品, 产生出来产品后,最后要返回您要的这个东西。随机产生一个数一字形 Z字形 反Z形 7字形 反7形 倒T形 田

13、字型2)图形数据结购定义一个4x4方阵,共16个小格。用“ 0”和“ 1”来表示每个方格是绘制还是空白,由此可以组合出多种图形,如图所示:其中图表示为0,0,0,0,1,1,1,1 ,0,0,0,0,0,0,0,0其中图一表示为0,0,0,0,0,1,1,0 ,0,1,1,0,0,0,0,0其中图三表示为0,0,0,0,0,1,0,0 ,0,1,1,1,0,0,0,0其中图四表示为0, 0, 0, 0,0, 1, 0, 1 ,0,1,1,0,0,0,1, 0方块的旋转是通过绘制4个方向的方块,在不同旋转角度显示不同方向的方块来完成的。所以程序要控制方块的旋转方向,只要控制显示哪副图就可以了。本

14、游戏是用一个三维数组 in t shapes = new in t;作为存储方块的数据结构来保存方块的28种状态的。代码如下:public final static int STYLES = / 共 28 种状态 0x0f00, 0x4444, 0x0f00, 0x4444 , / 长条型的四种状态 0x04e0, 0x0464, 0x00e4, 0x04c4 , / T型的四种状态 0x4620, 0x6c00, 0x4620, 0x6c00 , /反Z型的四种状态 0x2640, 0xc600, 0x2640, 0xc600 , / Z型的四种状态 0x6220, 0x1700, 0x2230, 0x0740 , / 7型的四种状态 0x6440, 0x0e20, 0x44c0, 0x8e00 , /反7型的四种状态 0x0660, 0x0660, 0x0660, 0x0660 , /方块的四种状态;/*构造函数*/public RussiaBlock(int y, int x, int level, int style) this.y = y; this.x = x;this.level = level; moving = true; pausing = false;this.style = style;

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

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