0

基本的に、タイルの読み込みに問題があるため、ゲームでレベルを読み込むのに問題があります。私が理解できないのは、プログラムがタイルのタイプを「水」や「草」などの文字列として保存し、それらの文字列からタイルをロードする方法です。タイル コードの例を次に示します。

Example = new TileType("Texture.png", Material.Mat, True, True, "Example");

最初の値はテクスチャの場所、2 番目はマテリアル、3 番目はタイルを破壊できるかどうか、4 番目は NPC がタイルを通過できるかどうか、最後はタイルが保存されているものです。レベルデータ。

ゲームがタイルを保存するものは次のとおりです。

<tile x="0" y="0" type="Example" />

私がやろうとしているのは、文字列を受け取り、それを使用するタイルを見つけるメソッドを作成することです。誰でもこれで私を助けることができますか?

4

4 に答える 4

2

使ってMap<String, TileType>みませんか?

(要求に応じて、回答としてコメントを投稿します。)

于 2012-07-30T04:53:29.603 に答える
0

1.のようなコレクションを使用することをお勧めしますMap

2.このように考えてください...HashMap<String, TileType>

于 2012-07-30T04:53:42.350 に答える
0

数値変数には、次を使用できます

String s = readIntFromFile(); //Read a number
try
{
    int x = Integer.parseInt(s); //Get an integer from the file
}
catch(NumberFormatException e)
{
    //if parseInt fails, we end up here
}

文字列については、次の1つのアイデアがあります。

static final String[] tileTypes = {"Example", "Example2"};
private static int findTileType(String type)
{
    for(int i = 0; i < tileTypes.length; i++)
    {
        if(type.equals(tileTypes[i])) return i;
    }
    return -1;
}

public TileType makeTile(String type)
{
    int t = findTileType(type);
    switch(t)
    {
        case 0: 
            return example;
        case 1: 
            return example2;
    }
    return null;
}

static final TileType example = new TileType(/*...*/);
static final TileType example2 = new TileType(/*...*/);

さて、あなたはアイデアを得る。おそらく最善の解決策ではありませんが、うまくいくでしょう。

1年以上後に編集:おっと、findTileTypeを静的にするのを忘れました。

于 2012-07-30T04:55:13.690 に答える
0

Tileというクラスを作ります。

public class Tile
{
    private Material mMaterial;
    private boolean mCanBeDestroyed;
    private boolean mCanBeWalkedOn;
    private String mLevelSaveName;

    // getters and setters
}

次に、それらにアクセスするには、次のようなものがあります。

private HashMap<String, Tile> mTiles;
于 2012-07-30T04:57:33.977 に答える