-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMyBullet.java
More file actions
90 lines (67 loc) · 1.88 KB
/
Copy pathMyBullet.java
File metadata and controls
90 lines (67 loc) · 1.88 KB
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
/**
* MyTarget
*/
import java.awt.*;
import javax.media.opengl.GL2;
import javax.media.opengl.GLAutoDrawable;
import com.jogamp.opengl.util.gl2.GLUT;
import java.util.Random;
import java.util.Arrays;
public class MyBullet {
private static int bulletnum = 0;
private static float bulletsize = 0.3f;
private static boolean isStopping = false;
// color
static float black[] = { 0.0f, 0.0f, 0.0f, 1.0f };
static float silver[] = { 0.5f, 0.5f, 0.5f, 0.1f };
private float v[] = { 0.0f, 0.0f };
private float pos[] = { 0.0f, 0.0f };
private float speed = 0.5f;
public MyBullet() {
bulletnum += 1;
}
public static void stop() { isStopping = true; }
float calcSize(float a, float b) {
return (float)Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2));
}
// set speed vector
public void setv(float x, float y) {
float size = calcSize(x, y);
v[0] = x/size; v[1] = y/size;
}
public void setInitPos(float th) {
float r = MyTarget.getR()+5;
pos[0] = (float)Math.cos(th/180*Math.PI)*r;
pos[1] = (float)Math.sin(th/180*Math.PI)*r;
}
public static int getNum() { return bulletnum; }
public float[] getPos() { return pos; }
// update pos
public void update() {
if (!isStopping) {
pos[0] = pos[0]+v[0]*speed;
pos[1] = pos[1]+v[1]*speed;
}
}
// draw target
public void draw(GLAutoDrawable drawable) {
GL2 gl = drawable.getGL().getGL2();
GLUT glut = new GLUT();
gl.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_AMBIENT_AND_DIFFUSE, black, 0);
gl.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_SPECULAR, silver, 0);
gl.glTranslated(pos[0], pos[1], 0.0f);
glut.glutSolidSphere(bulletsize, 20, 20);
update();
}
@Override
protected void finalize() throws Throwable {
try {
super.finalize();
} finally {
destruction();
}
}
private void destruction() {
bulletnum -= 1;
}
}