《俄罗斯方块》(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-------------------------------