レベルで無限に実行されているゲームで作業しています。私は最初のレベルで障害を置いています。私はjsonでやりたいですが、 jsonの最初の解析。適切な方法でJavaオブジェクトへのjsonデータのマッピング-LibGdx
私はこのようなJSONファイル作成:実は私は5 screens.Forの背景に各画面を移動全体の分割
{
"screen1":
[
{"name":"rock","position":"middle","distance":"400","speed":"0"}
],
"screen2":
[
{"name":"snake","position":"up","distance":"100","speed":"0"},
{"name":"watersnake","position":"up","distance":"800","speed":"0"}
],
"screen3":
[
{"name":"rock","position":"middle","distance":"400","speed":"0"},
{"name":"gorilla","position":"middle","distance":"500","speed ":"0"},
{"name":"crow","position":"up","distance":"200","speed":"0"}
],
"screen4":
[
{"name":"crocodile","position":"up","distance":"600","speed":"0"},
{"name":"gap","position":"up","distance":"700","speed":"0"},
{"name":"cloud","position":"up","distance":"300","speed":"0"}
],
"screen5":
[
{"name":"gorilla","position":"middle","distance":"500","speed ":"0"}
]
}
を、私はJSONファイルで指定された障害物を配置します。
そのために、私は解析されたjsonをJavaオブジェクトにマップしたいと思います。
は、だから私は、解析のために、このようなメソッドを作成しました:
public void loadLevelJson(String fileName,String entryName)
{
JsonValue jsonValue = new JsonReader().parse(Gdx.files.internal(fileName));
JsonValue objList = jsonValue.get(entryName);
// System.out.println("name:" + objList);
if (entryName.equals("screen2")){
System.out.println("____________"+entryName);
for(JsonValue value : objList.iterator())
{
if(value.getString("name").equals("rock"))
{
rockSpeed=value.getFloat("speed");
rockpos=value.getString("position");
rockX=value.getFloat("distance");
if(value.getString("position").equals("middle"))
rockY=Constants.BIG_ROCK_Y;
}
if(value.getString("name").equals("snake"))
{
snakeSpeed=value.getFloat("speed");
snakePos=value.getString("position");
snakeX=value.getFloat("distance");
if(value.getString("position").equals("up"))
snakeY=Constants.SNAKE_Y;
}
if(value.getString("name").equals("watersnake"))
{
w_snakeSpeed=value.getFloat("speed");
w_snakePos=value.getString("position");
w_snakeX=value.getFloat("distance");
if(value.getString("position").equals("down"))
w_snakeY=Constants.W_SNAKE_Y;
}
if(value.getString("name").equals("gorilla"))
{
gorillaSpeed=value.getFloat("speed");
gorillaPos=value.getString("position");
gorillaX=value.getFloat("distance");
if(value.getString("position").equals("middle"))
gorillaY=Constants.GORILLA_Y;
}
if(value.getString("name").equals("crow"))
{
crowSpeed=value.getFloat("speed");
crowPos=value.getString("position");
crowX=value.getFloat("distance");
if(value.getString("position").equals("up"))
crowY=Constants.CROW_Y;
}
if(value.getString("name").equals("gap"))
{
gapSpeed=value.getFloat("speed");
gapPos=value.getString("position");
gapX=value.getFloat("distance");
if(value.getString("position").equals("down"))
gapY=Constants.GAP_Y;
}
if(value.getString("name").equals("cloud"))
{
cloudSpeed=value.getFloat("speed");
cloudPos=value.getString("position");
cloudX=value.getFloat("distance");
if(value.getString("position").equals("up"))
cloudY=Constants.CLOUD_Y;
}
if(value.getString("name").equals("cloud"))
{
crocodileSpeed=value.getFloat("speed");
crocodilePos=value.getString("position");
crocodileX=value.getFloat("distance");
if(value.getString("position").equals("down"))
crocodileY=Constants.CROCODILE_Y;
}
}
}
}
しかし、私は実際に画面とオブジェクトクラスにマップするために、各画面や障害物とのこれらの事を解析する方法についての苦労を取得していますcreated.Fully私はjsonを初めて使用しているので混乱しています。
誰かが何らかのアイデアを述べると非常に役に立ちます。
ありがとうございます。
あなたの答えをありがとう!今、私が直面しています問題はscreens.Iであることは、私は不適切で各画面にしようとしていた各level.Nowのために自動的に画面番号を取る必要がありますようにコードを一般化する必要があります私はArrayListを使用する必要がありますか?それは非常に私は質問を答えたビットを答えを精巧に役立つだろう。 – Niranjana
あなたが投稿したコードには、難易度の高い障害物変数、jsonを読むための反復コードがあり、拡張するのは容易ではありません(新しい障害物を追加するとどうなりますか?)。だからあなたのコードを一般化することによってあなたが意味するものが不明です。あなたがしようとしているすべての小さな事を本当に知らないので、私がもっと助けになることができるかどうかわからない。私が掲載した例は、画面の価値のあるjsonを素早く読む方法を示しています。それで、それを外挿して、新しい画面があるときに各jsonを読み込んだり、あなたのすべてのssonのjsonを一回ループしたりして、私の例ではリストのリストを作成してください。 –
返事ありがとう!実際に私はjsonとその使い方についての適切な知識なしに私自身の何かを試していました。今私はいくつかの研究を行いました。 – Niranjana