?? shapefactory.java
字號(hào):
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>
* 可以產(chǎn)生多種形狀, 多種顏色的圖形<BR>
* <BR>
* setDefaultShapeColor() 方法可以設(shè)置默認(rèn)產(chǎn)生的圖形的顏色<BR>
* 也可以通過 setColorfulShape() 方法設(shè)置是否產(chǎn)生彩色圖形<BR>
* <BR>
*
* @version 1.0, 01/01/08
*
* @author 湯陽光
*
*/
public class ShapeFactory {
/**
* 可以生產(chǎn)出這些形狀的圖形
*/
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();
/**
* 圖形的默認(rèn)顏色
*/
public static final Color DEFAULT_SHAPE_COLOR = new Color(0x990066);
/**
* 生產(chǎn)的圖形的顏色
*/
protected Color defaultShapeColor = DEFAULT_SHAPE_COLOR;
/**
* 是否產(chǎn)生彩色圖形
*/
protected boolean colorfulShape;
/**
* 生產(chǎn)出隨機(jī)類型的圖形,并且把傳過來的監(jiān)聽器注冊(cè)給它
*
* @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;
}
/**
* 得到默認(rèn)產(chǎn)生的圖形的顏色
*
* @return
*/
public Color getDefaultShapeColor() {
return defaultShapeColor;
}
/**
* 設(shè)置默認(rèn)產(chǎn)生的圖形的顏色
*
* @param defaultShapeColor
*/
public void setDefaultShapeColor(Color defaultShapeColor) {
this.defaultShapeColor = defaultShapeColor;
}
/**
* 是否產(chǎn)生彩色圖形
*
* @return 是否產(chǎn)生彩色圖形
*/
public boolean isColorfulShape() {
return colorfulShape;
}
/**
* 設(shè)置是否產(chǎn)生彩色圖形
*
* @param colorfulShape
*/
public void setColorfulShape(boolean colorfulShape) {
this.colorfulShape = colorfulShape;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -