-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathBase.java
More file actions
139 lines (118 loc) · 2.92 KB
/
Base.java
File metadata and controls
139 lines (118 loc) · 2.92 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
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
132
133
134
135
136
137
138
139
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Image;
import javax.sound.sampled.Clip;
import javax.swing.ImageIcon;
public class Base extends Ship {
public enum Direction {
LEFT, RIGHT
}
private Missile missile;
private final Clip blaster = getSound("aud_basefire.wav");
private final Clip hit = getSound("aud_hit.wav");
private boolean left, right;
private boolean dead;
private int x = 220, y = 390;
private int deadCount = 0;
private Image i = new ImageIcon("src/img_base.gif").getImage();
private int score = 0;
String scoreString = "score: " + score;
public void setAlive()
{
dead = false;
i = new ImageIcon("src/img_base.gif").getImage();
x = 220;
}
@Override
public int getX()
{
return x;
}
@Override
public int getY()
{
return y;
}
public int getScore() {
return score;
}
public void addScore(int add) {
score += add;
}
public boolean isDead()
{
return dead;
}
public boolean hasMissile() {
return missile != null;
}
public Missile getMissile() {
if (missile != null) {
return missile;
}
return null;
}
@Override
public void hitByMissile() {
hitImage();
hitSound();
dead = true;
}
@Override
public void hitImage() {
i = new ImageIcon("src/img_basehit.gif").getImage();
}
@Override
public void draw(Graphics2D g2) {
g2.drawImage(i, x, y, null);
if (missile != null) {
missile.draw(g2);
}
scoreString = "score: " + score;
g2.setColor(Color.GREEN);
g2.drawString(scoreString, 425 - (score + "").length() * 7, 40);
}
@Override
public void update() {
if (left && x > 0) {
x -= 5;
}
if (right && x < 460) {
x += 5;
}
if (missile != null) {
missile.update();
if (!missile.isValid()) {
missile = null;
}
}
}
public void shoot() {
if (missile == null) {
int mx = x + 12;
int my = y;
missile = new Missile(mx, my, this);
blaster.setFramePosition(0);
blaster.start();
}
}
public void move(Direction dir, boolean pressed) {
switch (dir) {
case LEFT:
left = pressed;
break;
case RIGHT:
right = pressed;
break;
}
}
@Override
public int deadCount() {
return deadCount++;
}
@Override
public void hitSound() {
hit.setFramePosition(0);
hit.start();
}
}