加载所需图片
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;
public class StaticValue {
public static List<BufferedImage> allMarioImage = new ArrayList<BufferedImage>();
public static BufferedImage startImage = null;
public static BufferedImage endImage = null;
public static BufferedImage bgImage = null;
public static List<BufferedImage> allFlowerImage = new ArrayList<BufferedImage>();
public static List<BufferedImage> allTriangleImage = new ArrayList<BufferedImage>();
public static List<BufferedImage> allTurtleImage = new ArrayList<BufferedImage>();
public static List<BufferedImage> allObstructionImage = new ArrayList<BufferedImage>();
public static BufferedImage marioDeadImage = null;
// 将全部图片初始化
public static void init() {
// 将所有Mario图片保存到静态属性中
for (int i = 1; i <= 10; i++) {
try {
System.out.println(StaticValue.class.getClassLoader()
.getResource("images/" + i + ".gif").getFile());
BufferedImage tempImage = ImageIO
.read(new File(StaticValue.class.getClassLoader()
.getResource("images/" + i + ".gif").getFile()));
allMarioImage.add(tempImage);
} catch (IOException e) {
e.printStackTrace();
}
}
// 导入全部背景图片
try {
startImage = ImageIO
.read(new File(StaticValue.class.getClassLoader()
.getResource("images/start.gif").getFile()));
endImage = ImageIO.read(new File(StaticValue.class.getClassLoader()
.getResource("images/firststageend.gif").getFile()));
bgImage = ImageIO.read(new File(StaticValue.class.getClassLoader()
.getResource("images/firststage.gif").getFile()));
} catch (IOException e) {
e.printStackTrace();
}
// 将所有敌人的图片保存到静态属性中
for (int i = 1; i <= 5; i++) {
try {
if (i <= 2) {
BufferedImage tempImage = ImageIO.read(new File(
StaticValue.class.getClassLoader()
.getResource("images/flower" + i + ".gif")
.getFile()));
allFlowerImage.add(tempImage);
}
if (i <= 3) {
BufferedImage tempImage = ImageIO
.read(new File(
StaticValue.class
.getClassLoader()
.getResource(
"images/triangle" + i
+ ".gif").getFile()));
allTriangleImage.add(tempImage);
}
BufferedImage tempImage = ImageIO.read(new File(
StaticValue.class.getClassLoader()
.getResource("images/Turtle" + i + ".gif")
.getFile()));
allTurtleImage.add(tempImage);
} catch (IOException e) {
e.printStackTrace();
}
}
// 将所有障碍物图片保存到静态属性中
for (int i = 1; i <= 12; i++) {
try {
BufferedImage tempImage = ImageIO.read(new File(
StaticValue.class.getClassLoader()
.getResource("images/ob" + i + ".gif")
.getFile()));
allObstructionImage.add(tempImage);
} catch (IOException e) {
e.printStackTrace();
}
}
// 导入mario死亡的图片
try {
marioDeadImage = ImageIO
.read(new File(StaticValue.class.getClassLoader()
.getResource("images/over.gif").getFile()));
} catch (IOException e) {
e.printStackTrace();
}
}
}
代码中存在大量重复现象,需要进行代码重构,重构后如下所示:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.imageio.ImageIO;
public class StaticValue {
public static List<BufferedImage> allMarioImage = new ArrayList<BufferedImage>();
public static BufferedImage startImage = null;
public static BufferedImage endImage = null;
public static BufferedImage bgImage = null;
public static List<BufferedImage> allFlowerImage = new ArrayList<BufferedImage>();
public static List<BufferedImage> allTriangleImage = new ArrayList<BufferedImage>();
public static List<BufferedImage> allTurtleImage = new ArrayList<BufferedImage>();
public static List<BufferedImage> allObstructionImage = new ArrayList<BufferedImage>();
public static BufferedImage marioDeadImage = null;
// 将全部图片初始化
public static void init() {
// 将所有Mario图片保存到静态属性中
for (int i = 1; i <= 10; i++) {
try {
allMarioImage.add(loadImage("images/" + i + ".gif"));
} catch (IOException e) {
e.printStackTrace();
}
}
// 导入全部背景图片及马里奥死亡的图片
try {
startImage = loadImage("images/start.gif");
endImage =loadImage("images/firststageend.gif");
bgImage = loadImage("images/firststage.gif");
marioDeadImage = loadImage("images/over.gif");
} catch (IOException e) {
e.printStackTrace();
}
// 将所有敌人的图片保存到静态属性中
for (int i = 1; i <= 5; i++) {
try {
if (i <= 2) {
allFlowerImage.add(loadImage("images/flower"+i+".gif"));
}
if (i <= 3) {
allTriangleImage.add(loadImage("images/triangle"+i+".gif"));
}
allTurtleImage.add(loadImage("images/Turtle"+i+".gif"));
} catch (IOException e) {
e.printStackTrace();
}
}
// 将所有障碍物图片保存到静态属性中
for (int i = 1; i <= 12; i++) {
try {
allObstructionImage.add(loadImage("images/ob"+i+".gif"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static BufferedImage loadImage(String url) throws IOException {
BufferedImage tempImage = ImageIO.read(new File(
StaticValue.class.getClassLoader()
.getResource(url)
.getFile()));
return tempImage;
}
}