Java 我必须重构代码,但不要';我不知道把碰撞法放在哪里
我不是土生土长的说英语的,所以请容忍我和我的英语。我用碰撞的方法做了一个太空入侵者游戏。因为当子弹击中墙壁或敌人时,我应该把它们放在哪里?我应该为他们创建一个全新的类,还是将碰撞方法放在敌人类和墙类的某个地方 这是目前我的敌人类中的一个碰撞方法,只是为了告诉你我的意思和我在做什么。我正在努力使代码清晰易读,易于重用Java 我必须重构代码,但不要';我不知道把碰撞法放在哪里,java,refactoring,collision,Java,Refactoring,Collision,我不是土生土长的说英语的,所以请容忍我和我的英语。我用碰撞的方法做了一个太空入侵者游戏。因为当子弹击中墙壁或敌人时,我应该把它们放在哪里?我应该为他们创建一个全新的类,还是将碰撞方法放在敌人类和墙类的某个地方 这是目前我的敌人类中的一个碰撞方法,只是为了告诉你我的意思和我在做什么。我正在努力使代码清晰易读,易于重用 public boolean collide(int i, Player player, BasicBlocks blocks, ArrayList<Enem
public boolean collide(int i, Player player, BasicBlocks blocks,
ArrayList<EnemyTypeBasic> enemies) {
if (enemySprite.isPlay()) {
if (enemies.get(i).deathScene()) {
enemies.remove(i);
}
return false;
}
for (int w = 0; w < player.playerWeapons.weapons.size(); w++) {
if (enemies != null
&& player.playerWeapons.weapons.get(w).collisionRectangle(
((EnemyTypeBasic) enemies.get(i)).getRect())) {
enemySprite.resetLimit();
enemySprite.setAnimationSpeed(120);
enemySprite.setPlay(true, true); // Object needs to be destroyed
GameScreen.SCORE += 8;
GameScreen.lives = 3;
return true;
}
}
return false;
}
public boolean collide(int i,Player-Player,basicblock块,
ArrayList(敌人){
if(enemySprite.isPlay()){
if(敌人.get(i).death场景()){
敌人。移除(i);
}
返回false;
}
对于(int w=0;w
非常感谢你 哪些项目会发生碰撞?如果只有项目符号和其他对象之间的碰撞,则collide()方法属于表示项目符号的类 我认为更可能的是,从长远来看,你会有多个可以碰撞的东西。也许子弹会与船只相撞,但最终你可能希望船只与其他船只相撞,或者与墙壁相撞。在这种情况下,像这样定义一个抽象类是有意义的
public abstract class Collidable {
public boolean collide(Collidable other) {
// Here is your logic to check whether *this* is colliding with *other*
// You will probably need to pass in additional arguments to determine collisions
}
}
然后,所有可能与其他类型冲突的类型都会扩展您的抽象类,例如:
public Player extends Collidable {
// ...
}
public EnemyTypeBasic extends Collidable {
// ...
}
public Bullet extends Collidable {
// ...
}
当你想检查两个物体是否发生碰撞时,你可以称之为这个或等效物:
aBullet.collide(anEnemy)
(在我看来)使可碰撞
成为接口
比抽象类
好得多。几乎可以肯定的是,玩家和项目符号将有多个接口要实现,而它们只能扩展一个类。