java课程设计报告-俄罗斯方块

合集下载

(完整word版)Java俄罗斯方块游戏实验报告

(完整word版)Java俄罗斯方块游戏实验报告

嘉应学院计算机学院实验报告课程名称:JAVA课程设计开课学期:2011—2012年第一学期班级:093指导老师:项目题目:俄罗斯方块学生姓名:学号:提交时间:2011-11—13一、概述了解开始使用Jigloo 并进而使用其高级功能(例如可视化继承)使用XML、XML Schema 和JAXB熟悉事件处理程序和数据绑定的UI 编程概念了解AWT/Swing 或SWT3)图形用户界面设计;4)AWT组件库。

教师提出的要求:在实现程序应该有的功能至上再扩充一些功能。

3。

课程设计的主要设计思想俄罗斯方块应有如下功能:1、在二维的平面里用各种随即产生的方块堆积木,每填满一行消去一行,当到达顶部时,游戏结束。

2、玩家能通过方向键来控制方块的转动,左移,右移和直落。

3、每种类型的方块都有颜色.游戏有预览的功能,能告诉玩家下一个将出现什么类型的方块。

4、游戏能够在玩的过程中,给出玩家的分数,分数是由随即方块的类型决定的,每堆一个方块,就将分数累加到总分中。

5、游戏有暂停、开始和结束、游戏规则、游戏说明等控制。

二、类模块设计通过对功能要求的分析,将俄罗斯方块游戏的功能划分为2个类模块,它们是:Tetris类:该类包含main方法,应为应用程序的主类.该类用来创建游戏的用户界面,整个程序从该类的main方法开始执行。

Tetrisblok类:用来设计游戏界面.游戏界面显示在由Tetrisblok类创建的整个用户界面的中(Center)区,游戏的即时分数、堆积木的二维平面即时效果图及方块的预览功能都在整个类里面实现。

用来封装俄罗斯小方块。

一个方块的属性是由方块1位置即x和y的坐标、颜色决定的。

三、详细设计1、Tetris类的设计Tetris类中包含main方法,为主类.在主类中创建了JFrame窗口类的一个实例,设计如下:成员变量:成员方法:2、Tetrisblok类的设计Tetrisblok类用来设计游戏的用户界面。

java课程设计——俄罗斯方块

java课程设计——俄罗斯方块

一、程序功能介绍本程序实现了俄罗斯方块游戏的基本功能,游戏中玩家可以做的操作有:1.中间一个方块不变其他三个以90度为单位向右旋转方每一格块,此程序会判断方块有没有空间让他实现旋转,即判断是否越界,若越界则不可以实现旋转。

2.以格子为单位左右移动方块,下方向让方块加速落下,空格键则急速下落。

3.方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的随机图形会出现在区域上方开始落下。

4.当区域中某一列横向格子全部由方块填满,则该列会自动消除并成为玩家的得分。

同时删除的列数越多,得分指数上升。

5.当固定的方块堆到区域最上方,则游戏结束。

(此功能尚未实现)6.此程序还不完善,开始,暂停,重来,结束都没有实现,有待改进。

二、课程设计过程1、总体概述:设计一个简单的游戏,能够将Java的面向对象程序思想应用到课程设计中,用到Java 中常用的组件以及相应的布局方式。

完成设计、编程、测试等过程,给出设计思路、设计说明书、主要的代码的说明、源代码以及可运行的游戏程序。

2、各个子类的定义:1.定义俄罗斯方块类,通过可视化界面设定一个游戏界面窗口,用一个10*20表示游戏区域。

public class TetrisGame extends JPanelJFrame jf=new JFrame("俄罗斯方块");jf.setSize(540,600);jf.setVisible(true);public static final int ROWS=20;public static final int COLS=10;2.定义7种俄罗斯方块的基本类型,分别以S、Z、L、J、I、O、T这7个字母的形状来命名。

先定义四方格主类:public class Tetromino;再定义它的7个子类:S、Z、L、J、I、O、Tprivate static class S extends Tetromino;private static class Z extends Tetromino;private static class L extends Tetromino;private static class J extends Tetromino;private static class I extends Tetromino;private static class O extends Tetromino;private static class T extends Tetromino;3.通过switch语句,随机输出方块到游戏区域顶部。

