1.分析游戏界面,通过游戏界面,抽象出来几种类型
2.定义类型:
Cell:
共同特征:行号,列号:一个方格里有行号列号,我们添加构造器
(构造器 一个类中至少要提供两个构造器 一个有参一个无参【构造方法】)
图片 image
给共同特征赋予get/set方法,toString方法以及一个有参构造器
共同行为:向左,向右,向下移动,提供javaBean相关规范(1)
Tetromino类型:七种组合的父类
共同特征:Cells—四个方块(用数组表示)--权限修饰词protected
共同行为; 向左,向右,向下移动,提供javabean相关规范
添加randomOne()–用来提供随机生成的一个方块
根据父类,定义出来七种子类:T,I,O,J,L,S,Z
给属性赋具体元素
在此需将T.png导入eclipse中(复制粘贴),其余六种效仿T即可。
在测试类中调用random方法
主类Tetris—extendsJPanel
提供静态属性,加载静态资源(前提:必须是一块面板JPanel类型,可以嵌入窗口。面板上自带一个画笔,有一个功能:自动绘制.,其实是调用了JPanel里的paint()方法。)
1. 面板会自动调用绘制方法paint(graphics g)
2. 重写paint方法,绘制图片背景。
3. 绘制网络和嵌入墙中的方块。paintWall(graphice g)提供属性wall ----是一个Cell类型的二维数组。20行,10列
属性Cell_Size------一个方块的宽度
4. 提供属性:
currentOne -----正在下落的方块
nextOne ----下一个将要下落的方块
5. 提供绘制正在下落的方块的方法paintCurrentOne(Graphics g),在重写的paint方法内去调用
Javabean规范,就是程序员在定义类时,默认遵守的一种规范
如:(1)添加两个构造器
(2)属性一般都私有化
(3)提供共有的get/set方法
(4)重写toString方法
(5)重写equals方法和hashcode方法