但是对于Map里的图片又是从哪里来的呢?当然是读取文件的来的。所以有设计了一个ImageUtil类来读取图片
public class ImageUtil {
public static BufferedImage getImage(String imagePath) {//注意是静态方法
try {
//使用ImageIO读取图片
return ImageIO.read(new File(imagePath));
} catch (IOException e) {
//读取图片发生异常,抛出GameException
throw new GameException(“read image error”);
}
}
}
//于是map中的图片就是下面代码得来的。从map中得到图片对象,如果map中没有对应的图片对象,则创建
private Image getImage(int key) {
if(this.images.get(key)==null) {
Image s = ImageUtil.getImage(“images/square” + key+”.jpg”);
this.images.put(key,s);//
}
return this.images.get(key);
}
(个人认为把图片放入map应该单独定义一个方法)
得到了图片下面改创建把图片加入到Square里进而创建一个大方块了,注意由于文件里保留了七种不同颜色的图片(/
/总共有七种颜色的方块
private final static int COLOR_SIZE = 7;),
所以获得图片时也是提供一个在PieceCreatorImplement类里提供了random属性
(private Random random = new Random();)
来随机读取一张图片,
public Piece createPiece(int x, int y) {
//随机得到一张方块图片
Image image = getImage(random.nextInt(COLOR_SIZE));
Piece piece = initPiece(image);
return piece;
}
/**
* 初始化各个大方快,随机创建各个大方框
*/
public Piece initPiece(Image image) {
Piece piece = null;
int pieceType = random.nextInt(SQUARE_SIZE);
if(pieceType == 0) {
piece = new Piece0(image);
}else if(pieceType == 1) {
piece = new Piece1(image);
}else if(pieceType == 2) {
piece = new Piece0(image);
}else if(pieceType == 2) {
piece = new Piece3(image);
}else if(pieceType == 3) {
piece = new Piece4(image);
}else if(pieceType == 5) {
piece = new Piece5(image);
}else if(pieceType == 6) {
piece = new Piece6(image);
}
return piece;
}
需要注意的是,游戏中大方块出现的位置和移动的位置的实现是通过改变方块位置的纵横坐标来实现的,又由于实际上大方块是由小方块组成的,只要同时改变组成大方块的所有小方块的x和y 坐标就可以了,为此Piece提供了一以下方法
//让Piece对象中所有的Square对象的x坐标都加上参数x
public void setSquareXLocation(int x) {
for(int i = 0;i//得到一个变化
Listchange = this.changes.get(i);
for(int j = 0;jSquare s = change.get(j);
s.setBeginX(s.getBeginX()+x);
}
}
}
//让Piece对象中所有的Square对象的y坐标都加上参数y
public void setSquareYLocation(int y) {
for(int i = 0;i//从变化容器里得到各个成有不同形状的大方块的容器
Listchange = this.changes.get(i);
for(int j = 0;j//得到容器里的小方块
Square s = change.get(j);
s.setBeginY(s.getBeginY()+y);
}
}
}
今天的文章java俄罗斯方块实训心得_俄罗斯方块心得体会分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/26260.html