JAVA课程设计 俄罗斯方块

JAVA课程设计  俄罗斯方块

JAVA语言实现俄罗斯方块的代码实现
初始化游戏界面:创建JFrame对象,设 置大小和标题
游戏结束处理:判断游戏是否结束,显 示得分和重新开始按钮
绘制游戏网格:使用二维数组存储游戏 状态,绘制每个方块
优化游戏性能:使用双缓冲技术,提高 游戏流畅度
控制游戏逻辑:监听键盘事件,实现方 块的移动、旋转和消除
游戏逻辑的实现
游戏界面:显示游戏区域、得分、等级等信息 游戏操作:通过键盘或鼠标控制方块的移动和旋转 游戏规则:方块掉落、消除、得分等规则 游戏结束:当游戏区域被填满或达到一定分数时结束游戏
游戏音效和动画效果的实现
音效:使用Java的 Audio类播放音效 文件
动画效果:使用 Java的Swing库中 的JPanel和JLabel 组件实现动画效果
易 于 学 习 : J AVA 具 有 简 洁 的 语 法 和 丰 富 的类库,使得学习JAVA语言相对容易。
JAVA语言在游戏开发中的应用
JAVA语言具有跨平台性,可以在多种操作系统上运行,适合游戏开发。 JAVA语言具有丰富的API,可以方便地实现游戏功能。 JAVA语言具有强大的图形处理能力,可以方便地实现游戏画面。 JAVA语言具有良好的安全性和稳定性,适合大型游戏的开发。
Hale Waihona Puke 05 课程设计的总结和展望
课程设计的收获和不足
收获:掌握了JAVA编程的基本知识和技能,提高了逻辑思维能力和解决问题的能力。
不足:在课程设计中遇到了一些困难,如代码编写错误、程序运行异常等,需要加强实践和 经验积累。
展望:希望在未来的课程设计中能够更加熟练地运用 JAVA编程,提高程序设计的质量和效率。
打包发布:使用JAR文件打包游戏,方 便分发和运行

《Java程序设计》实训报告范文-俄罗斯方块

《Java程序设计》实训报告范文-俄罗斯方块

《Java程序设计》实训报告范文-俄罗斯方块——《俄罗斯方块》一、实训任务及要求:1.1、实训任务1.运用Java实现小游戏的开发2.了解Java开发项目的流程3.掌握规划,设计,开发,测试的能力1.2、实训要求熟悉java的编程环境J2SDK,掌握Application和Applet的程序结构,并能熟练编写和调试两类程序。

熟练使用各种常用类库。

理解JDK的事件处理机制,掌握java.awt、java某.wing,java某.wing.event中的GUI标准组件的用法,学会合理运用布局策略、综合运用各种界面元素,编程构造满足应用需要的图形工作界面。

二、需求分析:1.课程设计的目的和意义2.系统功能设计1.本系统主要设计以下几种功能2.1、游戏难度选择功能3.游戏难度选择界面设置在程序运行开始时,一共有九种难度供玩家选择,每选一级难度,都会相应地显示出代表该难度的图片。

开始时不设置任何默认的难度,如果玩家不选难度直接按“Enter”进入,将会弹出提示框,提示其先选难度再进入。

4.2、方块下落、变形功能5.在整个俄罗斯方块游戏中,方块的设计是核心。

这里设计了一个方块类:Square(),用来生成方块以及实现块的左移、右移、向下、变形、重画、同步显示、初始化新块等。

6.3、自动升级功能7.当分数累积到一定大小时,系统将自动为玩家提高难度。

这里设置了每消除10行方块,就增加一级难度。

当难度增加的时候,方块会相应地改变颜色,以作为对玩家的提示。

8.4、游戏音乐功能9.游戏开始音乐就自动播放,游戏暂停与结束时音乐相应消除。

10.5、获取帮助功能11.这里设置了一个类,用来显示帮助,按F1键就能弹出窗口,显示游戏规则。

