picojsonについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
lp6m

picojsonについて

#1

投稿記事 by lp6m » 10年前

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

アバター
h2so5
副管理人
記事: 2212
登録日時: 13年前
住所: 東京
連絡を取る:

Re: picojsonについて

#2

投稿記事 by h2so5 » 10年前

状況が分かりません。
どのように行き詰まっているのか、エラーは表示されているのか、入力したJSONデータは何なのかを書いてください。

lp6m

Re: picojsonについて

#3

投稿記事 by lp6m » 10年前

すいません、説明が不十分でした。

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のデータを入れられるかを、質問しています.よろしくお願いします.

アバター
h2so5
副管理人
記事: 2212
登録日時: 13年前
住所: 東京
連絡を取る:

Re: picojsonについて

#4

投稿記事 by h2so5 » 10年前

グリッドサイズが固定ならこんな感じでしょうか。

コード:

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

lp6m

Re: picojsonについて

#5

投稿記事 by lp6m » 10年前

無事表示させることができました!!ありがとうございました!!

lp6m

Re: picojsonについて

#6

投稿記事 by lp6m » 10年前

何度もすみません・・・いろいろ調べていたのですがURLを指定してそのjsonを取得するようなコードの書き方がわかりません・・・
#include <curl/curl.h>
が必要なことはわかったのですが。。。

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

閉鎖

“C言語何でも質問掲示板” へ戻る