2017-02-24 3 views
0

だから私はジェネリッククラスとインターフェイスと私は間違って行ってきたかなり確信していない迷路を作ろうとしている。私の主な問題は、初めてクラスをパラメータとして持つため、コンストラクタを完成させる方法です。この汎用コンストラクタが動作するには何が必要ですか?

これは私の最初の投稿ですので、悪いとお詫び申し上げます。

import java.awt.Color; 

public class Labyrinth implements ILabyrinth { 
    private int height; 
    private int width; 

    ********************************************** 
    public Labyrinth(IGrid<LabyrinthTile> tiles){ 
     tiles.copy(); 
     this.height=height; 
     this.width=width;  <---Here? 
    ********************************************** 

    } 

    @Override 
    public LabyrinthTile getCell(int x, int y) { 

     return getCell(x,y); 
    } 

    @Override 
    public Color getColor(int x, int y) { 

     return getCell(x,y).getColor(); 
    } 

    @Override 
    public int getHeight() { 

     return height; 
    } 

    @Override 
    public int getPlayerGold() { 

     return 0; 
    } 

    @Override 
    public int getPlayerHitPoints() { 

     return 0; 
    } 

    @Override 
    public int getWidth() { 

     return width; 
    } 

    @Override 
    public boolean isPlaying() { 

     return true; 
    } 

    @Override 
    public void movePlayer(Direction dir) throws MovePlayerException { 

     if(dir.equals(Direction.EAST)){ 
      width+=1; 
     } 
     if(dir.equals(Direction.NORTH)){ 
      height+=1; 
     } 
     if(dir.equals(Direction.SOUTH)){ 
      height-=1; 
     } 
     if(dir.equals(Direction.WEST)){ 
      width-=1; 
     } 


    } 

    @Override 
    public boolean playerCanGo(Direction d) { 
     if(d.equals(LabyrinthTile.WALL)) 
      return false; 
     return true; 

    } 
} 
+1

'tiles.copy()は何をしますか、タイルのコピーを返しますか?その場合はどこにも保存しませんでした。 – Alex

+0

はい、どこに保存すればいいですか? – ruubel

+0

タイルのコピーはどこに必要ですか?または、タイルのデータが必要なだけです。この場合、コピーは必要ありません。 – Alex

答えて

1

あなたは次のように入力します。

this.height = height; 

あなたは、あなたが「高さという変数に作成しようとしている新しいオブジェクトの「高さ」フィールドを設定したいと言っているが。 "しかし、コンストラクタには、コンストラクタ内のどこにでも、またはコンストラクタの引数の1つとして "height"という変数がありません。

// .height() might not be a real method, it's just an example 
this.height = tiles.height(); 

"tiles"という名前の変数がコンストラクタに渡されているため、これはうまくいきます。

+0

ありがとう、ありがとう! – ruubel

+0

getHeight()に変更する必要がありました。 tho – ruubel

+0

うん、私はコメントで、高さ()が実際の方法ではないかもしれないと言った。 Javaでは、何か(高さや幅など)のプロパティを取得する場合は、通常、「ゲッター」、つまり「getHeight()」を使用して行います。 – jzhang22

関連する問題