1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131 |
package bump_n_jump;
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsEnvironment;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.ArrayList;
import javax.imageio.ImageIO;
/**
* The stars to collect
* @author Aaron Haurwitz
*
*/
public class Star extends StaticLevelElement {
private static final double DEFAULT_WIDTH = 25;
private static final double DEFAULT_HEIGHT = 25;
private boolean shown;
private ArrayList<BufferedImage> frames;
private int currentFrame = 0;
private static final int NUMFRAMES = 3;
private boolean isExploding = false;
public Star(double x, double y, BufferedImage bi) {
super(x, y, DEFAULT_WIDTH, DEFAULT_HEIGHT, bi);
shown = true;
}
public Star(double x, double y) {
super(x, y, DEFAULT_WIDTH, DEFAULT_HEIGHT);
try {
image = ImageIO.read(getClass().getResource("../images/star.png"));
}
catch (IOException e) {
System.err.println(e.toString());
}
shown = true;
frames = loadStripImageArray("../images/starStrip.png", NUMFRAMES);
}
public boolean isShown() {
return shown;
}
public void setShown(boolean shown) {
this.shown = shown;
}
public BufferedImage loadImageBuffered (String imageName)
{
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsConfiguration gc = ge.getDefaultScreenDevice().getDefaultConfiguration();
try {
BufferedImage bi = ImageIO.read(getClass().getResource(imageName));
int transparency = bi.getColorModel().getTransparency();
BufferedImage copy = gc.createCompatibleImage(bi.getWidth(), bi.getHeight(), transparency);
Graphics2D g2d = copy.createGraphics();
g2d.drawImage(bi, 0, 0, null);
g2d.dispose();
return copy;
}
catch (IOException e)
{
System.err.println("Image loading error: " + e.toString());
return null;
}
}
/**
* called when a star is hit.
* @return
*/
public void explode() {
if (currentFrame < 1) {
x -= 13;
y -= 13;
rectangle.setRect(-10, -10, 0, 0);
}
image = frames.get(currentFrame);
if (currentFrame == NUMFRAMES - 1) {
isExploding = false;
shown = false;
return;
}
currentFrame++;
}
public ArrayList <BufferedImage> loadStripImageArray(String imageName, int numImages)
{
ArrayList<BufferedImage> list = new ArrayList<BufferedImage>();
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsConfiguration gc = ge.getDefaultScreenDevice().getDefaultConfiguration();
BufferedImage stripIm;
if (numImages > 0) {
stripIm = loadImageBuffered(imageName);
if (stripIm != null) {
int width = (int) stripIm.getWidth() / numImages;
int height = stripIm.getHeight();
int transparency = stripIm.getColorModel().getTransparency();
Graphics2D stripGC;
for (int i = 0; i < numImages; i++) {
BufferedImage holder = gc.createCompatibleImage(width, height, transparency);
list.add(holder);
stripGC = holder.createGraphics();
stripGC.drawImage(stripIm, 0, 0, width, height, i * width, 0, (i * width) + width, height, null);
stripGC.dispose();
}
return list;
}
}
return null;
}
public void setIsExploding(boolean isExploding) {
this.isExploding = isExploding;
rectangle.setRect(-10, -10, 0, 0);
}
public boolean isExploding() {
return isExploding;
}
} |