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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

俄罗斯方块JAVA课程设计实验报告.docx

1、俄罗斯方块JAVA课程设计实验报告一引言 1.1运行环境 操作系统:Microsoft Windows XP 程序语言:Java 开发工具:JCreator LE 4.50二需求分析 2.1开发背景 Java是现在全球最时髦的开发工具之一,它拥有一套庞大且完善的类库,内置了其他语言需要靠库甚至是操作系统才能支持的功能。Java的产生与流行是Internet发展的客观要求。如今越来越多的应用程序是Java开发的,用Java开发的应用程序可在任何计算平台安全运行。Java作为一个分布式的,面向对象的程序设计方法,可以让位于任何地方的任何计算机使用网络上的应用程序。可以说Java是一个万能的开发平台

2、,用Java编程成为一种趋势。2.2设计目的通过本次课程设计了解和掌握JDK开发环境以及JCreator等集成开发环境,巩固所学的Java知识及编程机制。了解Java程序开发流程,学会构思比较复杂的课程设计思想;能合理的利用本学期所掌握的多线程、类、GUI等知识编写一个较为复杂的Java应用软件。掌握面向对象成学设计的有关概念和开发方法,锻炼团队合作开发精神。2.3功能需求本课程设计的目标是设计一个名为俄罗斯方块的游戏软件,实现其界面的初始化,程序运行,退出,和相应数据处理。能实现游戏的基本功能,类似下移、左移、右移、翻转、得分累加等,并在规定时间内达到课题所需要实现的功能及要求。三概要设计

3、3.1设计思想1)使用JPanel框架,并添加按钮、文本框等对象,用布局管理器定义各个对象的分布。2)设计一个二维数组来表示方块,默认为不显示。3)设计一个设计定时线程来控制方块的下落速度。4)设计七种形状的方块,每种形状定义四种形态来实现方块变换5)每个方块落到底后判断是否消沉。 3.2系统架构 四详细设计4.1事件处理用actionPerformed()方法实现选择不同类型方块以及控制方块变化功能的实现,用keyPressed()方法实现用键盘控制方块变化功能的实现,在FinalElsBlock.java类中实现事件的监听。4.2界面设计 游戏基本界面图4.3游戏画布类LeftShowCa

4、nvas类继承Canvas类,实现方块在画布上的显示,主要代码如下: package game3;import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*;class LeftShowCanvas extends Canvaint maxrows, maxcols; / 画布最大行数,列数int unitSize; / 单元格的大小,小正方格int unitState; / 每个小方格的状态 0、1、2表示RightPanel rp;int score;public

