それでは、開始するコードをいくつか示します。最初に Bullet というクラスを作成しました。これは、イメージをロードする場所です。
package gameLibrary;
import java.awt.*;
import javax.swing.ImageIcon;
public class Bullet {
int x,y;
Image img;
boolean visible;
public Bullet(int startX, int startY) {
x = startX;
y = startY;
ImageIcon newBullet = new ImageIcon("/resources/bullet.png");
img = newBullet.getImage();
System.out.println("constructor Bullet is called");
visible = true;
}
public void move(){
x = x + 1;
if(x > 854){
System.out.println("Bullet is moving at X = " + x);
visible = false;
}
}
public int getX(){
return x;
}
public int getY() {
return y;
}
public boolean getVisible(){
return visible;
}
public Image getImage(){
return img;
}
}
スペースバーが押されると、fire() というメソッドが呼び出されます。ここで、新しい Bullet(X, Y); が呼び出され、ArrayList に格納されます。
public void fire(){
if(ammo > 0) {
Bullet z = new Bullet(left + 60, y + 70);
bullets.add(z);
ammo--;
}
}
public static ArrayList getBullets(){
return bullets;
}
このコードは、弾丸を画面上で移動します。
ArrayList bullets = Character.getBullets();
for(int i = 0; i < bullets.size(); i++){
Bullet m = (Bullet) bullets.get(i);
if(m.getVisible() == true){
m.move();
}if(m.getVisible() == false) {
bullets.remove(i);
}
}
最後に print メソッドのコードです。
ArrayList bullets = Character.getBullets();
for(int i = 0; i < bullets.size(); i++){
Bullet m = (Bullet) bullets.get(0);
g2d.drawImage(m.getImage(),m.getX(),m.getY(), null);
}
どこで間違ったのかわかりません。弾丸の機能は、画面上の画像の印刷だけであることがわかる限り、すべて機能しています。提案は大歓迎です。