java课程设计报告材料-俄罗斯方块
Java课程大作业俄罗斯方块作业报告[1]
游戏流程图:
进入游戏界面 点击按钮“开始” ,游戏开 始 蛇开始随机出现 键盘操作: “左移” “右移” “旋转” “加速”
到达顶端
单击 “开始” 游戏 继续
游戏结束
游戏面板
点击“开始”Leabharlann 戏开始如图:按“”控制蛇的方向如下图:
方块不能继续下落时游戏结束,出现“Game over” ,如图:
作业结果(学生填写) : 程序设计思路(300字以上,可附流程图或类图)
俄罗斯方块游戏设计与实现,主要分为以下二个模块:游戏主界面模块和游戏控制 模块。 在此只实现游戏的游戏主界面模块、游戏控制模块。并且只是实现移动速度、重新 开始等功能。 游戏主界面模块: 游戏的主界面是进入游戏后,能够给玩家第一感官的部分,主要包括游戏图形 区域界面、游戏速度控制、重新开始游戏、速度等级以及当前分数。从很大程度上 决定了玩家对游戏的兴趣问题,因此,游戏的主界面应该力求美观,爽心悦目。 游戏控制模块: 这个模块是游戏的中心环节,主要完成控制游戏的速度、重新开始等功能。为 了能够给玩家一个很好的游戏环境,这部分应该做到易懂、易操作。设计所开发的 是基于 Java 的一个俄罗斯方块游戏软件,主要实现游戏的速度控制。分为: 游戏 主界面模块、游戏控制模块以二个模块。 性能: 本软件在设计方面本着方便、实用及娱乐性高的宗旨,在对界面进行设计的过程 中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。
Java 程序设计 课程作业报告 作业:俄罗斯方块游戏
姓名 程序得分 90% 作业目的: 掌握基本的图形程序设计方法 掌握Java事件处理程序编写方法 掌握编写基于TCP或UDP协议的网络通讯程序 掌握Java的流、文件、多线程等编程技术 郭阳 作业报告 得分 10% 学号 1143730212 实验总分 100%
(完整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课程设计——俄罗斯方块
一、程序功能介绍本程序实现了俄罗斯方块游戏的基本功能,游戏中玩家可以做的操作有: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语言的俄罗斯方块游戏课程设计学院:X专业:X班级:X:X学号:X指导老师:X摘要第一章引言1.1 设计的课题背景1.2 研究课题的任务,目的和意义1.2.1 课题的任务1.2.2 课题的目的1.2.3 课题的意义1.3 系统的主要功能和特色1.3.1 系统的主要功能1.3.2 系统的特色第二章系统需求分析2.1 本课题研究现状分析2.2 要解决的问题及解决方法2.3 系统设计的主要容、目标2.3.1 系统设计的主要容2.3.2 设计的目标2.4 使用的关键技术第三章系统的详细设计3.1 系统的总体系结构3.2 系统各模块的界面设计及实现3.2.1 主窗体程序模块设计与实现3.2.2 方块变换模块设计与实现3.2.3 满行消除并计分模块设计与实现第四章系统的安装与测试4.1 系统的安装4.1.1 系统的运行环境4.1.2 系统的安装4.2 系统的测试结束语参考文献附录:有关程序代码摘要:在现代,高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,一些有趣的桌面游戏已经成为人们在使用计算机进行工作或学习之余休闲娱乐的首选,而俄罗斯方块游戏是人们最熟悉的小游戏之一。
俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克·帕基特诺夫发明,故得此名。
俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。
由于上手简单、老少皆宜,从而家喻户晓,风靡世界。
为此,我设计了一款简单的俄罗斯方块JAVA 游戏程序,以便更好的满足广大电脑工作者闲暇之余的消遣,并且也让我学到编程技术。
关键字:俄罗斯方块游戏、Java语言、编程第一章引言1.1设计的课题背景俄罗斯方块是一款电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克·帕基特诺夫发明,故得此名。
俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。
java课程设计报告-俄罗斯方块
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摘要在现代,高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,一些有趣的桌面游戏已经成为人们在使用计算机进行工作或学习之余休闲娱乐的首选,而俄罗斯方块游戏是人们最熟悉的小游戏之一。
JAVA俄罗斯方块实训报告
《JAVA程序设计》实训报告课题名称:RussiaBlocksGame(俄罗斯方块)专业:计算机软件班级:学号:姓名:指导教师:2010年12月27 日目录《JAVA程序设计》实训报告 (1)一、课程设计目的 (4)二、课程设计题目描述和要求 (4)1)题目: (4)2)题目描述: (4)3)题目要求: (4)三、课程设计报告内容 (4)3.1设计方案的论证: (4)3.2硬件及软件开发平台: (5)3.3各个功能模块图设计 (5)具体模块划分算法: (5)3.4详细设计 (11)3.4.1模型层设计 (11)3.4.2游戏演示 (16)3.5系统测试 (18)3.5.1快捷键测试 (18)3.5.2右侧快捷按钮测试 (18)3.5.3界面菜单选项的功能测试 (18)3.5.4 按键事件的功能测试 (19)3.5.5方块堆砌与消行测试 (19)3.5.6 测试结果分析 (20)四、结论 (20)1、问题: (20)2、解决方法: (20)五、结束语 (20)六、参考书目: (21)七、附录:(源程序清单) (21)一、课程设计目的1)运用Java实现小游戏的开发2)了解Java开发项目的流程3)掌握规划,设计,开发,测试的能力二、课程设计题目描述和要求1)题目:RussiaBlocksGame(俄罗斯方块)2)题目描述:RussiaBlocksGame是基于JAVA-J2SE平台开发的一款JAVA小游戏。
3)题目要求:熟悉java的编程环境J2SDK,掌握Application 和Applet的程序结构,并能熟练编写和调试两类程序。
熟练使用各种常用类库。
理解JDK的事件处理机制,掌握java.awt 、javax.swing,javax.swing.event中的GUI标准组件的用法,学会合理运用布局策略、综合运用各种界面元素,编程构造满足应用需要的图形工作界面。
三、课程设计报告内容3.1设计方案的论证:本游戏是根据流行的俄罗斯方块的样式改变而成的,但屏蔽了音乐,背景图片等功能,因为无法掌握深奥的算法。
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程序设计》实训报告范文-俄罗斯方块——《俄罗斯方块》一、实训任务及要求: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课程设计实验报告俄罗斯方块
成绩评定表课程设计任务书目录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 俄罗斯方块实验报告
目录一.需求分析....................................................... 错误!未定义书签。
二.系统运行环境 (2)三.系统功能需求描述: (2)四.总体设计 (2)五.系统结构图 (3)六.程序模块设计 (3)七、实验总结体会 (15)一.需求分析在个人电脑日益普及的今天,一些有趣的桌面游戏已经成为人们在使用计算机进行工作或学习之余休闲娱乐的首选,而俄罗斯方块游戏是人们最熟悉的小游戏之一,它以其趣味性强,易上手等诸多特点得到了大众的认可,因此开发此游戏软件可满足人们的一些娱乐的需求。
此俄罗斯方块游戏可以为用户提供一个可在普通个人电脑上运行的,界面美观的,易于控制的俄罗斯方块游戏。
二.系统运行环境操作系统选择Windows XP 版本,运行环境选择MyEclipse三.系统功能需求描述俄罗斯方块游戏是一款适合大众的游戏软件,它适合不同年龄的人玩。
本软件要实现的功能如下:1.游戏区:玩家可以在游戏区中堆积方块,并能够在游戏过程中随时了解得分情况。
2.游戏控制:玩家可以通过游戏控制功能来选择开始新的一局游戏,暂停或退出游戏。
3.级别设置:玩家可以根据自己的需要自行设定游戏的开始级别,级别越高,游戏速度越快,难度越大。
四.总体设计游戏中玩家可以做的操作有:1.以90度为单位旋转方每一格块。
2.以格子为单位左右移动方块,让方块加速落下。
3.方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的随机图形会出现在区域上方开始落下。
4.当区域中某一列横向格子全部由方块填满,则该列会自动消除并成为玩家的得分。
同时删除的列数越多,得分指数上升。
5.当固定的方块堆到区域最上方,则游戏结束。
五.系统结构图六.程序模块设计6.1用户界面设计6.2 程序代码设计package russia;import java.awt.*;import java.awt.event.*;//俄罗斯方块类class ERS_Block extends Frame{/****/private static final long serialVersionUID = 1L;public static boolean isPlay=false;public static int level=1,score=0;public static TextField scoreField,levelField;public static MyTimer timer;GameCanvas gameScr;public static void main(String[] argus){ERS_Block ers = new ERS_Block("俄罗斯方块游戏V1.0 Author:Vincent"); WindowListener win_listener = new WinListener();ers.addWindowListener(win_listener);}//俄罗斯方块类的构造方法SuppressWarnings("deprecation")ERS_Block(String title){super(title);setSize(600,480);setLayout(new GridLayout(1,2));gameScr = new GameCanvas();gameScr.addKeyListener(gameScr);timer = new MyTimer(gameScr);timer.setDaemon(true);timer.start();timer.suspend();add(gameScr);Panel rightScr = new Panel();rightScr.setLayout(new GridLayout(2,1,0,30));rightScr.setSize(120,500);add(rightScr);//右边信息窗体的布局MyPanel infoScr = new MyPanel();infoScr.setLayout(new GridLayout(4,1,0,5));infoScr.setSize(120,300);rightScr.add(infoScr);//定义标签和初始值Label scorep = new Label("分数:",Label.LEFT);Label levelp = new Label("级数:",Label.LEFT);scoreField = new TextField(8);levelField = new TextField(8);scoreField.setEditable(false);levelField.setEditable(false);infoScr.add(scorep);infoScr.add(scoreField);infoScr.add(levelp);infoScr.add(levelField);scorep.setSize(new Dimension(20,60));scoreField.setSize(new Dimension(20,60));levelp.setSize(new Dimension(20,60));levelField.setSize(new Dimension(20,60));scoreField.setText("0");levelField.setText("1");//右边控制按钮窗体的布局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));play_b.addActionListener(new Command(Command.button_play,gameScr));//定义按钮Level UPButton level_up_b = new Button("提高级数");level_up_b.setSize(new Dimension(50,200));level_up_b.addActionListener(new Command(Command.button_levelup,gameScr));//定义按钮Level DownButton level_down_b =new Button("降低级数");level_down_b.setSize(new Dimension(50,200));level_down_b.addActionListener(new Command(Command.button_leveldown,gameScr)); //定义按钮Level PauseButton pause_b =new Button("游戏暂停");pause_b.setSize(new Dimension(50,200));pause_b.addActionListener(new Command(Command.button_pause,gameScr));//定义按钮QuitButton quit_b = new Button("退出游戏");quit_b.setSize(new Dimension(50,200));quit_b.addActionListener(new Command(Command.button_quit,gameScr)); controlScr.add(play_b);controlScr.add(level_up_b);controlScr.add(level_down_b);controlScr.add(pause_b);controlScr.add(quit_b);setVisible(true);gameScr.requestFocus();}}//重写MyPanel类,使Panel的四周留空间class MyPanel extends Panel{/****/private static final long serialVersionUID = 1L;public Insets getInsets(){return new Insets(30,50,30,50);}}//游戏画布类class GameCanvas extends Canvas implements KeyListener{ /****/private static final long serialVersionUID = 1L;final int unitSize = 30; //小方块边长int rowNum; //正方格的行数int columnNum; //正方格的列数int maxAllowRowNum; //允许有多少行未削int blockInitRow; //新出现块的起始行坐标int blockInitCol; //新出现块的起始列坐标int [][] scrArr; //屏幕数组Block b; //对方快的引用//画布类的构造方法GameCanvas(){rowNum = 15;columnNum = 10;maxAllowRowNum = rowNum - 2;b = new Block(this);blockInitRow = rowNum - 1;blockInitCol = columnNum/2 - 2;scrArr = new int [32][32];}//初始化屏幕,并将屏幕数组清零的方法void initScr(){for(int i=0;i<rowNum;i++)for (int j=0; j<columnNum;j++){ scrArr[i][j]=0; }b.reset();repaint();}//重新刷新画布方法public void paint(Graphics g){for(int i = 0; i < rowNum; i++)for(int j = 0; j < columnNum; j++)drawUnit(i,j,scrArr[i][j]);}//画方块的方法public void drawUnit(int row,int col,int type){scrArr[row][col] = type;Graphics g = getGraphics();switch(type){ //表示画方快的方法case 0: g.setColor(Color.black);break; //以背景为颜色画case 1: g.setColor(Color.blue);break; //画正在下落的方块case 2: g.setColor(Color.magenta);break; //画已经落下的方法}g.fill3DRect(col*unitSize,getSize().height-(row+1)*unitSize,unitSize,unitSize,true);g.dispose();}public Block getBlock(){return b; //返回block实例的引用}//返回屏幕数组中(row,col)位置的属性值public int getScrArrXY(int row,int col){if (row < 0 || row >= rowNum || col < 0 || col >= columnNum)return(-1);elsereturn(scrArr[row][col]);}//返回新块的初始行坐标方法public int getInitRow(){return(blockInitRow); //返回新块的初始行坐标}//返回新块的初始列坐标方法public int getInitCol(){return(blockInitCol); //返回新块的初始列坐标}//满行删除方法void deleteFullLine(){int full_line_num = 0;int k = 0;for (int i=0;i<rowNum;i++){boolean isfull = true;L1:for(int j=0;j<columnNum;j++)if(scrArr[i][j] == 0){k++;isfull = false;break L1;}if(isfull) full_line_num++;if(k!=0 && k-1!=i && !isfull)for(int j = 0; j < columnNum; j++){if (scrArr[i][j] == 0)drawUnit(k-1,j,0);elsedrawUnit(k-1,j,2);scrArr[k-1][j] = scrArr[i][j];}}for(int i = k-1 ;i < rowNum; i++){for(int j = 0; j < columnNum; j++){drawUnit(i,j,0);scrArr[i][j]=0;}}ERS_Block.score += full_line_num;ERS_Block.scoreField.setText(""+ERS_Block.score); }//判断游戏是否结束方法boolean isGameEnd(){for (int col = 0 ; col <columnNum; col ++){if(scrArr[maxAllowRowNum][col] !=0)return true;}return false;}public void keyTyped(KeyEvent e){}public void keyReleased(KeyEvent e){}//处理键盘输入的方法public void keyPressed(KeyEvent e){if(!ERS_Block.isPlay)return;switch(e.getKeyCode()){case KeyEvent.VK_DOWN:b.fallDown();break; case KeyEvent.VK_LEFT:b.leftMove();break;case KeyEvent.VK_RIGHT:b.rightMove();break; case KeyEvent.VK_SPACE:b.leftTurn();break;}}}//处理控制类class Command implements ActionListener{ static final int button_play = 1; //给按钮分配编号static final int button_levelup = 2;static final int button_leveldown = 3;static final int button_quit = 4;static final int button_pause = 5;static boolean pause_resume = true;int curButton; //当前按钮GameCanvas scr;//控制按钮类的构造方法Command(int button,GameCanvas scr){ curButton = button;this.scr=scr;}//按钮执行方法SuppressWarnings("deprecation")public void actionPerformed (ActionEvent e){ switch(curButton){case button_play:if(!ERS_Block.isPlay){scr.initScr();ERS_Block.isPlay = true;ERS_Block.score = 0;ERS_Block.scoreField.setText("0");ERS_Block.timer.resume();}scr.requestFocus();break;case button_levelup:if(ERS_Block.level < 10){ ERS_Block.level++;ERS_Block.levelField.setText(""+ERS_Block.level); ERS_Block.score = 0;ERS_Block.scoreField.setText(""+ERS_Block.score); }scr.requestFocus();break;case button_leveldown:if(ERS_Block.level > 1){ ERS_Block.level--;ERS_Block.levelField.setText(""+ERS_Block.level); ERS_Block.score = 0;ERS_Block.scoreField.setText(""+ERS_Block.score);}scr.requestFocus();break;case button_pause:if(pause_resume){ERS_Block.timer.suspend();pause_resume = false;}else{ERS_Block.timer.resume();pause_resume = true;}scr.requestFocus();break;case button_quit:System.exit(0);}}}//方块类class Block {static int[][] pattern = {{0x0f00,0x4444,0x0f00,0x4444},//用十六进至表示,本行表示长条四种状态{0x04e0,0x0464,0x00e4,0x04c4},{0x4620,0x6c00,0x4620,0x6c00},{0x2640,0xc600,0x2640,0xc600},{0x6220,0x1700,0x2230,0x0740},{0x6440,0x0e20,0x44c0,0x8e00},{0x0660,0x0660,0x0660,0x0660}};int blockType; //块的模式号(0-6)int turnState; //块的翻转状态(0-3)int blockState; //快的下落状态int row,col; //块在画布上的坐标GameCanvas scr;//块类的构造方法Block(GameCanvas scr){this.scr = scr;blockType = (int)(Math.random() * 1000)%7;turnState = (int)(Math.random() * 1000)%4;blockState = 1;row = scr.getInitRow();col = scr.getInitCol();}//重新初始化块,并显示新块public void reset(){blockType = (int)(Math.random() * 1000)%7;turnState = (int)(Math.random() * 1000)%4; blockState = 1;row = scr.getInitRow();col = scr.getInitCol();dispBlock(1);}//实现“块”翻转的方法public void leftTurn(){if(assertValid(blockType,(turnState + 1)%4,row,col)){ dispBlock(0);turnState = (turnState + 1)%4;dispBlock(1);}}//实现“块”的左移的方法public void leftMove(){if(assertValid(blockType,turnState,row,col-1)){ dispBlock(0);col--;dispBlock(1);}}//实现块的右移public void rightMove(){if(assertValid(blockType,turnState,row,col+1)){ dispBlock(0);col++;dispBlock(1);}}//实现块落下的操作的方法public boolean fallDown(){if(blockState == 2)return(false);if(assertValid(blockType,turnState,row-1,col)){ dispBlock(0);row--;dispBlock(1);return(true);}else{blockState = 2;dispBlock(2);return(false);}}//判断是否正确的方法boolean assertValid(int t,int s,int row,int col){ int k = 0x8000;for(int i = 0; i < 4; i++){for(int j = 0; j < 4; j++){if((int)(pattern[t][s]&k) != 0){int temp = scr.getScrArrXY(row-i,col+j);if (temp<0||temp==2)return false;}k = k >> 1;}}return true;}//同步显示的方法public synchronized void dispBlock(int s){int k = 0x8000;for (int i = 0; i < 4; i++){for(int j = 0; j < 4; j++){if(((int)pattern[blockType][turnState]&k) != 0){ scr.drawUnit(row-i,col+j,s);}k=k>>1;}}}}//定时线程class MyTimer extends Thread{ GameCanvas scr;public MyTimer(GameCanvas scr){this.scr = scr;}SuppressWarnings("deprecation")public void run(){while(true){try{sleep((10-ERS_Block.level + 1)*100);}catch(InterruptedException e){}if(!scr.getBlock().fallDown()){scr.deleteFullLine();if(scr.isGameEnd()){ERS_Block.isPlay = false;suspend();}elsescr.getBlock().reset();}}}}class WinListener extends WindowAdapter{ public void windowClosing (WindowEvent l){ System.exit(0);}}6.3 运行结果游戏进行中界面七.实验总结体会实验顺利完成,我觉得很有收获。
基于Java的游戏“俄罗斯方块”的设计与实现毕业设计
基于Java的游戏“俄罗斯方块”的设计与实现毕业设计基于Java的游戏“俄罗斯方块”的设计与实现毕业设计目录第1章绪论 (1)1.1 本设计的目的和意义 (1)1.2 国外研究现状 (1)1.3 设计研究的主要容、目标与工具 (2)1.3.1 设计的主要容 (2)1.3.2 设计要达到的目标 (3)1.3.3 设计方法介绍 (3)第2章可行性分析 (7)2.1 可行性分析 (7)2.1.1 可行性研究的前提 (7)2.1.1.1 要求 (7)2.1.1.2 目标 (8)2.1.1.3 条件、假定和限制 (8)2.1.2 对现有软件的分析 (8)2.2 所建议的软件 (9)2.2.2 社会可行性分析 (10)2.2.3 技术可行性分析 (11)2.2.3.1 执行平台方面 (11)2.2.3.2 执行速度方面 (12)2.2.3.3 语言特性与功能方面 (12)2.2.3.4 开发环境方面 (13)2.2.3.5 JBuilder开发工具 (13)2.2.4 经济可行性 (13)第3章需求分析 (14)3.1 任务概述 (14)3.1.1 目标 (14)3.1.2 用户的特点 (14)3.2 具体需求 (14)3.2.1 功能需求 (14)3.2.1.1 游戏主界面模块需求 (14)3.2.1.2 游戏图形区域界面的需求 (15)3.2.1.3 方块下落速度需求 (15)3.2.1.4 游戏分数需求 (15)3.2.1.5 游戏排行榜需求 (15)3.2.2 属性需求 (15)第4章概要设计 (16)4.2 功能模块设计 (16)4.2.1 总设计模块的划分 (16)4.2.2 游戏主界面模块 (17)4.2.3 游戏控制模块 (17)4.2.4 游戏设置模块 (18)4.2.5 游戏排行榜模块 (18)4.3 类模块设计 (19)4.3.1 类模块之间关系 (19)4.3.2 各类模块设计概要 (19)4.3.3 类和Java源文件对应关系 (20)4.4 程序设计的重点 (21)4.4.1 游戏图形界面的图形显示更新功能 (21) 4.4.2 游戏方块的设计 (21)4.5 接口设计 (22)4.5.1 外部接口 (22)4.5.2 外部接口 (22)4.6 维护设计 (22)4.7 故障处理 (22)第5章详细设计 (24)5.1 程序主结构 (24)5.2 开发环境配置 (24)5.2.1 Java2的标准运行环境 (24)5.2.1.1 J2SE SDK (24)5.2.1.2 J2SE JRE (25)5.2.1.3 J2SE Documentation (25)5.2.2 J2SE的安装与配置 (25)5.2.2.1安装过程 (25)5.2.2.2 配置环境变量 (28)5.3 类模块程序流程图 (31)5.3.1 BlockGame类 (31)5.3.2 BlockFrame类 (32)5.3.3 Square类 (32)5.3.4 LevelDialog类 (32)5.3.5 Game类 (32)5.3.6 Score类 (34)5.3.7 SaveScoreDialog类 (34)5.3.8 ReportDialog类 (35)5.3.9 AboutDialog类 (35)5.4 类模块具体设计 (35)5.4.1 BlockGame.java程序 (35)5.4.2 BlockFrame.java程序 (36)5.4.2.1 BlockFrame类程序 (36)5.4.2.2 Game类程序 (37)5.4.2.3 LevelDialog类程序 (40)5.4.2.4 BlockFrame.java的UML图 (40) 5.4.3 Score.java程序 (42)5.4.4 SaveScoreDialog.java程序 (43) 5.4.5 Reportdialog.java程序 (46)5.4.6 AboutDialog.java程序 (48)5.4.7 Square.java程序 (49)5.5 安装文件的生成 (50)5.5.1 inno setup简介 (50)5.5.2 安装文件制作步骤 (50)5.6 游戏界面展示 (54)第6章软件测试 (58)6.1 程序代码调试 (58)6.1.1 用正常数据调试 (58)6.1.2 异常数据调试 (58)6.1.3 用错误数据调试 (58)6.2 程序功能测试 (58)6.2.1 模块功能测试 (59)6.2.2 确认测试 (60)第7章软件维护 (61)结论 (62)致谢 (63)参考文献 (64)附录“俄罗斯方块游戏”程序源代码 (65)第1章绪论1.1 本设计的目的和意义俄罗斯方块游戏具有广泛的用户群,因为它比较简单有趣,无论老少都比较适合。
俄罗斯方块JAVA课程设计实验报告
目录一.引言 (2)1.1运行环境 (2)二.需求分析 (2)2.1开发背景 (2)2.2设计目的 (2)2.3功能需求 (2)三.概要设计 (3)3.1设计思想 (3)3.2系统架构 (3)四.详细设计 (3)4.1事件处理 (3)4.2界面设计 (4)4.3游戏画布类 (4)4.4方块类 (6)4.5消行并统计分数 (11)五.使用说明 (12)5.1游戏开始运行 (12)5.2填满一行即消行得分 (13)5.3列被填满,则游戏自动结束 (14)六.课程设计总结与体会 (14)七.参考文献 (15)一.引言1.1运行环境操作系统:Microsoft Windows XP程序语言:Java开发工具:JCreator LE 4.50二.需求分析2.1开发背景Java是现在全球最时髦的开发工具之一,它拥有一套庞大且完善的类库,内置了其他语言需要靠库甚至是操作系统才能支持的功能。
Java的产生与流行是Internet 发展的客观要求。
如今越来越多的应用程序是Java开发的,用Java开发的应用程序可在任何计算平台安全运行。
Java作为一个分布式的,面向对象的程序设计方法,可以让位于任何地方的任何计算机使用网络上的应用程序。
可以说Java是一个万能的开发平台,用Java编程成为一种趋势。
2.2设计目的通过本次课程设计了解和掌握JDK开发环境以及JCreator等集成开发环境,巩固所学的Java知识及编程机制。
了解Java程序开发流程,学会构思比较复杂的课程设计思想;能合理的利用本学期所掌握的多线程、类、GUI等知识编写一个较为复杂的Java应用软件。
掌握面向对象成学设计的有关概念和开发方法,锻炼团队合作开发精神。
2.3功能需求本课程设计的目标是设计一个名为《俄罗斯方块》的游戏软件,实现其界面的初始化,程序运行,退出,和相应数据处理。
能实现游戏的基本功能,类似下移、左移、右移、翻转、得分累加等,并在规定时间内达到课题所需要实现的功能及要求。
俄罗斯方块java课程设计
俄罗斯方块java 课程设计一、课程目标知识目标:1. 学生能理解俄罗斯方块游戏的规则和基本逻辑;2. 学生能掌握Java编程语言中的面向对象编程思想,包括类的定义、对象创建、方法调用等;3. 学生能运用Java编程语言实现俄罗斯方块游戏的基本功能,如方块的移动、旋转、消行等。
技能目标:1. 学生能运用面向对象的编程思想,独立完成俄罗斯方块游戏的编写;2. 学生能通过编写代码解决实际问题,提高编程实践能力;3. 学生能运用调试工具,分析并解决程序中的错误,提高程序调试能力。
情感态度价值观目标:1. 学生通过完成本课程的学习,培养对编程的兴趣和热情,提高学习主动性和积极性;2. 学生在团队协作中,学会与他人沟通、分享、合作,培养良好的团队精神和沟通能力;3. 学生在编写程序过程中,培养耐心、细心和解决问题的能力,增强克服困难的信心。
课程性质:本课程为信息技术学科的课程,旨在让学生通过实践操作,掌握Java编程语言的基本知识和技能。
学生特点:本课程面向初中年级学生,他们在学习过程中好奇心强,喜欢动手实践,但可能缺乏一定的编程基础。
教学要求:结合学生特点,注重启发式教学,引导学生通过实践探索,掌握编程技能。
在教学过程中,关注学生的个体差异,提供个性化指导,确保每位学生都能达到课程目标。
将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. Java编程基础:包括数据类型、变量、运算符、流程控制(分支、循环)、数组等基本概念;教材章节:第一章至第三章。
2. 面向对象编程:类的定义、构造方法、成员变量、成员方法、封装、继承、多态等;教材章节:第四章至第六章。
3. Java图形用户界面(GUI):Swing组件、事件处理、布局管理等;教材章节:第七章。
4. 俄罗斯方块游戏设计与实现:a) 游戏逻辑设计:方块形状、移动规则、消行判断等;b) 程序设计:使用面向对象方法设计类和对象,实现游戏功能;c) 界面设计:使用Swing组件设计游戏界面,实现游戏交互。
JAVA俄罗斯方块实训报告
JAVA俄罗斯方块实训报告一、项目简介俄罗斯方块是一款经典的益智类游戏,由前苏联工程师Alexey Pajitnov于1984年设计并推出。
游戏的主要目标是通过操作不同形状的方块,使它们在下降过程中在一排一排地堆叠起来,当一排被填满时,整行将会被消除。
玩家需要尽可能地消除多行,以获得更高的分数。
本实训项目使用Java语言编写俄罗斯方块游戏的核心逻辑,并实现了基本的游戏操作。
二、实训目标1.理解游戏的基本规则和玩法。
2.学习面向对象编程的基本思想和方法。
3. 掌握Java语言的基本语法和常用类的使用。
4.能够使用GUI库设计简单的界面。
5.能够处理用户输入和游戏逻辑的交互。
6. 能够实现游戏的核心功能并进行测试和修复bug。
三、实训内容与方法1. 学习基础知识:学习掌握Java语言的基本语法和常用类的使用,了解面向对象编程的基本思想和方法。
2.设计游戏逻辑:根据游戏的规则和玩法,设计游戏的核心逻辑,包括方块的形状和下落规则、消除行的判定和计分等。
3. 实现游戏核心功能:根据设计的游戏逻辑,使用Java语言编写代码实现游戏的核心功能,包括方块的生成和下落、用户操作的响应、消除行的处理等。
4.设计界面和交互:使用GUI库设计游戏的界面,包括游戏区域、分数显示、游戏控制等,处理用户输入和游戏逻辑的交互。
5. 测试和修复bug:进行测试和调试,发现游戏中存在的bug,并对其进行修复和优化,确保游戏的稳定性和流畅性。
四、实训结果与总结1.实现了基本的游戏逻辑和核心功能,包括方块的生成和下落、用户操作的响应、消除行的处理等。
2.设计了简单的界面和游戏控制,可以与用户进行交互。
3. 进行了测试和调试,修复了发现的bug并进行了优化,提高了游戏的稳定性和流畅性。
4. 掌握了Java语言的基本语法和常用类的使用,加深了对面向对象编程的理解和应用。
5.通过本次实训,更深入地了解了游戏开发的流程和方法,提高了自己的逻辑思维和编程能力。
JAVA俄罗斯方块实验报告
JAVA俄罗斯方块实验报告一、实验目的通过编写Java程序,实现俄罗斯方块游戏,掌握Java面向对象编程的基本思想和方法。
二、实验内容1.设计并编写俄罗斯方块游戏的主要功能,包括方块的移动、旋转、消除等。
2. 利用Java图形库,实现游戏界面的搭建和美化。
3. 运用Java的面向对象编程思想,对游戏的各个功能进行模块化设计和编码。
三、实验步骤1. 创建一个Java项目,设置所需的类和包,导入相关的库文件。
2.设计并编写方块类,包括方块的形状、位置、移动和旋转等方法。
3.设计并编写游戏区域类,包括绘制游戏界面、处理方块的移动和消除等方法。
4.设计并编写游戏控制类,包括监听键盘事件、控制方块的移动和旋转等方法。
5.综合测试各个类的功能,确保游戏的正常运行。
四、实验结果经过几个迭代的调试和改进,游戏的各个功能可以正常运行。
在游戏开始后,方块会从顶部下落,玩家可以通过键盘的上、下、左、右键来控制方块的移动,通过空格键来进行方块的旋转。
当方块底部与其他方块或游戏区域底部碰撞时,方块会固定在当前位置。
当一行方块都被填满时,该行方块会被消除,并得到相应的分数。
当游戏区域的顶部被方块填满时,游戏结束。
五、实验总结通过这次实验,我掌握了Java面向对象的编程方法和技巧,对Java的图形库有了更深入的了解和应用,提高了自己的编程能力。
俄罗斯方块游戏的实现过程中,我学习到了如何进行游戏逻辑的设计和处理,提高了自己的问题解决能力。
在今后的学习和实践中,我会继续不断地深入研究和探索Java编程的技术和应用,提高自己的编程水平。
六、参考资料1.《Java编程思想》2.《Java核心技术》。
JAVA课程设计报告俄罗斯方块
Java课程设计报告题目俄罗斯方块所在院系学生姓名专业班级学号年月日第一章总体设计1.1本系统的主要功能本系统俄罗斯方块是是一款小游戏,玩家可控制掉落物的形状和位置,当一行垒满后会消除,玩家获得一定分数,当掉落物堆积到达顶部时,提示game over,有窗口最大最小化的功能,设置掉落物和背景色,改变窗口模式,游戏中能够暂停、停止,提高降低难度。
1.2系统包含的类及类之间的关系本系统共包括5java源文件。
如图1-1所示。
图1-1 类之间的关系2.2 java源文件及其功能1.eluosifangkuai.java该文件是文件的主类,用于运行文件,是俄罗斯方块的 Java 实现。
2.ErsBlock.java该文件块类,继承自线程类(Thread),由 4 * 4 个方格(ErsBox)构成一个块,控制块的移动、下落、变形等。
3.ControlPanel.java该文件控制面板类,继承自Jpanel.上边安放预显窗口、等级、得分控制按钮主要用来控制游戏进程。
4.GameCanvas.fava该文件是画布类,内有<行数> * <列数>个方格类实例。
继承自JPanel 类。
ErsBlock线程类动态改变画布类的方格颜色,画布类通过检查方格颜色来体现ErsBlock块的移动情况。
5.ErsBox.java该文件方格类,是组成块的基本元素,用自己的颜色来表示块的外观。
第二章详细设计2.1主类eluosifangkuai(1)成员变量见表2-1(2)方法见表2-2(3)源代码见文件eluosifangkuai.java 2.2类GameCanvas(1)成员变量见表2-3(2)方法见表2-4表2-4 主要方法第三章运行效果3.1 系统主界面图3-1 系统主窗口3.2 俄罗斯方块录入界面图3-2 俄罗斯方块录入界面。
java课程设计报告-俄罗斯方块
JAVA程序设计课程设计之俄罗斯方块年级:13级班级:T412 网络工程指导老师:朱林小组成员:021 许浩洋时间:2015年11月11日目录摘要第一章课程设计要求第二章设计概要功能设计功能分析系统操作界面程序主要功能说明第三章调试分析与测试结果游戏运行界面测试项目功能区按键测试键盘功能测试游戏结束测试第四章设计总结改进意见《Java课程设计》心得体会摘要在现代,高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,一些有趣的桌面游戏已经成为人们在使用计算机进行工作或学习之余休闲娱乐的首选,而俄罗斯方块游戏是人们最熟悉的小游戏之一。
俄罗斯方块(Tetris, 俄文:Тетрис)是一款风靡全球的电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名。
俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。
由于上手简单、老少皆宜,从而家喻户晓,风靡世界。
为此,我们设计了一款简单的俄罗斯方块JAVA 游戏程序,以便更好的满足广大电脑工作者闲暇之余的消遣,并且也让我们学到编程技术与团队意识。
关键字:俄罗斯方块、JAVA游戏、编程课程设计要求题目名称:俄罗斯方块题目类型:设计型课程设计目的:1)了解Java的基本使用方法。
2)熟悉eclipse的运行环境。
3)用JAVA来设计一个俄罗斯方块的小游戏。
4)基本实现俄罗斯方块的应用功能。
实验原理:JAVA程序分析与设计、类的灵活运用、多态技术、模板技术、异常处理等。
实验内容:本俄罗斯方块游戏是对于随机给出不同的形状(长条形、Z字形、反Z形、田字形、L字形、反L形、T字型)下落填充给定的区域,若填满一条便消掉,记分。
若在游戏中各形状填满了给定区域,为输者。
第二章设计概要功能设计本项目是为了实现俄罗斯方块的基本功能而设计的,基本能够达到俄罗斯方块的各种游戏性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JAVA程序设计课程设计之俄罗斯方块年级:13级班级:T412 网络工程指导老师:朱林小组成员:20138346021 许浩洋时间: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课程设计》心得体会 ......................................摘要在现代,高科技的飞跃发展,人们工作习惯的改变,特别是电脑的大量普及,人们生活节奏越来越快,一些有趣的桌面游戏已经成为人们在使用计算机进行工作或学习之余休闲娱乐的首选,而俄罗斯方块游戏是人们最熟悉的小游戏之一。
俄罗斯方块(Tetris, 俄文:Тетрис)是一款风靡全球的电视游戏机和掌上游戏机游戏,它由俄罗斯人阿列克谢·帕基特诺夫发明,故得此名。
俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。
由于上手简单、老少皆宜,从而家喻户晓,风靡世界。
为此,我们设计了一款简单的俄罗斯方块JAVA游戏程序,以便更好的满足广大电脑工作者闲暇之余的消遣,并且也让我们学到编程技术与团队意识。
关键字:俄罗斯方块、JAVA游戏、编程第一章课程设计要求题目名称:俄罗斯方块题目类型:设计型课程设计目的:1)了解Java的基本使用方法。
2)熟悉eclipse的运行环境。
3)用JAVA来设计一个俄罗斯方块的小游戏。
4)基本实现俄罗斯方块的应用功能。
实验原理:JAVA程序分析与设计、类的灵活运用、多态技术、模板技术、异常处理等。
实验内容:本俄罗斯方块游戏是对于随机给出不同的形状(长条形、Z字形、反Z 形、田字形、L字形、反L形、T字型)下落填充给定的区域,若填满一条便消掉,记分。
若在游戏中各形状填满了给定区域,为输者。
第二章设计概要2.1 功能设计本项目是为了实现俄罗斯方块的基本功能而设计的,基本能够达到俄罗斯方块的各种游戏性。
项目需求分析如下:1)由方块组成的不同的随机图形会从区域上方开始缓慢落下。
2)玩家可以做的操作有:以90度为单位旋转方每一格块。
以格子为单位左右移动方块,让方块加速落下。
3)方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的随机图形会出现在区域上方开始落下。
4)当区域中某一列横向格子全部由方块填满,则该列会自动消除并成为玩家的得分。
5)一次性销毁不同行数方块得分不同,一行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;importjava.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;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 void action(){startGameAction();//请求此容器获取输入焦点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】按下时调用public 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.下一个变成当前的。