Skip to content
Silica edited this page Sep 2, 2012 · 3 revisions

#Tutorial

PSLを利用するには

##導入 gitの使い方が分かる人はそれでいいでしょう

https://github.com/Silica/PSL/zipball/master
ここgithub内からzipballを

https://skydrive.live.com/?cid=85BB9456A2A8D41D&id=85BB9456A2A8D41D!1939
またはWinバイナリをダウンロードします

その中から必要なのはPSL内のヘッダファイルのみです

  • あなたのプロジェクトにコピーする
  • コンパイラのincludeディレクトリにコピーする
  • PSLを解凍した場所をinclude先に指定する

等の方法でソースからヘッダを参照出来る様にします
分からない場合はPSLディレクトリごとあなたのソースファイルがある場所へコピーして下さい
後はPSL/PSL.hをincludeするだけです

単純にスクリプトを実行する最もシンプルなサンプルコードは次の形になります

// sample.cpp
#include "PSL/PSL.h"

int main(void)
{
	using namespace PSL;
	PSLVM p;
	if (p.loadScript("sample.psl"))
		return 1;
	p.run();
	return 0;
}

// sample.psl
print("Hello, world!");

sample.pslというスクリプトを読み込んで実行します

##C++関数をスクリプトから呼び出す

// sample.cpp
#include "PSL/PSL.h"

int mul(int a, int b) {return a * b;}

int main(void)
{
	using namespace PSL;
	PSLVM p;
	if (p.loadScript("sample.psl"))
		return 1;
	p.addFunction("mul", &mul);
	p.run();
	return 0;
}

// sample.psl
print(mul(4,5));

##スクリプト関数をC++コード中から呼び出す

// sample.cpp
#include "PSL/PSL.h"

int main(void)
{
	using namespace PSL;
	PSLVM p;
	if (p.loadScript("sample.psl"))
		return 1;
	p.run();
	variable mul = p.get("mul");
	int i = mul(6, 7);
	std::printf("%d\n", i);
	return 0;
}

// sample.psl
mul(a,b) a*b;

##スクリプトに値を渡す

// sample.cpp
#include "PSL/PSL.h"

int main(void)
{
	using namespace PSL;
	PSLVM p;
	if (p.loadScript("sample.psl"))
		return 1;
	p.add("value", 1024);
	p.run();
	return 0;
}

// sample.psl
print(value);

##スクリプトから値を受け取る

// sample.cpp
#include "PSL/PSL.h"

int main(void)
{
	using namespace PSL;
	PSLVM p;
	if (p.loadScript("sample.psl"))
		return 1;
	p.run();
	variable value = p.get("value");
	int i = value;
	std::printf("%d\n", i);
	return 0;
}

// sample.psl
global value = 256;

##スクリプト実行時の引数と返り値

// sample.cpp
#include "PSL/PSL.h"

int main(void)
{
	using namespace PSL;
	PSLVM p;
	if (p.loadScript("sample.psl"))
		return 1;
	variable v = p.run(10);
	int i = v;
	std::printf("\n%d\n", i);
	return 0;
}

// sample.psl
print(arg);
return arg + 5;

C++への組み込みの為の説明

STG01はPSLを利用したサンプルゲームでソースの一部も公開しています

Clone this wiki locally