首页>代码>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; } }

微信网友_7556339099734016 LV3
6月23日
chy520 LV1
2024年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日

微信网友_7556339099734016 LV3
6月23日
dushine LV3
4月10日
luoyanglin LV2
2024年9月14日
2824163870szy
2024年7月1日
暂无贡献等级
zr20050503 LV2
2024年6月27日
hainabian1977 LV2
2024年6月24日
bill1234 LV1
2024年6月23日
chy520 LV1
2024年5月29日
douxing
2024年3月5日
暂无贡献等级
crapcrap LV2
2024年2月1日