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

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

一、程序功能介绍

本程序实现了俄罗斯方块游戏的基本功能,游戏中玩家可以做的操作有:

1.中间一个方块不变其他三个以90度为单位向右旋转方每一格块,此程序会判断方块有没有空间让他实现旋转,即判断是否越界,若越界则不可以实现旋转。

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

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

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

5.当固定的方块堆到区域最上方,则游戏结束。(此功能尚未实现)

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

二、课程设计过程

1、总体概述:

设计一个简单的游戏,能够将Java的面向对象程序思想应用到课程设计中,用到Java 中常用的组件以及相应的布局方式。完成设计、编程、测试等过程,给出设计思路、设计说明书、主要的代码的说明、源代码以及可运行的游戏程序。

2、各个子类的定义:

1.定义俄罗斯方块类,通过可视化界面设定一个游戏界面窗口,用一个10*20表示游戏区域。public class TetrisGame extends JPanel

JFrame 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、T

private 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语句,随机输出方块到游戏区域顶部。

public static Tetromino randomOne();

4.用键盘监听来实现下落、移动、旋转变形。

键盘监听:public void keyPressed(KeyEvent e);

软着陆:protected void softDropAction();

硬着陆:protected void hardDropAction();

左移:protected void moveLeftAction();

右移:protected void moverightAction();

右旋:public void rotateRight();

repaint();

重绘java里repaint()是重绘component的方法;component中己有的图形发生变化后不会立刻显示,须使用repaint方法。component简而言之,组件就是对象。C++Builder中叫组件,Delphi中叫部件,而在Visual BASIC中叫控件。组件是对数据和方法的简单封装。C++ Builder中,一个组件就是一个从TComponent派生出来的特定对象组件可以有自己的属性和方法。

判断是否越界:

private boolean canMoveR();//是否碰墙,是否有其他图形

private boolean outOfBoundsTB();//

private boolean baoHanR();//判断右侧墙上是否有内容

private boolean baoHanL();//判断左侧墙上是否有内容

private boolean outOfBoundsR();

private boolean outOfBoundsL();

5.绘制图像

public void paint(Graphics g);

private void paintScore(Graphics g);

private void paintNextOne(Graphics g);

private void paintWall(Graphics g);

private void paintTetromino(Graphics g);

6.每次摆放如果将场地的一行或多行完全填满,则组成这些行的所有小正方形将被消除,并且以此来换取积分。

判断是否行满:private boolean fullCells(int row);

消行:private void destroyLines();

3、导入各种包:

1、java.awt.Font:

Font类表示字体,可以使用它以可见方式呈现文本。字体提供将字符序列映射到字形序列所需要的信息,以便在Graphics对象和Component对象上呈现字形序列。

2、java.awt.Graphics:

是一个用来绘制2D图像必须导入的java包,提供对图形图像的像素,颜色的绘制。

3、java.awt.Image:

提供创建和修改图像的各种类。使用流框架来处理图像,该框架涉及图像生产者、可选的图像过滤器和图像使用者。此框架使得在获取和生成图像的同时逐步呈现该图像成为可能。而且,该框架允许应用程序丢弃图像使用的存储空间并随时重新生成它。此包提供了多种图像生产者、使用者和过滤器,可以根据图像处理的需要来配置它们。

4、java.awt.event.KeyAdapter:

接收键盘事件的摘要适配器类。方法在这类。这类方便创建侦听器对象的存在。扩展这个类来创建一个键盘事件听众和覆盖感兴趣的事件的方法。(如果你实施KeyListener接口,你必须定义所有的方法,它。这个抽象类定义了无效的方法所有,所以你只能定义为事件你关心的方法。)创建一个使用扩展类的听众对象然后登记与组件使用组件的addkeylistener方法当一个键被按下,释放,或类型,方法在听者相关对象时,键盘事件通过它。

5、java.awt.event.KeyEvent:

提供处理由AWT组件所激发的各类事件的接口和类。有关AWT事件模型的细节,请参见

相关文档
最新文档