《俄罗斯方块》(Tetris)是一款由俄罗斯人阿列克谢·帕基特诺夫于1984年6月发明的休闲游戏。他的基本规则是通过左移、右移、旋转摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。
分析:
- 画出游戏背景墙。
- 游戏自动输出的四格方块有7种不同形状和不同颜色,每一个都由四个小方块组成。
- 四格方块随机生成。
准备:七个不同颜色的方块图片,背景墙图片,游戏结束提示图片
一,定义俄罗斯方块中的最小单位方块——Cell类
我们将整个背景看成10列20行的方格,那么,小方块就有了三个共同属性:行号(row),列号(col),方块颜色(即插入的图片image)。
定义类Cell
public class Cell{
private int row;
private int col;
private BufferedImage image;
}
由于方块移动的格数为整数,所以row和col为int型。
这里要注意,image的类型BufferedImage是引用数据类型,需要导包。
小方块有三个共同特征:左移,右移,下落。
在Cell类中定义方法
public void left() {
col--;
}
public void right() {
col++;
}
public void drop() {
row++;
}
注意:方法名开头字母小写
重载构造方法,定义三个属性的get方法和set方法,Cell就完成了。
二、定义四格方块的父类——Tetromino类
每个四格方块由四个最小方块组成,所以,我们将四个方块储存在长度为4的数组cells中。
protected Cell[] cells = new Cell[4];
Tetromino类要被子类继承,所以cells的访问修饰符为protected。
每个四个方块左移【moveLeft()】、右移【moveRight()】、下落【softDrop()】。由于俄罗斯方块中有一个功能为”按空格键使方块降落到最低可降落位置“,所以这里将下落命名为”软下落“。
通过分析可知,四个方块的移动就是行号(row)或列号(col)的增减,这里我们以左移为例。
public void moveLeft() {
for(int i=0;i<cells.length;i++) {
Cell cell = cells[i];
cells[i].left();
}
}
四格方块向左移动,实际上就是四个小方块分别向左移动一格,即列号减一。我们使用for循环,调用四次left().
右移,下落同理。
重写toString方法。
--------------------------TBC-------------------------------