-
Notifications
You must be signed in to change notification settings - Fork 1
/
Asteroid.java
75 lines (66 loc) · 2.01 KB
/
Asteroid.java
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
import java.awt.*;
public class Asteroid {
private static final int NUM_POINTS = 3;
private static final double SCALE_FACTOR = 250.0;
private static final double MOVEMENT_SPEED = 0.5;
private Polygon asteroid;
private int xChange;
private int yChange;
private double moveCounter;
public Asteroid(Point p) {
int[] xCoords = new int[NUM_POINTS];
int[] yCoords = new int[NUM_POINTS];
for (int i = 0; i < NUM_POINTS; i++) {
xCoords[i] = (int)(Math.random() * SCALE_FACTOR + p.getX());
yCoords[i] = (int)(Math.random() * SCALE_FACTOR + p.getY());
}
//sort(xCoords);
//sort(yCoords);
asteroid = new Polygon(xCoords, yCoords, NUM_POINTS);
xChange = oneOrNegativeOne();
yChange = oneOrNegativeOne();
moveCounter = 0;
}
public void move() {
moveCounter += MOVEMENT_SPEED;
if (moveCounter >= 1.0) {
for (int i = 0; i < asteroid.xpoints.length; i++) {
asteroid.xpoints[i] += xChange;
asteroid.ypoints[i] += yChange;
}
asteroid = new Polygon(asteroid.xpoints, asteroid.ypoints, NUM_POINTS);
moveCounter = 0;
}
}
public void draw(Graphics g){
g.setColor(Color.WHITE);
g.fillPolygon(asteroid);
}
public void changeMovement() {
xChange = oneOrNegativeOne();
yChange = oneOrNegativeOne();
}
public Polygon getShape() {
return asteroid;
}
private static void sort(int[] arr) {
for (int i = 0; i < arr.length; i++) {
int min = i;
for (int j = i; j < arr.length; j++) {
if (arr[j] < arr[min]) {
int temp = arr[j];
arr[j] = arr[min];
arr[min] = temp;
}
}
}
}
private static int oneOrNegativeOne() {
int a = (int)Math.round(Math.random());
if (a == 0) {
return -1;
} else {
return 1;
}
}
}