2017-03-26 5 views
2

私は読んで、エラー自体の意味と一般的な解決方法を理解していますが、 2つの異なるクラスからインスタンスの2つの異なるセットを作成しています(2つの長方形が衝突している場合と比較して)。静的コンテキストからの非静的メソッド[クラスインスタンスの2つのセットの比較]

public class NPCManager { 

public NPCManager(int amountNPC, int NPCGap) { 
    // 
    populateNPCS(); 
} 

public void update() { 
    for(RectNPC NPC : monsters) 
     if(ObstacleManager.NPCCollide(NPC.getRectangle())) { //NPCCollide is the error 
      // 
     } 
} 

(上)これはNPCのインスタンスを作成するクラスであり、以下に示す方法で各NPCをチェックする必要があります。

public class ObstacleManager { 

public ObstacleManager(int playerGap, int obstacleGap, int obstacleHeight, int color, int doorcolor) { 

    populateObstacles(); 
} 

public boolean NPCCollide(RectNPC NPC) { 
    for(Obstacle ob : obstacles) { 
     if(ob.NPCCollide(NPC)) 
      return true; 
    } 
    return false; 
} 

(上記)これは、障害物のインスタンスを作成するクラスです。NPCが以下のように衝突するかどうかを確認する必要があります。

public class Obstacle implements GameObject { 

public Obstacle(int rectHeight, int color, int doorColor, int startX, int startY, int playerGap) { 
    // 
} 

public boolean NPCCollide(RectNPC NPC) { 
    /* Checks if the NPC inputted collides with the rectangles */; 
} 

(上記)障害物自体を作成するためのクラスです。

マネージャが使用されているため、ゲームが再開したときに、期待どおりに再起動できます。

+0

あなたは 'ObstacleManager'のインスタンスで' NPCCollide'を呼び出す必要があります。これは、(1) 'update'がそのオブジェクトをパラメータとして取り、(2)それをインスタンスフィールドとして保持するか、(3)' update'内にオブジェクトを作成するかどうかをあなた次第です。 – 4castle

答えて

2

コードの意味を理解するのは難しいです。 (コードスタイル違反を助けていない!)

をしかし、私はあなたがこの作品を作る方法を求めていると思う:

for(RectNPC NPC : monsters) 
    if(ObstacleManager.NPCCollide(NPC.getRectangle())) { 
     //NPCCollide is the error 
     // 
    } 

問題がNPCCollide(ぐふスタイル違反!)がインスタンスメソッドであるということです。つまり、インスタンス上で呼び出す必要があります。しかし、ObstacleManagerはクラスです。

ソリューションObstacleManagerクラスのインスタンスを作成し、そのインスタンスでインスタンスメソッドを呼び出します。

しかし、ほとんどのアプリケーションでは、ObstacleManagerのインスタンスが1つしか存在しないことがほとんど必要です。

解決策(パート2):「シングルトン」デザインパターンを読み、ObstacleManagerをシングルトンクラスに変換します。

参考文献:

+0

違反にもかかわらず助けてくれてありがとう、本当に助けます。 また、私はこれを行わずにnpcManagerクラスからリストを取得するためにゲッターメソッドが必要であることを追加したいと思っていましたが、今はテストしていますが、現在はうまくいくようです。 – George

関連する問題