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---对应的图片
3.同理,以相同的行为定义为方法。
向左移动---left()
向右移动---right()
向下移动---drop()
4.JAVABEAN规范提供无参和有参构造器,get/set方法,toString()方法。
三.Tetromino类型(七种组合的父类)
2.对应行为(方法):
向左移动---moveLeft()
向右移动---moveRight()
向下移动---softDrop()
3.使用for循环让每一个方块向左,向右,向下移动
四.根据父类定义出七种T,O,I,J,L,S,Z子类型(七种组合各自成一个类都继承于父类Tetromino).
1 T,O,I,J,L,S,Z子类型:提供构造器,进初始化,T型的四格方块的位置.(其他6种同理)
2.图片加载
图片只需加载一次,用static{}静态块加载,下面定义一个主类,写在主方法里。
五.主类Tetris---extends JPanel(提供静态属性,加载静态资源)
2.用static{}块加载图片(用try...catch()捕捉异常)
备注:getResource(String url),url :加载图片的路径,相对位置同包下。
3.启动程序的入口 游戏开始
1.创建一个游戏窗口
2.俄罗斯方块的主类:前提:必须是一块面板JPanel,可以嵌入窗口。
创建游戏界面,即面板
Tetris panel = new Tetris();
将面板嵌入窗口
frame.add(panel);
3.面板上自带一个画笔,有一个功能:自动绘制(其实是调用了JPanel里的paint())
重写Jpanel类中的paint(graphtcs g)绘制背景:
public void paint(Graphics g) {
}
4.定义面板两个属性:
5.随机生成一个四格方块:
6.绘制墙:属性:墙,20行 10列的 表格 宽度为26
private Cell[][] wall = new Cell[20][10];
7.绘制正方体
8.提供绘制正在下落currentOne的方块:
9.绘制一下个将要下落的四格方块:paintNextOne(g)
10.游戏的主要逻辑封装在start方法里:panel.start()
public void start(){
}
11.四格方块自动下落
12.定义方法canDrop()和landTowall():
13.开启键盘监听事件:
14.使用Left键,Right键,Down键控制行为:
Down键:
Left键:
Right键:
以上代码结果: