▼ノベルゲームツール作っちゃうぞ!

このエントリーをはてなブックマークに追加
63名前は開発中のものです。
http://www.geocities.co.jp/SiliconValley-Oakland/8522/data/ugikoscr.txt

上のソースをダウンロードして ugikoscr.pas と名前を変更し
プロジェクトに追加して下さい。


GikoScript.ExecToVar('1+2*3') と呼ぶだけで値 6が得られます
GikoScript.ExecToStr('1+2*3') なら文字列として結果がえられます

変数を使いたい場合は
GikoScript.LET('L1=123');  のように 変数名=式の文字列を渡して下さい
GikoScript.LET('イレテミロ ここに'); とやれば 'ここに'という変数に入力出来ます
これはギコBASICの機能がそのまま残っているからです
なお、TStringsではなく文字列で渡すので  イッテヨシ とメジルシは 無効です
条件は使えますがもともと else はサポートしていません
64名前は開発中のものです。:02/02/12 14:42 ID:gzEghBRd
>>63
これは>>1には難しすぎやしない?
65名前は開発中のものです。:02/02/12 15:06 ID:mKw/M45Z
Delphi初めて数週間の人には>>63のソースは難易度高過ぎかな。
見たら目眩起こすかも。
6663:02/02/12 15:35 ID:???
使い方は難しくないと思うのですが? ダメですか?
6763:02/02/12 15:46 ID:???
手順としては
1、ugikoscr.pas と名前を変更しプロジェクトに追加
2、uses に ugikoscr を追加
3、GikoScript.LET( '変数名=計算式'); で変数名に代入
4、GikoScript.ExecToStr( '計算式'); で計算結果が文字列として返って来ます

だけです。 他の機能を使わなければ問題ないと思います

なお、計算式中で文字列を使う場合は "" か ' ' のどちらかで囲みます。

GikoScript オブジェクトは最初に使おうとしたときにインスタンスは作成
され、プログラム終了時に解放されるので 作成、解放の手間は不要です
68名前は開発中のものです。:02/02/12 16:03 ID:???
実は素人じゃないから問題ないだろ
69名前は開発中のものです。:02/02/12 17:40 ID:NEqosGNN
多少使いづらくなるかもしれないが,アセンブラ〜のごとくに
#add a 1
#sub b 2
とかの単純四則命令で実装するというのもありかと思う。

なんにしても,
ループや,条件分岐の制御構文の仕様まで視野にいれて
考えるべきでしょう。
701 ◆xdL3JlCE :02/02/12 20:05 ID:en0HC6mI
会社から帰ってきました。

>>63さんの奴をスクリプトに組んでみました。

0005のバージョンがそうです。
http://members.tripod.co.jp/xdL3JlCE/

calコマンドで計算できます。
variコマンドは変数に値を代入。

その他細かいことはテキストに書いてます。



これでまた一つ課題が増えました。
変数を文字列の中に表示させるにはどうしたら良いのだろう・・・

test.txtの中で普通に読み込んでるテキスト部分に
「このテキストを表示したのは'i'回目です!」
ってやっても、それがそのまま表示されるし・・・
71名前は開発中のものです。:02/02/12 20:29 ID:???
'今回で'+inttostr(i)+'回目'
72名前は開発中のものです。:02/02/12 20:41 ID:IAxOkekh
>>71 それだと駄目な事ない? やってみたけど無理だった
73名前は開発中のものです。:02/02/12 22:06 ID:???
#calstr "回数は"+toStr(i)+"です"
74名前は開発中のものです。:02/02/12 22:17 ID:???
ところで1よ。
ノベルツールの名前はなんていうのさ。
みんなで決めていい?

名前候補
1.オマエモナー
2.アボーン

75名前は開発中のものです。:02/02/12 22:23 ID:???
関数はソースで published の所に定義するだけで 自分で増やせるみたい

例: copy と同じ動きをする関数 MID  MID("12345",2,2)で文字 "23" を返す

published の 下の toInt / toStrが並んでる所で
function MID(const dt: array of Variant): Variant;

実装部で
function TGikoScr.MID(const dt: array of Variant): Variant;
function toInt(d:Variant):Integer;begin Result:=d;end;
begin
case high(dt) of
 0: Result:= VarToStr(dt[0]);
 1: Result:= copy(VarToStr(dt[0]),toInt(dt[1]),High(Integer));
 2: Result:= copy(VarToStr(dt[0]),toInt(dt[1]),toInt(dt[2]));
else error('変数の数が合わない');
end;
end;