モジュール単位でシナリオ管理

お久しぶりです

なんかシナリオエンジンぽいの作ってたはずですが
ほっぽりだしてしまっちゃって
最近、ブログもさっぱりで
結局、DQX始めちゃってるというw

シナリオエンジンの構想ですが
ヒントは構造体でした
構造体のように、まとまりを決めてデータを扱う
基本、データはデータの決まったまとまりとセットの
命令を用意してそこから演算する

例えば、構造体がs1,s2ってあって
s1とs2に文字列データを入れ
s2には入れなくてもよくて
例えばf_of_s命令でs1とs2をprintfする。みたいな
s2がnullならs2はprintfしない。みたいな

とりあえず HSPとしては
シナリオ格納用のモジュールを配列で用意して
(モジュール変数使用)
そこに格納するとこまでやってみよう
ってすぐやらない展開でもあったりw

シナリオIDはnumberになっちゃってるから
シナリオはモジュール変数の文字列で区別
って速度大丈夫?みたいなとこもありつつ
昔作った簡単エンジンでも大丈夫だったからたぶん大丈夫w
シナリオ全部調べるんじゃなくて
区別用文字列でシナリオのかたまり一つにつき一行くらいやし
昔の簡単エンジンはシナリオ全部調べてたようなw

んー。シナリオへgoto突入も考慮してます
シナリオ内で分岐とかも
要するにラベル必要なんちゃう?
一つの予定として
シナリオ@ラベルにすれば
シナリオを調べてからラベルを調べればいいので
シナリオにラベルっぽいの複数あっても大丈夫そう

TOP DOWN 的思考

まぁ色々ありまして
ってかたいしたことないんですけどw

言語を TOP DOWN的に頭の中で構築しております
ずっとBOTTOM UPだったので
こういうのもいいかな?と

英語のアウトプットは学年マイナス2年
みたいに
プログラムも構想から実力さっぴいた分しか
構築出来ないかもしれませんね
天才。才能。適正。とかあるかもしれないけど

僕は構想からある程度さっぴいた分しかプログラムになりません

小飼弾氏がライブドア時代
やることは3日でわかった
後はそれを粛々と実行するだけだった
みたいに書いてたんですけど

ひょっとしたら構想の核って3日もあれば上等かもしれません
でも3日しか構想にかけてなくても
実現するのに 一年半(?)くらいかかる訳なんです
小飼弾氏みたいな天才でも
3日しかかかってない構想を
一年半(?)も実現に向けた努力を続けるってのもスゴイ
そういうとこがあれば 皆何かしらやれる気がします
普通、途中で目移りするよーな
僕はしますけどw
とか言って何年もディスガイア1やり続けた男だったり→僕
ブラ三も何年もやり続けてます
HSPもずっとやってますね
ディスガイアとブラ三は適当にやってるから長続きしてるのであり
負担になる程 気合入れてやってないです
ディスガイア1は卒業っぽいかんじですけど
HSPは割と気合入れてやってますがメリハリあります
長時間やんないし、半分くらい一日全くやってない
(たぶん比率もっとやってないw)
こんだけ構想に時間食ったから
後は粛々にってそんなに上手くいかなさそうw
最近は全体の一部分やって別の一部分やってって
せめてそうありたいんですけど全体が増えつつあったりw

♪さて ここで やってみようか RPG
♪FF DQ なんか違う
♪こんな時には ディスガイア

とか変な鼻歌 歌いながら ディスガイアばっかりやってた訳ですが
選択肢は色々あれど 一つのことばかりやりたくありますね
よくわかんないけど ディスガイア1ばっかやってたねw

プログラム言語の構想の話でしたね

Rubyは要素 全部 オブジェクト
みたいな歌い文句なんですけど

僕が提唱したいのは
固まり 大体 オブジェクト みたいな
ここで式を 固まりとしてまとめたい
みたいに書いたんですけど
固まりがオブジェクトなの
要素は構造体なんかな?
何個かデータをまとめて それに命令をくっつけるんです
データのまとまりの種類は幾つかあって
でもポリモーフィズムで同じ書式で似たような操作をするのです

データが何個かでオブジェクトで
クラスがオブジェクトの型だとすると
データは型に沿ってて 故にオブジェクト
とりあえず まとめて代入するセッターズwみたいのと
いや 一個代入する命令あってもいいんですけど
クラスのメソッドで実行メソッドみたいのあって
異なったインスタンスでも同じクラスのインスタンスなら
ポリモーフィズムじゃなくて
まんま同じメソッドがそれらにアクセスするの ってクラスでしょ
ブロックが数個集まったのは関数で って継承っぽくw
関数が集まったのが モジュールで コレも継承っぽく
モジュールが集まったのがパッケージ コレも継承っぽく