5、LeftShowCanvas(RightPanel rp) this.rp = rp; score = Integer.valueOf(rp.jtf.getText(); maxrows = 20; maxcols = 10; unitSize = 20; unitState = new intmaxrowsmaxcols; initCanvas(); public void initCanvas() / 初始化,画布方格 for (int i = 0; i maxrows; i+) for (int j = 0; j maxcols; j+) unitStateij = 0;public v

6、oid paint(Graphics g) for (int i = 0; i maxrows; i+) for (int j = 0; j maxcols; j+) drawUnit(i, j, unitStateij); / 画方格 if (i = 3) g.setColor(Color.RED); g.drawLine(0, (i + 1) * (unitSize + 1) - 1, maxcols * (unitSize + 1) - 1, (i + 1) * (unitSize + 1) - 1); public void drawUnit(int row, int col, int

7、 tag) / 画方格 unitStaterowcol = tag; / 记录状态 Graphics g = getGraphics(); switch (tag) case 0: / 初始黑色 g.setColor(Color.BLACK); break; case 1: / 方格黑色 g.setColor(Color.RED); break; case 2: g.setColor(Color.BLUE); break; g.fillRect(col * (unitSize + 1), row * (unitSize + 1), unitSize, unitSize); 4.4方块类方块类,

8、定义了七种形状的方块,每种形状有四种状态,实现用键盘控制方块的的左移,右移,下移以及翻转。具体代码如下: package game3;import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*;class Block implements Runnable/ 方块类 static final int type = 7, state = 4;static final int patten = / 16进制代表每种方块 0x0f00, 0x4444, 0x0f00, 0x4

9、444 ,/ 长条 0x6600, 0x6600, 0x6600, 0x6600 ,/ 正方块 0x04e0, 0x0464, 0x00e4, 0x04c4 ,/ 三角 0x08e0, 0x0644, 0x00e2, 0x044c ,/ 弯折一下,1、3,1左 0x02e0, 0x0446, 0x00e8, 0x0c44 ,/ 弯折一下,1、3,1右 0x0462, 0x006c, 0x0462, 0x006c ,/ 弯折两下,1、2、1,1左上;1右下 0x0264, 0x00c6, 0x0264, 0x00c6 / 弯折两下,1、2、1,1右上;1左下 ; private int bloc

10、kType = -1; / 方块类型,7种,大小范围0-6 private int blockState;/ 方块状态,4种,大小范围0-3 private int row, col; / 方块所在的行数,列数 private int oldRow, oldCol; / 记录方块变化前所在的行数,列数 private int oldType = -1, oldState; / 记录方块变化前的类型和状态 private int isfall = 1; / 标记若画,画成什么颜色的, / 1表示可以下落,画为红色;0表示不可下落,画为蓝色 private boolean end = false;

11、/ 结束标记,为true时表示结束 LeftShowCanvas lsc; public Block(LeftShowCanvas lsc) this.lsc = lsc; row = 0; col = 3; oldRow = row; oldCol = col; public void reInit() / 一个方块无法下落后,重新初始化 blockType = -1; isfall = 1; public void reInitRowCol() / 初始化方块起始点 row = 0; col = 3; public void run() / 下落线程 lsc.requestFocusInW

12、indow(); / 获得焦点 while (!end) int blocktype = (int) (Math.random() * 100) % 7; drawBlock(blocktype); do try Thread.sleep(500); / 控制下落速度 catch (InterruptedException e) while (fallMove(); / 下落 for (int j = 0; j lsc.maxcols; j+) / 判断是否结束 if (lsc.unitState3j = 2) end = true; public synchronized void draw

13、Block(int blockType) / 画方块 if (this.blockType != blockType) blockState = (int) (Math.random() * 100) % 4; / 状态 this.blockType = blockType; / 样式 if (!isMove(3) / 判断是否能画 this.blockType = oldType; this.blockState = oldState; return; int comIndex = 0x8000; if (this.oldType != -1) for (int i = oldRow; i

14、oldRow + 4; i+) for (int j = oldCol; j 1; comIndex = 0x8000; for (int i = row; i row + 4; i+) for (int j = col; j 1; if (isfall = 0) / 无法下落,先判断是否能消行,再重新初始化 / lsc.deleteFullLine(row,col); reInit(); reInitRowCol(); oldRow = row; oldCol = col; oldType = blockType; oldState = blockState; public void lef

15、tTurn() / 旋转,左转 if (this.blockType != -1) blockState = (blockState + 1) % 4; if (isMove(3) drawBlock(blockType); else blockState = (blockState + 3) % 4; public void leftMove() / 左移 if (this.blockType != -1 & isMove(0) col -= 1; drawBlock(blockType); public void rightMove() / 右移 if (this.blockType !=

16、 -1 & isMove(1) col += 1; drawBlock(blockType); public boolean fallMove() / 下移 if (this.blockType != -1) if (isMove(2) row += 1; drawBlock(blockType); return true; else isfall = 0; drawBlock(blockType); return false; return false; public synchronized boolean isMove(int tag) / 左 0 ,右 1 ,下 2 ,旋转 3 int

17、 comIndex = 0x8000; for (int i = row; i row + 4; i+) for (int j = col; j lsc.maxrows - 1 | j lsc.maxcols - 1 | lsc.unitStateij = 2) return false; comIndex = comIndex 1; return true; 4.5消行并统计分数 public void deleteFullLine(int row) / 判断此行是否可以消,同时可消就消行 for (int j = 0; j 3; i-) / 到此即为可消,将上面的移下消此行 for (in

18、t j = 0; j maxcols; j+) drawUnit(i, j, unitStatei - 1j); score+; rp.jtf.setText(String.valueOf(score);五.使用说明5.1游戏开始运行5.2填满一行即消行得分 5.3列被填满,则游戏自动结束 六课程设计总结与体会本次课程设计花费我们小组一个月的时间来完成,从设计开始选择课题到最终完成课程设计,小组成员分工明确,相互合作,按时完成相关任务。通过这次实验,我们学习到了很多Java编码成知识,同时对这个学期的课本所学的知识有了进一步巩固,特别是多线程,Swing组件和事件等能更熟练的运用。这次实验过后

19、,我们发现,动手比看书更能获取实际有用的知识。真理是从实践中得知的,而且也只有实践才能检验真理。而这次实验也加强了我们这些方面的理解能力,对书面上的东西实际操作在具体项目上有了一个更清晰的认识。我们还意识到一个大的程序,在写代码之前,一定要有良好的需求分析和结构设计,应该占整个程序设计的大部分时间,一个好的程序,分析设计应该要非常充分,这样才不至于代码写了一半才发现很多错误。很多具体代码操作之前的设计规划和构建才是优秀程序设计的灵魂。设计过程中,我们另一个大的体会就是合作的好处,通过相互帮助,大大的提高了工作效率。同时我们也发现自己的不足之处。而且让我感受比较深的是,做事细心很重要,所谓细节决定成败。程序还有很多不足,在今后的日子里,我们会虚心向老师同学请教,尽自己最大的努力做到最好。七参考文献1. 李芝兴,杨瑞龙.Java程序设计之网络编程.M.北京:清华大学出版社 2. 印旻编.Java语言与面向对象程序设计.M.北京:清华大学出版社 3. 朱站立,沈伟.Java程序设计实用教程.M.北京:电子工业出版社指导教师评语: 指导教师签名: 年 月 日成 绩 教研室审核意见:教研室主任签字: 年 月 日(此为最后一页)

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

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