俄罗斯方块
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
俄罗斯方块一共三个类中间用等号隔开
软件的开发过程
1 明确业务需求
用自然语言,将业务功能描述清楚
...
2 业务分析
找到有哪些业务对象,和图片的分析
tetris(俄罗斯方块)
|--score 累计分数
|--lines 销毁的行数
|--Wall(墙20行x10列)
|--20row(行)
|--10 col cell(列) |--tetromino(4格方块,有7种形态)
|-- 4 cell
|--nextOne 下一个准备下落的方块
|-- 4 cell
3 数据模型,一切业务对象转换为数字表示
场地按照行列划分为20x10格子
格子有属性row,col,color
4 类设计
Tetris
|-- int score
|-- int lines
|-- Cell[20][10] wall
|-- Tetromino tetromino
||--Cell[4] cells
|-- row
|-- col
|-- color
5 算法设计,就是如何利用数据的计算实现软件的功能4格方块的初始形态:I S Z J L T O
就在初始数据的数值状态设计
四格方块的下落计算:就是将每个格子的row+1
就是将下落的业务功能,转换为数字计算实现
左右移动
下落流程控制:控制方块下落与墙之间的控制关系1合理的文字流程描述
2分析文字描述中的功能(动作)为方法
3用流程控制语句连接方法实现功能
4严格测试结果!TestCase
左右移动流程控制
分数计算
界面的绘制
键盘事件控制
旋转流程控制
加速下降流程控制
开始流程控制(Timer)
暂停流程控制
继续流程控制
结束流程控制
首先是Cell类,最基本的类包含3个私有属性和get,set方法,重写Object类的toString输出方法,并规定格子所具有的3个移动功能
package com.tarena.tetris;
//包:小写英文字母,域名倒写.项目名
/**
* 最小的格子
*/
public class Cell{
private int row;
private int col;
private int color;
public Cell(int row, int col, int color) {
super();
this.row = row;
this.col = col;
this.color = color;
}
public int getCol() {
return col;
}
public void setCol(int col) {
this.col = col;
}
public int getColor() {
return color;
}
public void setColor(int color) { this.color = color;
}
public int getRow() {
return row;
}
public void setRow(int row) { this.row = row;
}
public void left(){
col--;
}
public void right(){
col++;
}
public void drop(){
row++;
}
public String toString(){
return row+","+col;
}
}
===============================================================
package com.tarena.tetris;
import java.util.Arrays;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JPanel;//是能够显示的矩形面板区域
import javax.swing.JFrame;//窗口框
import javax.swing.border.LineBorder;//实现边框
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;
/*
* 俄罗斯方块类
* 俄罗斯方块扩展了(extends)系统的显示面板,增加了墙和* 正在下落的方块
* */
public class Tetris extends JPanel{
public static final int ROWS = 20;
public static final int COLS= 10;
/*代表方块下落着陆的墙*/
private Cell[][] wall = new Cell[ROWS][COLS];
/*是正在下落的方块*/
private Tetromino tetromino;
/*下一个进入的方块*/
private Tetromino nextOne;
private static int score;