3.系统功能设计分析GameArea,GameSetting,GameOver,Help,ImagePanel,JieMian,MyPane l,MyTimer,PlayMidi,WinLitener,每个类的描述如下:2.1、Square,方块类。

java俄罗斯方块课程设计

java俄罗斯方块课程设计

java俄罗斯方块课程设计一、课程目标知识目标:1. 学生能理解Java语言的基本语法和面向对象编程思想;2. 学生能掌握Java图形用户界面编程,熟练运用Swing组件;3. 学生能了解俄罗斯方块游戏的规则和逻辑。

技能目标:1. 学生能够运用Java语言编写简单的图形用户界面程序;2. 学生能够运用面向对象编程思想设计和实现俄罗斯方块游戏;3. 学生能够通过调试和修改代码,优化游戏性能。

情感态度价值观目标:1. 学生培养编程兴趣,激发学习Java语言的热情;2. 学生培养团队协作精神,学会与他人共同解决问题;3. 学生培养良好的编程习惯,注重代码规范和程序优化。

分析课程性质、学生特点和教学要求,本课程目标具体、可衡量,旨在让学生通过学习Java语言实现俄罗斯方块游戏,掌握基本的编程知识和技能。

同时,课程注重培养学生的编程兴趣和团队协作精神,使学生在学习过程中形成积极的情感态度和价值观。

课程目标将分解为具体的学习成果,便于后续教学设计和评估。

二、教学内容1. Java基本语法和面向对象编程思想:包括数据类型、变量、运算符、控制结构、类和对象、继承与多态等基本概念。

- 教材章节:第1章 Java概述,第2章 Java基本语法,第3章 面向对象编程基础。

2. Java图形用户界面编程:介绍Swing组件的使用,包括窗口、按钮、面板等,以及事件处理机制。

- 教材章节:第4章 图形用户界面编程,第5章 事件处理。

3. 俄罗斯方块游戏设计与实现:- 游戏规则和逻辑:介绍俄罗斯方块游戏的规则、游戏界面的设计以及游戏逻辑的实现。

- 游戏编程:利用Java语言和Swing组件实现俄罗斯方块游戏。

- 教材章节:第6章 Java绘图,第7章 多线程。

4. 调试与优化:- 代码调试:教授学生如何找出并修复代码中的错误。

- 性能优化:介绍提高程序运行效率的方法和技巧。

教学内容安排和进度:1. 第1-2周:学习Java基本语法和面向对象编程思想。

java课程设计实验报告俄罗斯方块

java课程设计实验报告俄罗斯方块

成绩评定表课程设计任务书目录1.课设软件主要功能 (1)2.类总体设 (1)2.1类组合关系图 (1)2.2主类 (2)2.3其它类 (2)3.类详细设计 (2)3.1 ERS_Block主类 (2)3.2 Command处理控制类 (4)3.3 GameCanvas游戏画布类 (4)3.4 Block方块类 (6)4.关键类成员函数流程图及代码 (7)5.软件运行结果 (17)结论 (20)参考文献 (20)1.课设软件主要功能本系统是一个俄罗斯方块游戏的系统设计[1],实现的基本功能就是能实现经典俄罗斯方块游戏的基本功能。

如用键盘上的空格下左右键来控制方块的变形,移动等功能。

点击控制面板上的开始游戏,游戏暂停,提高级数,降低级数退出游戏等按钮来实现游戏的开始,暂停,停止游戏,增加难度,降低难度等功能。

图1.1功能图2.类总体设计2.1类组合关系图图2.1. 类组合关系图2.2主类ERS_Block继承Frame类负责游戏全局的控制[2]。

对开始游戏、暂停/继续游戏、结束游戏、等级设置。

玩家可自行设定游戏等级,主要提供10种级别,级别越高,游戏速度越快,难度越大2.3其他类1.Mypanel继承Panel类。

2.Block是方块类控制块的移动,下落变形功能。

七种类型方块的父类,定义了所有类型方块的共同特征和行为。

3.GameCanvas是游戏画布类,继承Canvas类,界面设计应遵循简介美观方便易用的基本原则在游戏区显示方块。

