Я работаю над простой 2D-платформерной игрой, в которой игрок ходит и собирает предметы (например, пистолет, меч и т. Д.). Итак, вот мой игрок (или персонаж)
public class CoolGuy extends GameObject {
private Rectangle bottom, left, right, top, full;
private Sprite sprite;
public CoolGuy(){
full = new Rectangle(0, 0, 50, 98);
bottom = new Rectangle(0, 0, 50, 15);
top = new Rectangle(0, 83, 50, 15);
left = new Rectangle(0, 15, 25, 68);
right = new Rectangle(25, 15, 25, 68);
sprite = new Sprite(TextureManager.coolGuy);
sprite.setSize(50, 98);
}
/* lots of code here */
}
также у меня есть класс Item. Когда игрок сталкивается с этим классовым спрайтом (и прямоугольником), игрок должен получить новую силу (например, стрельбу и так далее...)
public class Gun extends ItemObject{
private Sprite sprite;
private Rectangle full;
public Gun(int x, int y){
sprite = new Sprite(TextureManager.gunItem);
sprite.setSize(25, 15);
full = new Rectangle(0, 0, 25, 15);
setPosition(x, y);
}
@Override
public int hits(Rectangle r) {
if(full.overlaps(r)){
return 1;
}
return -1;
}
/* lots of code here */
}
А вот и мой новый класс мощности. В этом случае стреляет новая сила.
public class PlayerBullet extends ItemObject{
private Sprite sprite;
private Rectangle full;
public PlayerBullet(){
sprite = new Sprite(TextureManager.playerBullet);
sprite.setSize(15, 15);
full = new Rectangle(0,0,15,15);
}
@Override
public int hits(Rectangle r) {
if(full.overlaps(r)){
return 9;
}
return -1;
}
/* A lot of code here */
}
Итак, как мне добавить эту силу в мой плеер? Я знаю, что у меня может быть много логических значений и даже объект PlayerBullet
в моем CoolGuy
(классе игрока), и я могу установить для них все значения null, а позже, если игрок сталкивается с моим классом Gun
, я могу создать новый объект и так далее. .. Но я считаю, что есть и другой путь.