首页>代码>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; } }
最近下载更多
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日
lijianfeng123 LV3
2020年12月23日
最近浏览更多
douxing
3月5日
暂无贡献等级
crapcrap LV2
2月1日
zhaoyunlong36987
1月23日
暂无贡献等级
yx666666 LV1
1月5日
qiyunsama
2023年12月27日
暂无贡献等级
1351408674 LV1
2023年12月27日
ClydeSon LV5
2023年12月18日
微信网友_6770780673069056 LV2
2023年12月9日
xingshizourou
2023年11月5日
暂无贡献等级
微信网友_6699076084797440 LV7
2023年10月30日