0

2 つの値を持つタイルの ArrayList があります。int と String。

両方の値を取得する必要があるため、コードを書いている間に、それが機能していることを確認することにしました。

private void setIcons()
    {
        ArrayList<Tiles> tiles = new ArrayList<>();
        tiles = game.getTiles(0);
        Tiles i = tiles.get(0);
        String s = i.returnTileName();
        System.out.println(i.returnTileName() +" ," +i.returnTileNumber());
    }

これは、サブクラスを持つ私の Tiles クラスです。

public class Tiles
{
    int number;
    String name;

    public Tiles()
    {

    }

    public String returnTileName()
    {
        return name;
    }

    public int returnTileNumber()
    {
        return number;
    }
}

「Tiles」にはいくつかのサブクラスがあり、すべてほぼ同じ構造になっています。

public class Bamboo extends Tiles
{
    int number;
    String name;
    public Bamboo(int number, String name)
    {
        this.number = number;
        this.name = name;
    }
}

実行すると、下の画像に示すように、値が明確にある場合、文字列は「null」として返され、int は「0」として返されます。

http://img716.imageshack.us/img716/6154/emx4.jpg

setIcons() で呼び出すメソッド:

 public ArrayList getTiles(int playerX)
    {
        ArrayList<Tiles> tiles = new ArrayList<>();
        Player pl = player.get(playerX);
        tiles = pl.playerTiles;
        return tiles;
    }

「Game」クラスには、タイルの ArrayList である「tilesDeck」とクラス Player の ArrayList である「player」の 2 つの ArrayList があります。

これが私のゲームクラスです。今までスクロール機能があることを知りませんでした。

public class Game
{
    ArrayList<Tiles> tilesDeck = new ArrayList<>();
    ArrayList<Player> player = new ArrayList<>();

    public Game()
    {
        addTile("Bamboo", 1);
        addTile("Bamboo", 2);
        addTile("Bamboo", 3);
        addTile("Bamboo", 4);
        addTile("Bamboo", 5);
        addTile("Bamboo", 6);
        addTile("Bamboo", 7);
        addTile("Bamboo", 8);
        addTile("Bamboo", 9);

        addTile("Circles", 1);
        addTile("Circles", 2);
        addTile("Circles", 3);
        addTile("Circles", 4);
        addTile("Circles", 5);
        addTile("Circles", 6);
        addTile("Circles", 7);
        addTile("Circles", 8);
        addTile("Circles", 9);

        addTile("Characters", 1);
        addTile("Characters", 2);
        addTile("Characters", 3);
        addTile("Characters", 4);
        addTile("Characters", 5);
        addTile("Characters", 6);
        addTile("Characters", 7);
        addTile("Characters", 8);
        addTile("Characters", 9);

        addTile("Dragons", 1);
        addTile("Winds", 1);

        Collections.shuffle(tilesDeck);
        player.add(new Player("Player 1"));
        player.add(new Player("Player 2"));
        player.add(new Player("Player 3"));
        player.add(new Player("Player 4"));

        startTiles();
    }

    private void addTile(String name, int number)
    {
        int counter = 0;
        if (name.contains("Bamboo"))
        {
            while (counter < 4)
            {
                tilesDeck.add(new Bamboo(number, name));
                counter++;
            }
        }

        if (name.contains("Circles"))
        {
             while (counter < 4)
            {
                tilesDeck.add(new Circles(number, name));
                counter++;
            }
        }

        if (name.contains("Characters"))
        {
             while (counter < 4)
            {
                tilesDeck.add(new Characters(number, name));
                counter++;
            }
        }

        if (name.contains("Winds"))
        {
             while (counter < 4)
            {
                tilesDeck.add(new Winds("East"));
                tilesDeck.add(new Winds("South"));
                tilesDeck.add(new Winds("West"));
                tilesDeck.add(new Winds("North"));
                counter++;
            }
        }

        if (name.contains("Dragons"))
        {
             while (counter < 4)
            {
                tilesDeck.add(new Dragons("Red"));
                tilesDeck.add(new Dragons("Green"));
                tilesDeck.add(new Dragons("White"));
                counter++;
            }
        }
    }

    private void startTiles()
    {
        int playerCounter = 0;

        while (playerCounter < 4)
        {
            Player pl = player.get(playerCounter);
            int counter = 0;
            while (counter <13)
            {
                pl.playerTiles.add(tilesDeck.get(0));
                tilesDeck.remove(0);
                counter++;
            }
            playerCounter++;
        }
    }

    public ArrayList getTiles(int playerX)
    {
        ArrayList<Tiles> tiles = new ArrayList<>();
        Player pl = player.get(playerX);
        tiles = pl.playerTiles;
        return tiles;
    }
}
4

4 に答える 4

0
public Tiles()
{

}

その中で変数を初期化します。

于 2013-10-17T08:18:50.730 に答える
0

null 値を取得しないように、変数をデフォルト値で初期化します。

public class Tiles
{
// assign your default values
int number = 1;           
String name = "default name";

public Tiles()
{

}

public String returnTileName()
{
    return name;
}

public int returnTileNumber()
{
    return number;
}
}
于 2013-10-17T08:19:36.190 に答える
0

コンストラクターで変数を初期化する必要があります

于 2013-10-17T08:22:08.720 に答える