-
Notifications
You must be signed in to change notification settings - Fork 0
/
Shot.java
146 lines (127 loc) · 2.91 KB
/
Shot.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
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
140
141
142
143
144
145
146
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Point;
import javax.swing.ImageIcon;
/*
* Created on 2005/02/17
*
*/
/**
* 弾クラス
*
* @author mori
*
*/
public class Shot {
// 弾のスピード
private static final int SPEED = 10;
// 弾の保管座標(画面に表示されない場所)
private static final Point STORAGE = new Point(-20, -20);
// 弾の位置(x座標)
private int x;
// 弾の位置(y座標)
private int y;
// 弾の幅
private int width;
// 弾の高さ
private int height;
// 弾の画像
private Image image;
// メインパネルへの参照
private MainPanel panel;
public Shot(MainPanel panel) {
x = STORAGE.x;
y = STORAGE.y;
this.panel = panel;
// イメージをロード
loadImage();
}
/**
* 弾を移動する
*
*/
public void move() {
// 保管庫に入っているなら何もしない
if (isInStorage())
return;
// 弾はy方向にしか移動しない
y -= SPEED;
// 画面外の弾は保管庫行き
if (y < 0) {
store();
}
}
/**
* 弾の位置を返す
*
* @return 弾の位置座標
*/
public Point getPos() {
return new Point(x, y);
}
/**
* 弾の位置をセットする
*
* @param x 弾のx座標
* @param y 弾のy座標
*
*/
public void setPos(int x, int y) {
this.x = x;
this.y = y;
}
/**
* 弾の幅を返す。
*
* @param width 弾の幅。
*/
public int getWidth() {
return width;
}
/**
* 弾の高さを返す。
*
* @return height 弾の高さ。
*/
public int getHeight() {
return height;
}
/**
* 弾を保管庫に入れる
*
*/
public void store() {
x = STORAGE.x;
y = STORAGE.y;
}
/**
* 弾が保管庫に入っているか
*
* @return 入っているならtrueを返す
*/
public boolean isInStorage() {
if (x == STORAGE.x && y == STORAGE.x)
return true;
return false;
}
/**
* 弾を描画する
*
* @param g 描画オブジェクト
*/
public void draw(Graphics g) {
// 弾を描画する
g.drawImage(image, x, y, null);
}
/**
* イメージをロードする
*
*/
private void loadImage() {
ImageIcon icon = new ImageIcon(getClass().getResource("image/shot.gif"));
image = icon.getImage();
// 幅と高さをセット
width = image.getWidth(panel);
height = image.getHeight(panel);
}
}