違うクラスのインスタンスでも
セッターズと実行 メソッドは
ポリモーフィズムで同じ名前のメソッドが用意してあり
しかもそいつらズラッと並びます
構造言語が並んだ命令を順に実行する よろしく
並んだインスタンスを順に実行するのです

しばらくHSPで実験するんですけど
途中でVC++VBに変更しそう
VisualStudioだとHSPのランタイムにアクセスできる可能性あるので
HSPの利点はWindowsで割とスクリプト言語的でGUIが楽ってかんじで
そこ好きです

VS2012を遂に購入したんですけど
新しいPCを買うまで インストールしないかんじ
そろそろ買おうかな?と考えてるので

今回はWindowsタブレットのHDD付いてるの狙ってます
タブレットは携帯感覚の充電管理とポータブルなとこがメリットですね
ポータブルじゃないと結局あんまり同じ状態でPCするので煮詰まるw
ノートPCなんですけど それでもそうですね
タブレットだと図書館 コーディングできそ 爆
何気に憧れてます
後 うちでPCしに来ていいよって言ってくれた喫茶店もめっけました♪

終了タグ

要素の終了タグ要るかも

文字列は改行文字があるから
一行の文字数バラバラの複数行を
割と効率良く処理できるんですよ。みたいな

label,l1[L,]label,l2[L:]NM,add[nm,]int,r1[r,]int,p1[p1,]int,p2[p2,]NM,line_end[;]
みたいな
引数タグとか返り値タグも楽そうですね
どうせ1byteでも256種類あるし
区切りが[]なのは吉里吉里っぽいですな
区切り文字を2文字以上にすると色々な種類に出来ますねぇ


1行目01〜
2行目10〜
3行目21〜
だとしたら
l_code[0]=1
l_code[1]=10
l_code[2]=21
のような配列も用意する。みたいな

繰り返し

言語とかの解説で
int 数値返り値
main 関数呼び出し
等と長々と処理してますが
処理するのPCだからw
事務的な作業を飽きもせず延々とするのPC得意ですからw

結局 一行の処理を出来るのなら
複数行の処理を行うのもそんなに難しくないのかも

mes "1:"+t

repeat notemax
mes ""+(cnt+1)+":"+t
loop
みたいな
いやいやコレ一行の処理が短すぎて例としてアレなんですが^^;

プログラミングにおいて抽象化は大事

プログラミングの抽象化は繰り返し化臭大なりってことですか

ver14/02/26

ラベルの処理が思いつかないまんま 約一年 爆

最近やっとコードに落とせつつあります

突破口は ラベルの定義と呼びだしをセットで扱うという考え方でした

書籍の序盤にのってた考え方

結局 ラベル定義して 後で拾ってるんですが

違う考え方を見つけたならではの進展ですね

構想は一本道だとダメかもしれません

一本道だと揺れられないのかもしれません

二本か三本 道があって

揺れながら コードに落とす

考えたことをコードに落とすという過程の一つの捉え方でした

変数処理もでっちあげましたよ

引数は数値しか扱えないのに 変数の名前どう扱おう?ってかんじですw

スタック

変数名とか文字列とかスタックに積むとかありかも
ソースをsearchして変数宣言があったらスタックに積む
それから変数名マネジャーにまとめるなり
配列で並べるなり
def vname 3
とか
変数を宣言してIDを3とするみたいな

文字列も
str "abc" push
pop 3
とか
文字列 "abc"を宣言してスタックに積む
その後popしてID 3にするみたいな
get_IDとかでスタックの番号戻してもいいですね


JAVA VM が文字列はスタックに積む
みたいなかんじから着想を得ました

要素

式一つは構造体にしたかったんですよ

ラベル、返り値、演算、p1、p2
ってなかんじ

でも挫折しました
ラベルあるかないかわからないし
複数あるかもしれないし
p1、p2あるかないかわかんないし
返り値を格納できても ポインタじゃないと 意味ないし
ポインタになると一要素っぽくない

結局は
ラベルがほぼp1取らなくて
構造体は取る方が多そうで
まっすぐ並ばないので
typeとcontentsの二つの要素を一単位にしました

その上で式一つは構造体一つで管理にするかもしれませんが

でもYARVは一行の構成要素一定じゃないみたいで
文字列のように行の中の要素が可変であるみたいなかんじになるのかも
したいねぇ