mand类是控制按钮类。

5.MyTimer类继承自线程类Thead。

包含run()方法,sleep()方法,控制游戏的速度。

6.WinListener类继承WindowAdapter类。

3.类详细设计3.1ERS_Block主类图3.1主类数据透视图定义成员变量[3]①右边信息窗体的布局MyPanel infoScr = new MyPanel();infoScr.setLayout(new GridLayout(4,1,0,5));infoScr.setSize(120,300);②定义标签和初始值Label scorep = new Label("分数:",Label.LEFT);Label levelp = new Label("级数:",Label.LEFT);③右边控制按钮窗体的布局MyPanel controlScr = new MyPanel();controlScr.setLayout(new GridLayout(5,1,0,5));rightScr.add(controlScr);④定义按钮playButton play_b = new Button("开始游戏");play_b.setSize(new Dimension(50,200));定义按钮Level UPButton level_up_b = new Button("提高级数");level_up_b.setSize(new Dimension(50,200));⑤定义按钮Level DownButton level_down_b =new Button("降低级数");level_down_b.setSize(new Dimension(50,200));⑥定义按钮Level PauseButton pause_b =new Button("游戏暂停");pause_b.setSize(new Dimension(50,200));⑦定义按钮QuitButton quit_b = new Button("退出游戏");quit_b.setSize(new Dimension(50,200)); ;成员方法①俄罗斯方块类的构造方法方法定义:ERS_Block(String title)②isGameOver方法方法定义:private boolean isGameOver()功能描述:该方法是判断游戏是否该结束了,只需要判断窗口中的最顶端那一行中是否有方块,同时也要判断最底端的是否也有,如果都有即结束。

JAVA--俄罗斯方块实验报告

JAVA–俄罗斯方块实验报告实验目的本次实验旨在通过使用JAVA程序设计语言编写俄罗斯方块游戏,巩固和深入理解JAVA语言的基础知识,提高编程实践能力。

实验环境本次实验主要使用了Java SE SDK 8环境,使用Eclipse Java EE IDE for Web Developers编程工具,以及Java AWT和Java Swing开发组件。

实验过程首先,我们需要确定游戏的基本功能和规则:•游戏开始时,屏幕上出现一个空白的方块区域,以及一个正在下落的方块组合(包括四个小方块);•玩家通过移动和旋转方块来使其落到正确的位置;•当一个完整的水平行被填满时,该行会消失并向下移动其上面的方块;•当屏幕上出现一个顶部行被填满时,游戏结束。

接下来,我们需要考虑如何实现这些功能:1.创建游戏屏幕并绘制方块•使用Java AWT和Java Swing组件创建一个屏幕窗口,并在该窗口中创建一个Panel,用于绘制游戏方块区域;•实现绘制方块的方法,例如,使用drawRect()方法绘制一个小方块,实现方块组合的方法。

2.状态管理和动作控制•状态管理:定义枚举类型来表示方块的状态(例如,下落、停止、旋转等);•动作控制:实现按键监听器来接收玩家输入的键盘事件,并根据事件执行相应的动作。

3.移动和旋转操作的实现•根据当前方块的状态,在方块组合中确定一个基准点,以此为基础进行方块的移动和旋转;•对于方块的移动,计算新的位置并检查其是否合法;•对于方块的旋转,计算新的方块组合位置并检查其是否合法,若不合法则撤销当前的旋转操作。

4.水平行填满的处理•在Panel中定义一个二维数组,存储每个小方块的位置以及其所在的行和列;•定义方法来检查每一行是否填满,并返回一个布尔值;•在检查到满行时,将该行变为灰色表示该行已填满,并将所有位于该行上方的方块向下移动一行。

5.游戏结束的处理•定义方法来判断游戏是否结束,判断条件为:新的方块组合不能在放置时超出游戏区域的顶部。

俄罗斯方块java课程设计

俄罗斯方块java课程设计一、课程目标知识目标:1. 掌握Java基本语法和编程规范;2. 学会使用Java面向对象编程思想设计类和对象;3. 了解俄罗斯方块游戏的规则和基本逻辑;4. 掌握在Java中实现图形用户界面(GUI)的方法。

