首页>代码>java swing开发的俄罗斯方块游戏,包含完整代码+详细注释>/ItcastTetris1.02_final/src/cn/itcast/tetris/entities/ShapeFactory.java
package cn.itcast.tetris.entities; import java.awt.Color; import java.util.Random; import cn.itcast.tetris.listener.ShapeListener; import cn.itcast.tetris.util.Global; /** * 图形工厂<BR> * 可以产生多种形状, 多种颜色的图形<BR> * <BR> * setDefaultShapeColor() 方法可以设置默认产生的图形的颜色<BR> * 也可以通过 setColorfulShape() 方法设置是否产生彩色图形<BR> * <BR> * */ public class ShapeFactory { /** * 可以生产出这些形状的图形 */ protected static int shapes[][][] = new int[][][] { /* 第一种 */{ /** ***** */ { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, /* 第二种 */ { /** ********* */ { 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } }, /* 第三种 */ { /** ******* */ { 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 }, { 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 } }, /* 第四种 */ { /** ******** */ { 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, } }, /* 第五种 */ { /** ******** */ { 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } }, /* 第六种 */ { /** *********** */ { 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, { 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } }, /* 第七种 */ { /** ********** */ { 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 } }, }; protected Random random = new Random(); /** * 图形的默认颜色 */ public static final Color DEFAULT_SHAPE_COLOR = new Color(0x990066); /** * 生产的图形的颜色 */ protected Color defaultShapeColor = DEFAULT_SHAPE_COLOR; /** * 是否产生彩色图形 */ protected boolean colorfulShape; /** * 生产出随机类型的图形,并且把传过来的监听器注册给它 * * @param shpaeListener * @return */ public Shape getShape(ShapeListener shapeListener) { int type = random.nextInt(shapes.length); Shape shape = new Shape(shapes[type], random .nextInt(shapes[type].length)); shape.setColor(colorfulShape ? Global.getRandomColor() : defaultShapeColor); shape.addShapeListener(shapeListener); return shape; } /** * 得到默认产生的图形的颜色 * * @return */ public Color getDefaultShapeColor() { return defaultShapeColor; } /** * 设置默认产生的图形的颜色 * * @param defaultShapeColor */ public void setDefaultShapeColor(Color defaultShapeColor) { this.defaultShapeColor = defaultShapeColor; } /** * 是否产生彩色图形 * * @return 是否产生彩色图形 */ public boolean isColorfulShape() { return colorfulShape; } /** * 设置是否产生彩色图形 * * @param colorfulShape */ public void setColorfulShape(boolean colorfulShape) { this.colorfulShape = colorfulShape; } }
最近下载更多
chy520 LV1
6月2日
ClydeSon LV5
2023年12月18日
微信网友_6770780673069056 LV2
2023年12月9日
npc也有忧伤 LV3
2022年3月19日
guzhiguo0313 LV5
2022年2月12日
闫小玥 LV8
2021年12月22日
秒速一千米 LV2
2021年9月4日
jnagri LV6
2021年7月6日
zhangjian800 LV1
2021年5月25日
ybc629 LV3
2020年12月23日
最近浏览更多
luoyanglin LV2
9月14日
2824163870szy
7月1日
暂无贡献等级
zr20050503 LV2
6月27日
hainabian1977 LV2
6月24日
bill1234 LV1
6月23日
chy520 LV1
5月29日
douxing
3月5日
暂无贡献等级
crapcrap LV2
2月1日
zhaoyunlong36987
1月23日
暂无贡献等级
yx666666 LV1
1月5日