ページ 11

picojsonについて

Posted: 2014年5月04日(日) 17:08
by lp6m
2048というゲームのAIをC++でつくろうと思っているのですが,jsonについてよくわかっていません。
とりあえず手動で、http://2048.semantics3.com/hi/start/jso ... まったので質問します
パースにはpicojsonというライブラリを使用しています.(https://github.com/kazuho/picojson)
最終的にはjsonも自動で取得するようなプログラムを書きたいのですが、いまいちわかっておりません

以下のコードでは一応gameoverかどうかとスコア,sessionIDの表示はできています.
丸投げする形になってしまって申し訳ないのですが、どなたかご教授おねがいいたします.

コード:

#include <iostream>
#include <string>
#include "picojson.h"

using namespace std;

int data[4][4];
bool over;
long long int score;
string ssid;
string datast;

int main(){

	for(int i=0;i<4;i++){
		for(int j=0; j<4;j++){
		 data[i][j]=-1;
		}
	}
	 picojson::value v;
    cin >> v;
    std::string err = picojson::get_last_error();
    if(!err.empty()) {
        cerr << err << endl;
        return 0;
    }

   picojson::object& o = v.get<picojson::object>();
	over = o["over"].get<bool>();
	score = (int) o["score"].get<double>();
	ssid = o["session_id"].get<string>();

	cout << over << endl << score <<endl << ssid << endl;	
	return 0;
}

Re: picojsonについて

Posted: 2014年5月04日(日) 18:48
by h2so5
状況が分かりません。
どのように行き詰まっているのか、エラーは表示されているのか、入力したJSONデータは何なのかを書いてください。

Re: picojsonについて

Posted: 2014年5月04日(日) 18:55
by lp6m
すいません、説明が不十分でした。

http://2048.semantics3.com/hi/start/json
にアクセスすると
{"grid":[[2,0,0,0],[0,0,0,0],[0,2,0,0],[0,0,0,0]],"score":0,"points":0,"moved":false,"over":false,"won":false,"session_id":"bbf0967e55652dfb72916ed36ee7bfedc5e2c312","zen":"I've been waiting for you, Obi-Wan. We meet again, at last. The circle is now complete."}

というようなjsonが取得できます。
最終的にはこれを自動的にプログラムで取得してパースするような処理を行いたいのですが,まずこのデータを入力して、きちんとパースできたか確認できるようなプログラムを書いていました.

行き詰まったのは,gridのデータを配列data[4][4]に入れるところです.
どのようなコードをかけば配列にgridのデータを入れられるかを、質問しています.よろしくお願いします.

Re: picojsonについて

Posted: 2014年5月04日(日) 19:18
by h2so5
グリッドサイズが固定ならこんな感じでしょうか。

コード:

picojson::array grid = o["grid"].get<picojson::array>();
for (int i = 0; i < 4; ++i) {
    picojson::array line = grid[i].get<picojson::array>();
    for (int j = 0; j < 4; ++j) {
        data[i][j] = line[j].get<double>();
    }
}

Re: picojsonについて

Posted: 2014年5月04日(日) 20:10
by lp6m
無事表示させることができました!!ありがとうございました!!

Re: picojsonについて

Posted: 2014年5月04日(日) 21:24
by lp6m
何度もすみません・・・いろいろ調べていたのですがURLを指定してそのjsonを取得するようなコードの書き方がわかりません・・・
#include <curl/curl.h>
が必要なことはわかったのですが。。。

自分でももう少し調べてみることにします。