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;
}
}