技能目标:1. 能够运用所学知识编写简单的Java程序;2. 培养逻辑思维能力和问题解决能力,将俄罗斯方块游戏逻辑转化为代码实现;3. 学会使用Java的Swing库创建图形用户界面,实现游戏交互;4. 提高团队协作和沟通能力,通过分组合作完成课程设计。

情感态度价值观目标:1. 培养对编程的兴趣和热情,激发主动学习的动力;2. 培养良好的编程习惯,注重代码规范和优化;3. 增强自信心,勇于面对编程挑战,善于克服困难;4. 学会与他人分享和交流编程经验,互相学习,共同进步。

课程性质:本课程设计为实践性课程,旨在让学生在动手实践中掌握Java编程知识,培养实际编程能力。

学生特点:学生处于具有一定Java基础知识的阶段,具备基本的编程思想和语法知识,但实践经验不足。

教学要求:注重理论与实践相结合,引导学生运用所学知识解决实际问题,培养编程思维和实际操作能力。

在教学过程中,关注学生个体差异,提供个性化指导,确保每位学生都能在课程中取得实际的学习成果。

通过分组合作,培养学生团队协作和沟通能力,提高解决问题的综合能力。

二、教学内容1. Java基本语法与编程规范复习(1课时)- 变量、数据类型与运算符- 控制语句(条件语句、循环语句)2. 面向对象编程基础(2课时)- 类与对象的概念- 封装、继承与多态- 抽象类与接口3. 俄罗斯方块游戏规则与逻辑分析(1课时)- 游戏规则介绍- 游戏逻辑设计4. Java图形用户界面(GUI)编程(2课时)- Swing库简介- 创建窗体、面板和组件- 事件处理机制5. 俄罗斯方块游戏编程实践(4课时)- 游戏界面设计- 方块形状、移动与旋转实现- 游戏逻辑处理(消行、得分、游戏结束判断)- 游戏整体测试与优化6. 课程总结与展示(1课时)- 学生分组展示作品- 总结编程过程中遇到的问题及解决方法- 教师点评与反馈教学内容安排与进度:1. 前3课时为理论知识复习与扩展,第4课时进行游戏规则与逻辑分析;2. 第5课时开始进入实际编程环节,分阶段完成游戏设计;3. 最后1课时进行课程总结与展示。

java俄罗斯方块课程设计

java 俄罗斯方块课程设计一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。

知识目标要求学生掌握Java编程基础,了解俄罗斯方块游戏的规则和逻辑。

技能目标要求学生能够使用Java语言编写简单的俄罗斯方块游戏,培养学生的编程能力和问题解决能力。

情感态度价值观目标要求学生培养对计算机科学的兴趣和热情,培养学生的创新精神和团队合作意识。

二、教学内容本课程的教学内容主要包括Java编程基础、俄罗斯方块游戏的规则和逻辑、以及Java语言编写俄罗斯方块游戏的过程。

首先,学生将学习Java编程基础,包括变量、数据类型、运算符、控制语句等。

然后,学生将学习俄罗斯方块游戏的规则和逻辑,包括方块的移动、旋转、消行等。

最后,学生将使用Java语言编写俄罗斯方块游戏,包括界面设计、游戏逻辑实现等。

三、教学方法本课程的教学方法包括讲授法、讨论法、案例分析法和实验法。

首先,教师将通过讲授法向学生传授Java编程基础和俄罗斯方块游戏的规则和逻辑。

然后,教师将学生进行讨论,鼓励学生提出问题和解决问题,培养学生的思维能力和问题解决能力。

接着,教师将通过案例分析法向学生展示一些经典的俄罗斯方块游戏编程案例,让学生分析和理解游戏的实现过程。

最后,教师将学生进行实验,让学生亲自动手编写俄罗斯方块游戏,培养学生的实践能力和创新精神。

四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。

教材和参考书将提供Java编程基础和俄罗斯方块游戏的相关知识,供学生自学和参考。

