JAVA编写俄罗斯方块

JAVA编写俄罗斯方块

一.分析游戏界面

首先分析游戏界面,通过游戏界面,抽象出来几种类型。

1.Cell类型

2.Tetromino类型(七种组合的父类)

3.根据父类定义出七种T,O,I,J,L,S,Z子类型(七种组合各自成一个类都继承于父类Tetromino)

4.主类Tetris---extends JPanel(提供静态属性,加载静态资源)

二.Cell类

1.Cell类---俄罗斯方块中最小的最小单位。

2.每个方格都有行号,列号和图片,我们以行号和列号区分方格,所以将共同特征抽象出来定义成属性。

row---行号   col---列号   image---对应的图片

JAVA编写俄罗斯方块_第1张图片

3.同理,以相同的行为定义为方法。

向左移动---left()

向右移动---right()

向下移动---drop()

JAVA编写俄罗斯方块_第2张图片

4.JAVABEAN规范提供无参和有参构造器,get/set方法,toString()方法。

JAVA编写俄罗斯方块_第3张图片

JAVA编写俄罗斯方块_第4张图片


三.Tetromino类型(七种组合的父类)

1.四格方块属性:
cells----对应四格小方块
Cell[] cells =  new Cell[4];

2.对应行为(方法):

向左移动---moveLeft()

向右移动---moveRight()

向下移动---softDrop()

JAVA编写俄罗斯方块_第5张图片

3.使用for循环让每一个方块向左,向右,向下移动

JAVA编写俄罗斯方块_第6张图片


四.根据父类定义出七种T,O,I,J,L,S,Z子类型(七种组合各自成一个类都继承于父类Tetromino).

1 T,O,I,J,L,S,Z子类型:

JAVA编写俄罗斯方块_第7张图片

1.T类型:

提供构造器,进初始化,T型的四格方块的位置.(其他6种同理)

JAVA编写俄罗斯方块_第8张图片

2.图片加载

图片只需加载一次,用static{}静态块加载,下面定义一个主类,写在主方法里。

五.主类Tetris---extends JPanel(提供静态属性,加载静态资源)

1.定义静态属性(加载图片)加载图片

JAVA编写俄罗斯方块_第9张图片

2.用static{}块加载图片(用try...catch()捕捉异常)

备注:getResource(String url),url :加载图片的路径,相对位置同包下。

JAVA编写俄罗斯方块_第10张图片

3.启动程序的入口   游戏开始

1.创建一个游戏窗口

JAVA编写俄罗斯方块_第11张图片

2.俄罗斯方块的主类:前提:必须是一块面板JPanel,可以嵌入窗口。

创建游戏界面,即面板

Tetris panel = new Tetris();

将面板嵌入窗口

frame.add(panel);

3.面板上自带一个画笔,有一个功能:自动绘制(其实是调用了JPanel里的paint())

重写Jpanel类中的paint(graphtcs g)绘制背景:

public void paint(Graphics g) {

  }

JAVA编写俄罗斯方块_第12张图片

4.定义面板两个属性:

JAVA编写俄罗斯方块_第13张图片

5.随机生成一个四格方块:

JAVA编写俄罗斯方块_第14张图片

6.绘制墙:属性:墙,20行 10列的 表格 宽度为26

private Cell[][] wall  = new Cell[20][10];

JAVA编写俄罗斯方块_第15张图片

7.绘制正方体

JAVA编写俄罗斯方块_第16张图片

8.提供绘制正在下落currentOne的方块:

JAVA编写俄罗斯方块_第17张图片


9.绘制一下个将要下落的四格方块:paintNextOne(g)

JAVA编写俄罗斯方块_第18张图片

10.游戏的主要逻辑封装在start方法里:panel.start()

public void start(){

}

11.四格方块自动下落

JAVA编写俄罗斯方块_第19张图片

12.定义方法canDrop()和landTowall():

JAVA编写俄罗斯方块_第20张图片



JAVA编写俄罗斯方块_第21张图片

13.开启键盘监听事件:

JAVA编写俄罗斯方块_第22张图片

14.使用Left键,Right键,Down键控制行为:

Down键:

JAVA编写俄罗斯方块_第23张图片

Left键:

JAVA编写俄罗斯方块_第24张图片

Right键:


JAVA编写俄罗斯方块_第25张图片

以上代码结果:

JAVA编写俄罗斯方块_第26张图片

               

   









你可能感兴趣的:(JAVA编写俄罗斯方块)