俄罗斯方块游戏设计 俄罗斯方块游戏设计 JAVA语言 Eclipse平台开发 以下为开发过程需要使用的packages及其中classes and methods JAVA语言和C语言、C++语言很接近,它是一种面向对象、独立于开发平台的高级编程语言。它独特的语法规则和类库是组成JAVA技术的两个重要部分。 假期总结: 坦白讲,这个暑假我没花多少时间在学习计算机编程技术上面。在刚放暑假的时候,我去图书馆借了七八本编程书,有Visual C++、C#、以及JAVA方面的书,信誓旦旦这个暑假要好好研究技术。然而,执行力是我很缺乏的一个缺陷吧。在家贪图一时之爽,基本上没去翻书学习,久而久之,就越害怕打开书本。后期提前回学校,学了一点点JAVA。回想整个大一,包括这个暑假,我很羞愧。自己在过去的一年里浪费了太多的时间,对成绩抱着一种比较无所谓的心态,对于学习也是,可想而知,与别人的差距也就越来越大,这也是我现在不愿意看到的。在往后的日子,我不敢保证自己能如何刻苦勤奋地学习,但是,至少我会尽力做到问心无愧,我会清楚自己要什么,并且行动起来。
一、Package cn.itcast.tetris.controller
控制器 控制Ground, Snake, Food 负责游戏的逻辑 处理按键事件 Method Summary void addGameListener(GameListener l) 添加监听器, 可添加多个
void beforeDeleteFullLine(Ground ground, int lineNum) 处理Ground 触发的 beforeDeleteFullLine 事件将会改变满行的颜色并暂停一段时间
void continueGame() 继续游戏
void fullLineDeleted(Ground ground, int deletedLineCount) 处理Ground 触发的 fullLineDeleted 事件, 这个方法什么也没做, 只是打印了一句话 javax.swing.JLabel getGameInfoLabel() 得到显示提示信息的组件
GamePanel getGamePanel()
Ground getGround() java.lang.String getNewInfo() 获得游戏的最新提示信息
ShapeFactory getShapeFactory()
void groundIsFull(Ground ground) 处理Ground 的 groundIsFull() 事件, 将触发游戏结束事件
boolean isPausingGame() 游戏是否是在暂停状态
boolean isPlaying() 是否正在游戏中
boolean isShapeMoveDownable(Shape s) 询问一下图形是否可以下落,如果不能下落了,就会让图形变成障碍物 这个方法是同步的
void keyPressed(java.awt.event.KeyEvent e) 处理键盘按键 LEFT: 向左移动 RIGHT:向右移动 DOWN: 向下移动 UP: 变形 PAGE UP: 加快速度 PAGE DOWN: 减慢速度 Y: 重新开始游戏 ENTER: 暂停/继续
void newGame() 开始一个新游戏
void pauseGame() 暂停游戏
void removeGameListener(GameListener l) 移除监听器 void setGameInfoLabel(javax.swing.JLabel gameInfoLabel) 设置
void setGamePanel(GamePanel gamePanel)
void setGround(Ground ground) void setShapeFactory(ShapeFactory shapeFactory) void shapeMovedDown(Shape s) 处理图形触发的 shapeMovedDown (图形下落) 事件 将会重新显示
void stopGame() 停止当前游戏
一、Package cn.itcast.tetris.entities Class Summary Ground 可以叫做地形, 或地面 维护障碍物的信息 可以使用提供的 addObstacle(int, int) 和 addStubbornObstacle(int ,int) 方法添加障碍物。
Shape 维护一个图形, 一个图形可以有一种或多种状态
可以通过 setColor() 方法改变图形的颜色 可以通过覆盖 drawUnit(Graphics, int, int, int, int) 方法改变图形的显示
用内部类 ShapeDriver 驱动图形定时向下移动 使用时一定要给实例注册监听器, 否则不能正常运行
ShapeFactory 图形工厂 可以产生多种形状, 多种颜色的图形
setDefaultShapeColor() 方法可以设置默认产生的图形的颜色 也可以通过 setColorfulShape() 方法设置是否产生彩色图形 UnitType 可以表示地面里面的障碍物, 不可消除的障碍物, 空白 外部不可以直接new 一个实例, 而应该用 clone() 方法产生实例(防止产生不能识别的类型) 例如产生一个障碍物:
UnitType aObstacle = UnitType.OBSTACLE.clone();
1、Class Ground: public class Ground extends java.lang.Object
可以叫做地形, 或地面 维护障碍物的信息 可以使用提供的 addObstacle(int, int) 和 addStubbornObstacle(int ,int) 方法添加障碍物。
可以通过setObstacleColor(), setStubbornObstacleColor() 或 setGriddingColor()方法更改障碍物或网格的颜色 通过setDrawGridding() 方法设置是否画空白(网格) 用 setColorfulSupport() 方法设置是否支持彩色显示
覆盖 drawObstacle(Graphics, int, int, int, int) 方法可以改变障碍物的显示方式 覆盖 drawStubbornObstacle(Graphics, int, int, int, int) 方法可以改变不可消除的障碍物的显示方式
Method Summary void accept(Shape shape) 把指定的图形变成石头 然后将会调用 deleteFullLine() 方法扫描并删除满行
void addGroundListener(GroundListener l) 添加监听器, 可添加多个
void addObstacle(int x, int y) 在指定的位置添加一个障碍物
void addStubbornObstacle(int x, int y) 在指定的位置添加一块不可消除的障碍物
void changeFullLineColor(int lineNum) 改变指定行的颜色,(可以做为消行前的效果)
void clear() 清空容器
void deleteFullLine() 扫描并删除满行 将调用 deleteLine(int) 方法删除满行
void deleteLine(int lineNum) 删除指定的行(这一行上面所有的石头整体下移一行)
void drawGridding(java.awt.Graphics g, int x, int y, int width, int height) 画一个空白的方法(网格), 可以覆盖这个方法改变空白(网格)的显示
void drawMe(java.awt.Graphics g) 显示, 将调用 drawGridding(Graphics, int, int, int, int), drawObstacle(Graphics, int, int, int, int)和 drawStubbornObstacle(Graphics, int, int, int, int) 方法
void drawObstacle(java.awt.Graphics g, int x, int y, int width, int height) 画一个障碍物的方法, 可以覆盖这个方法改变障碍物的显示 void drawStubbornObstacle(java.awt.Graphics g, int x, int y, int width, int height) 画一个不可消除的障碍物的方法, 可以覆盖这个方法改变不可消除的障碍物的显示
void generateSomeStochasticObstacle(int amount, int lineNum) 在指定的范围内随机生成一些障碍物 产生的区域行是1 - lineNum
void genernateAStubbornStochasticObstacle() 随机生成一个不可消除的障碍物, 这个随机的坐标的y 坐标不小于5
java.awt.Color getFullLineColor() 得到满行的颜色
java.awt.Color getGriddingColor() 得到网格的颜色
java.awt.Color getObstacleColor() 得到障碍物的颜色
java.awt.Color getStubbornObstacleColor() 得到不可消除的障碍物的颜色
void init() 初始化,将会调用clear() 方法
boolean isBlank(int x, int y) 指定位置是否是空白
boolean isColorfulSupport() 是否支持彩色显示
boolean isDrawGridding() 是否画网格
boolean isFull() 容器是否放满了(是否还能接受图形)
boolean isMoveable(Shape shape, int action) 根据图形的动作,判断是否会碰到障碍物或不可消除的障碍物, 或是否会超出边界,
boolean isObstacle(int x, int y) 指定位置是否是障碍物
boolean isStubbornObstacle(int x, int y) 指定位置是否是不可除的障碍物