多媒体资料将提供一些俄罗斯的方块游戏的演示和教学视频,帮助学生更好地理解游戏的规则和逻辑。

实验设备将支持学生进行实验,包括计算机、编程软件等。

五、教学评估本课程的评估方式包括平时表现、作业和考试。

平时表现将根据学生在课堂上的参与度、提问和回答问题的情况进行评估。

作业将包括编程练习和项目任务,以检验学生对Java编程和俄罗斯方块游戏的掌握程度。

JAVA课程设计俄罗斯方块(含代码)

Java程序课程设计任务书俄罗斯方块游戏的开发1、主要内容:俄罗斯方块游戏具有广泛的游戏人群,因为它比较简单有趣,无论老少都比较适合。

俄罗斯方块游戏的设计对于每一个Java语言设计者进行语言提高和进阶都是一个很好的锻炼机会。

俄罗斯方块游戏的设计工作是非常复杂和重要的,它涉及面逛,牵涉面多,如果不好好考虑和设计,将难以成功开发出这个游戏。

在这个游戏的设计中,将牵涉到图形界面的显示与更新,数据的收集与更新并且在这个游戏的开发中还会应用类的继承机制以及一些设计模式。

因此,如何设计和开发好这个俄罗斯方块游戏,对于提高Java开发水平和系统的设计能力有极大的帮助。

在设计开发过程中,开发者需要处理好各个类之间的集成关系,还要处理各个类的相应的封装,并且还要协调好各个模块之间的逻辑依赖关系和数据通信关系。

2、具体要求(包括技术要求等):系统的功能设计要求:本课程设计将实现以下几种功能。

1.游戏界面主框架游戏界面主框架主要包括游戏图形区域界面,游戏速度的选择更新界面,,游戏分数的显示更新界面,下一个图形方块的显示更新区域,开始游戏按钮,重新开始游戏按钮以及退出游戏按钮游戏界面主框架的主要结构如下图所示。

2.游戏图形区域界面的显示更新功能游戏图形区域界面主要是一个图形显示更新区域,主要包括游戏方块显示更新,整行方块的删除和更新,进行中和游戏结束时的分数更新和游戏图形区域界面的清除。

在这个游戏图形区域界面中,主要是一个表格,根据相应格子的设置标志来显示相应的图形图片,这样就实现了俄罗斯方块的实时显示。

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

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

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

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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JAVA程序设计课程设计之俄罗斯方块年级: 13 级班级: T412 网络工程指导老师:朱林小组成员:20138346021 许浩洋II时间: 2015 年 11 月 11 日目录摘要 .................................................................第一章课程设计要求..................................................第二章设计概要 ......................................................2.1功能设计 ......................................................2.2功能分析 ......................................................2.2.1系统操作界面 ...............................................2.2.2程序主要功能说明 ...........................................第三章调试分析与测试结果 ............................................3.1游戏运行界面 ..................................................3.2测试项目 ......................................................3.2.1功能区按键测试 ............................................3.2.2键盘功能测试 ..............................................3.2.3游戏结束测试 ..............................................第四章设计总结 ......................................................4.1改进意见 ......................................................4.2《Java 课程设计》心得体会 ......................................1摘要在现代,高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,一些有趣的桌面游戏已经成为人们在使用计算机进行工作或学习之余休闲娱乐的首选,而俄罗斯方块游戏是人们最熟悉的小游戏之一。

俄罗斯方块( Tetris, 俄文:Тетрис )是一款风靡全球的电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名。

俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。

由于上手简单、老少皆宜,从而家喻户晓,风靡世界。

为此,我们设计了一款简单的俄罗斯方块 JAVA游戏程序,以便更好的满足广大电脑工作者闲暇之余的消遣,并且也让我们学到编程技术与团队意识。

关键字:俄罗斯方块、 JAVA游戏、编程第一章课程设计要求题目名称:俄罗斯方块题目类型:设计型课程设计目的:1)了解 Java 的基本使用方法。

22)熟悉 eclipse 的运行环境。

3)用 JAVA来设计一个俄罗斯方块的小游戏。

4)基本实现俄罗斯方块的应用功能。

