Boost C++
ゲームを作るときには、
- マップデータ
- シューティングゲームの敵キャラの移動ルーチンスクリプト
- 当たり判定
- 敵のパラメータ
- サウンドON/OFFなどの設定ファイル
といったものを、外部データにすることにより開発効率が上がります。
ということで、マップデータをCSVにして読み込ませようとしたところ…、
C++って文字列処理がつらいですね、、。
何かいいのないかなー、と探していたところ「Boost C++」を発見しました。
で色々調べていたところ、boost::pythonなるものが…、、。(←早くも脱線)
「おおおー、C++からPythonが呼べるのかー!」
「外部スクリプトをPythonで書いて、C++から呼べれば開発効率アップだぜ!」
と思ったのですが、
主にPythonからC++を呼び出すときに、C++のDLLを簡単に作るためのライブラリらしいです。
(ガックリ)
私みたいに、C++からPythonを呼ぼうとする人は少数派らしいです。
ただ、同じことを考えている人はいるみたいで。
http://lamoo.s53.xrea.com/diary/diary2003a.html#t20030131b
しかし、5時間ぐらい試行錯誤して、この通りにやってもうまくいきませんでした…。
(…無念)
とりあえず、直書きのPythonコードを実行するサンプルなどを、、。
#include <iostream> #include <python.h> using namespace std; void main() { // Pythonが始まるよ Py_SetProgramName("test.py"); Py_Initialize(); try { PyObject* globals = PyDict_Copy(PyModule_GetDict(PyImport_AddModule("__main__"))); // Python実行するよ PyObject* code = PyRun_String( "hello = file('hello.txt', 'w')\n" "hello.write('Hello Python!')\n" "hello.close()" , Py_file_input , globals, globals); PyDict_Clear(globals); Py_DECREF(globals); if(code == NULL) { throw "Pythonの構文が違うよ"; } } catch(const char* msg) { cout << "ERROR :" << msg << endl; } catch(...) { cout << "ERROR :なんかのエラー" << endl; } // Python終わり PyErr_Clear(); Py_Finalize(); }