实验原理:JAVA程序分析与设计、类的灵活运用、多态技术、模板技术、异常处理等。

实验内容:本俄罗斯方块游戏是对于随机给出不同的形状(长条形、Z 字形、反 Z 形、田字形、 L 字形、反 L 形、 T 字型)下落填充给定的区域,若填满一条便消掉,记分。

若在游戏中各形状填满了给定区域,为输者。

第二章设计概要2.1功能设计本项目是为了实现俄罗斯方块的基本功能而设计的,基本能够达到俄罗斯方块的各种游戏性。

项目需求分析如下:1)由方块组成的不同的随机图形会从区域上方开始缓慢落下。

2)玩家可以做的操作有:以 90 度为单位旋转方每一格块。

以格子为单位左右移动方块,让方块加速落下。

3)方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的随机图形会出现在区域上方开始落下。

4)当区域中某一列横向格子全部由方块填满,则该列会自动消除并成为玩家的得分。

35)一次性销毁不同行数方块得分不同,一行1 分,两行 2 分,三行 5 分,四行10 分。

6)当固定的方块堆到区域最上方,则游戏结束。

2.2功能分析2.2.1 系统操作界面处理玩家操作2.2.2程序主要功能说明1.面板画笔类代码:package Tetris;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.util.Arrays;import java.util.Timer;import java.util.TimerTask;import javax.swing.JFrame;import javax.swing.JPanel;public class TetrisPanel extends JPanel{//游戏主面板 20 行 10 列private static final int ROWS= 20;private static final int COLS = 10;//代表方块着陆的墙private Cell[][]wall = new Cell[ROWS][ COLS];//定义每一小块的大小private static final int CELL_SIZE= 25;//游戏得分private int score ;//游戏销毁行数private int lines ;//一次性销毁行数的计分标准( 0 行 =0 分, 1 行 =1 分, 2 行 =4 分 ,3 行 =10 分,4 行 =20 分)private static final int []SCORE_LEVEL ={0,1,4,10,20};//游戏结束标记private boolean gameOver = false ;//游戏暂停标记private boolean pause = false ;//正在下落的四格方块private Tetromino currentTetro;//下一个下落的四格方块private Tetromino nextTetro;//定义游戏定时器private Timer timer ;public static void main(String[] args){JFrame frame =new JFrame( " 俄罗斯方块 " );int width = (COLS+8)* CELL_SIZE+100;int height =ROWS* CELL_SIZE+100;frame.setSize(width, height);frame.setLocationRelativeTo(null );frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );//取消系统默认布局frame.setLayout(null );TetrisPanel panel =new TetrisPanel();panel.setLocation(45, 35);panel.setSize((COLS+8)* CELL_SIZE , ROWS* CELL_SIZE +1);frame.add(panel);frame.setVisible(true );panel.action();}public void paint(Graphics g){super.paint(g);//填充背景颜色this .paintBackground(g);//绘制游戏墙paintWall(g);//绘制分数墙paintScore(g);//绘制面板边框paintTetrisBorder(g);//绘制当前四格方块paintCurrentTetro(g);//绘制下个四格方块paintNextTetro(g);}//private static final int BG_COLOR = 0xC3D5EA;//private static final int BORDER_COLOR = 0x667799; //private static final int FONT_COLOR = 0x000000;//绘制背景的方法public void paintBackground(Graphics g){g.setColor(new Color(BG_COLOR));//this.setBackground(new Color(BG_COLOR));g.fillRect(0, 0,this .getWidth(),this .getHeight()); }//绘制游戏墙的方法public void paintWall(Graphics g){for( int row=0;row<ROWS;row++){for( int col=0;col<COLS;col++){Cell cell =wall[row][col];int x =col*CELL_SIZE;int y= row*CELL_SIZE;if(cell==null ){g.setColor(new Color(BORDER_COLOR));g.drawRect(x, y,CELL_SIZE ,CELL_SIZE);} else {g.setColor(new Color(cell.getColor()));g.fillRect(x, y,CELL_SIZE , CELL_SIZE);g.setColor(new Color(BORDER_COLOR));g.drawRect(x, y,CELL_SIZE ,CELL_SIZE);}}}}//绘制分数墙的方法public void paintScore(Graphics g){int x = 12*CELL_SIZE;int y = 6*CELL_SIZE;Font font =new Font(" 楷体 " ,Font. BOLD,23);String msg =" 分数: " + score ;g.setColor(new Color(FONT_COLOR));g.setFont(font);g.drawString(msg, x, y);y+=2* CELL_SIZE ;msg =" 行数: " +lines;6 g.drawString(msg, x, y);if ( gameOver){msg = "(T_T)【S】再来" ;y+=2* CELL_SIZE ;x-= CELL_SIZE ;g.drawString(msg, x, y);} else if ( pause){msg = " 【C】继续 " ;y+=2* CELL_SIZE ;g.drawString(msg, x, y);} else {msg = " 【P】暂停 " ;y+=2* CELL_SIZE ;g.drawString(msg, x, y);}}//绘制面板边框的方法public void paintTetrisBorder(Graphics g){g.setColor(new Color(BORDER_COLOR));g.drawRect(0, 0,CELL_SIZE *( COLS+8)-1,CELL_SIZE* ROWS);}//绘制当前四格方块的方法public void paintCurrentTetro( Graphics g){if ( currentTetro== null){//如果没有四格方块,则返回不绘画return ;}for(Cell cell:currentTetro. cells ){int row = cell.getRow();int col = cell.getCol();int x = col*CELL_SIZE;int y = row*CELL_SIZE;g.setColor(new Color(cell.getColor()));g.fillRect(x, y,CELL_SIZE , CELL_SIZE );g.setColor(new Color(BORDER_COLOR));g.drawRect(x, y,CELL_SIZE , CELL_SIZE );}}//绘制下个四格方块的方法public void paintNextTetro( Graphics g){if ( nextTetro== null){//如果没有四格方块,则返回不绘画return ;}for(Cell cell:nextTetro. cells ){int row = cell.getRow();int col = cell.getCol();int x = (col+9)*CELL_SIZE;int y = (row+1)*CELL_SIZE;g.setColor(new Color(cell.getColor()));g.fillRect(x, y,CELL_SIZE , CELL_SIZE );g.setColor(new Color(BORDER_COLOR));g.drawRect(x, y,CELL_SIZE , CELL_SIZE );}}//让四格方块动起来的方法public void7 //请求此容器获取输入焦点this .requestFocus();this .addKeyListener(new KeyAdapter(){public void keyPressed(KeyEvent e){int key= e.getKeyCode();if ( gameOver){if (key==KeyEvent.VK_S ){startGameAction();}return ;}if ( pause){if (key==KeyEvent.VK_C ){continueAction();}return ;}switch(key){case KeyEvent.VK_DOWN:softDownAction();break;case KeyEvent.VK_LEFT :moveLeftAction();break;case KeyEvent.VK_RIGHT :moveRightAction();break;case KeyEvent.VK_UP :rotateRightAction();break;case KeyEvent.VK_SPACE :hardDownAction();break;case KeyEvent.VK_P :pauseAction();break;}repaint();}//暂停游戏的方法private void pauseAction() {pause = true ;timer .cancel();}//继续游戏的方法private void continueAction() {pause=false;timer=new Timer();timer .schedule(new TimerTask() {public void run() {softDownAction();repaint();}}, 500, 500);}});}//在游戏开始时调用或者【S】按下时调用8public void startGameAction(){gameOver = false ;pause = false ;score= 0;lines= 0;//清空游戏主面板emptyWall();//生成下一个四格方块nextTetromino();//生成定时器对象timer= new Timer();//启动定时器工作timer .schedule(new TimerTask() {public void run() {//调用面板的四格方块下落方法(自由下落)softDownAction();//重画面板repaint();}}, 500, 500);}//清空游戏主面板方法public void emptyWall(){for( int row =0;row<ROWS;row++){//wall[row]这一行全部用null表示Arrays.fill( wall [row],null);}}//生成(随机)下一个四格方块, 1. 下一个变成当前的。

相关文档
最新文档