hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
アドベンチャーエンジン/モジュール開発室 - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

アドベンチャーエンジン

モジュール開発

 ここはHSP開発wikiで研究中のアドベンチャーエンジンに使用するモジュールの開発室です。
必要なモジュールのリストアップや開発したモジュールの公開・検討など、モジュール開発に使用してください。

描画系

装飾文字系のモジュールです。
装飾文字とは、代表的なものに袋文字影文字などがあります。
例えばこのような文字のことを言います。
fukuro.pngkage.png
他にも囲み文字(*1とか△覆鼻砲篶体文字などの種類があります。

袋文字

正式名称がなんというか分かりませんが袋文字などと言われているやつです。
とりあえず実行して頂ければ分かってもらえると思います。

+  袋文字0.5.hsp
  • まだコメントなしです。(-x-)--osakana (2006/10/24)
    • コメントなしっ 堯福陰Α院--りさ
    • これって、hsp3util よりキレイに表示できてるんじゃないでスか(^w^!?
    • コメントはいずれ・・・必ず・・・
    • hsp3util見てみましたが、太い輪郭を考慮してないんですね。
      これはキレイですが重いんです、もう少し早くできそうですが。 -- osakana
    • コメントつけましたよ (遅) --osakana (2006/11/09)
+  袋文字0.6.hsp
  • コードは増えましたが、少しだけ早くなりました。
    repeat の中に wait を入れて遅くすれば、何をやっているか分かり易いかも知れません
    でも大した事やってないけど(・_・) --osakana (2006/11/13)
  • break するの忘れてたので修正しました。 --osakana (2006/11/15)

影文字

こちらの正式名称も分かりませんが、実行してもらえれば分かると思います。

//仕様
color 影R,影G,影B
kage_moji 文字列,影の位置X,影の位置Y,文字R,文字G,文字B
+  影文字0.5.hsp
  • コメントなし・・・・(スマン) --osakana (2006/10/24)
    • 「ん」になってる! --osakana
    •  ↑(爆)
    • コメント追加 --osakana (2006/11/09)
  • マイナスの時の処理が間違ってたので修正しました。 --osakana (2006/11/18)


  • 簡単なものなら #define を使ったマクロでもいいかも。 --osakana
    • 影文字ってマクロになるくらい簡単に出来るんですね〜(^^/ コメント必要なかったデス --りさ
    • マクロにして見ました。横に長いので \ をはさんで改行した方が見やすいかな?。 --osakana (2006/10/20)
    • 影文字モジュールとの違い>影色と本体色の指定が逆。単純化のため影の位置にX,Yで同じ値を使用 --osakana
//仕様
color 文字R,文字G,文字B
kage_moji 文字列,影の位置,影R,影G,影B
+  影文字マクロ.hsp

装飾文字モジュール

上の袋文字と影文字の2つを1つにまとめた物です。 あんまり検証してませんので、おかしい所があったら教えて下さい。

+  装飾文字1.0.hsp

上のモジュールを使ったサンプルを作ってみました。
画面も見辛く 色々と変な作りになっちゃってますが、もっと良いやり方があったらツッコミ入れて下さい。(・。・

+  装飾文字モジュールサンプル

↑今見ると色々酷い・・・。作りもおかしいけど、track_dateとか書いてるし [tere] -- osakana

実行するには上の2つのファイル
sousyoku_moji1.0.hsp
sousyoku_moji1.2_sample.hsp
を同じフォルダーに入れて、sousyoku_moji1.2_sample.hspの方を実行します。

文字列操作

スペースを除去する

文字列の前後にある半角の空白を削除するモジュールです。
第二引数に指定した文字列を変換して第一引数の変数に代入します。
たとえば

   	    test 123 , 456, "789"   

と言う文字列に対して実行したら、

test 123 , 456, "789"

に成ります。 文字の真ん中の空白は消しません。あくまで前後だけに機能します。
というかそうなるように作ったので・・・。
ダブルクォーテーション内(囲まれた)の空白のみ残して
全ての空白を取るモジュールも作りたいと思います。実験的に・・・。

DelSpace? を若干変更しました。
タブも空白として削除します。 --osakana

+  デルスペース

スペースを除去する2

ダブルクォーテーション内にある空白以外 全ての空白を取るモジュール
少しずつ作ってました。もう直ぐ出来きる。 --osakana

命令を取得

命令を取得するモジュールです。(最終的にはHTML形式も)
モジュールにする必要は無いんですが、そこはそっとしといて下さい(^^;
相変わらずネーミングセンスが無いので、良いのあったらお願いします

少し変えてみました。今度はコメントつき(-o-)(2006/10/24)

+  mdl_meirei.as

<引数>
  引数は、命令によって型が違うが、常に値だけを代入している状態が理想かと( ̄▽ ̄ヾ (りさ)
  整数はそのまま文字列、文字列はダブルクォーテーションを外した文字列とすれば便利なのですが。


全てはlbl_basic内での処理ですので、そこを追加・変更したいと思います☆
まだどうやって使えば効率がいいのか、分からないので・・・(^^;

  • 以下に命令の取得とスペース削除のHSP2版サンプル。
+  命令の取得とスペース削除 for HSP2

小文字に変換する

  • 命令名などを小文字に変換するモジュール
    +  mdl_lowercase.hsp
  • 命令名などを小文字に変換するモジュール(短くしてみました)
    +  mdl_lowercase2.hsp
  • 命令名などを小文字に変換するモジュール(さらに短くしてみました)
    +  mdl_lowercase3.hsp
  • 標準命令のgetpathを使用(処理できる文字列の長さはMAX_PATHまでみたいなのでこの目的で使用する場合は注意^^;)
    +  getpath
  • WinAPIを使用して命令名などを小文字に変換するサンプル
    +  APIを使用した例
    参考資料:HSPWiKi:HSP3用llmodモジュール互換ライブラリ
     
  • 一応速度計ってみたので、ついでに載せておきます。(1000000回実行)
    1000分の1秒です。
    mdl_lowercase = 8219
    mdl_lowercase2 = 6000
    mdl_lowercase3 = 4547
    getpath = 1172
    charlower(API) = 406
    API使っときましょう!って事かな?
  • しかしあたしのと20倍も違うって・・・違いスギw(りさ
  • 当然、普通に考えても API でしょうね(自前でやる人なんてほとんどいないと)。
    ただ、単に文字列を小文字に変換する場合、文字列内の(スクリプトにおける)文字列の中("〜")まで変換
    してしまうのでご注意下さい。この辺り、構文解析と非常に関係した部分で面倒なんですよね。
  • API知らないとヒドイことに(笑)

ローマ字をカナに変換する

ユーザーからの入力が必要になる場合に使えるかもと。

API使えば早いと思いますが、このAPIは使い方分からないので(涙)

+  ローマ字をカタカナに変換する

サンプルを含めたスクリを載せておきます。
かなり強引なんで、訂正・修正して頂けると嬉しいです。
最低レベルのアルゴリズムしか思い浮かばなかったので・・・ -- りさ

力ずくな分だけ読みやすかったです(^^
これ以上どこを修正していいのか思いつきましぇん。 --osakana

無理矢理過ぎて、少し恥ずかしいです(^^;; -- りさ

かなカナ変換

ひらがなとカタカナを双方向変換します。まぜこぜの文字も変換可。
IEMの文字一覧と睨めっこしながら勘で作ったので恥ずかしい所があるかもしれません。

+  かなとカナを変換

半角・全角チェックもしてるとはステキですね(^^/
色々試したんですが、バグは見つかりませんでした! -- りさ

チェック有難うございます。
実はこれ ローマ字をカナに変換する に触発されて作ったのでした(☆_☆
誰にも分からない所で微修正しました(美修正ならいいのに・・・)
しかも kana04 から kana0.3.2 にダウングレード!・・・した訳じゃなく、
ファイルをリネームしてたらこうなっちゃいました。 --osakana^

自動改行

HSP2用のサンプルです。
コンテスト終了後にHSP3用に移殖しようかと思っていましたが、進行状況が早いようなのでHSP2版をそのまま(実行サンプルつき)で貼り付けておきます。

+  自動改行 for HSP2
  • 自動改行はもともとはどなたかが公開されていたものだったと思います。どこだったか忘れたしまいました。すみません。(- -; これはそれに若干手を加えたものだったと思います。(どの程度手を加えたのかすら忘れてしまった…orz) -- GENKI?
  • HSP3用のものはString/改行にあります。より高機能になっています。

コメント

  • 命令形式の取得を出来たとこまでアップしました。
  • 形式:get_meirei 解析データを入れる変数,シナリオ1行,命令を区切るキャラクタ~ -- osakana 2006-10-20 (金) 10:53:56
  • 感想とかおねがいします。 -- osakana 2006-10-20 (金) 10:56:58
  • どちらかといえば、構文解析でしょうか(^^☆ (できればでいいんですが、)ちょっとした要望を書きましたんで、見てみてくだサイ☆ -- りさ 2006-10-20 (金) 12:50:52
  • 要望と意見有難うございます。私もどれが良いのだろう?と思いながらなので、色々突っ込んでくれると助かります。 -- osakana 2006-10-20 (金) 13:16:44
  • 私のイメージとしては、main内で、命令1つ、2つで必要な命令データを取得できれば、すっきりするのでは?と言った感じなのでわざとここに書いてます。 -- osakana 2006-10-20 (金) 13:18:32
  • パラメータ省略時に-1だと、パラメーターに-1を使いたい時に困りそうなので、別に省略かどうかを保持しています。どうなんでしょう?自分でもよく分からん(@_@) -- osakana 2006-10-20 (金) 13:35:09
  • シナリオから読み取るデータは文字列ですから、トークンに分解した時、パラメータが空なら省略。たとえば『color 1,,2』だと文字列としてトークン分解で得られるのは"color", "1", "", "2"だから、省略かどうかは文字列が空かどうかで判断できます。 -- 2006-10-20 (金) 13:47:41
  • 見直したら保持してませんでした。保持してるのは文字数でした。おさわがせでした。 -- osakana 2006-10-20 (金) 13:53:02
  • どの命令が、引数をいくつ持つのか、をプログラム内で定義しとけば読み取るパラメータはパラメータの最大数でなく、その命令が必要とする数だけ読み取ればよかったりします。 -- 2006-10-20 (金) 13:53:22
  • そっか!、たしかにそれが正攻法かも。 -- osakana 2006-10-20 (金) 13:53:57
  • どこで、どういう形で定義するのが理想的でしょうか? -- osakana 2006-10-20 (金) 13:57:18
  • 理想は分からないので、例としては
      1
      2
      3
      4
      5
      6
      7
    
     
     
     
     
     
     
     
    
    ; コマンドとコマンドが要するパラメータの数を一元管理(モジュール)して
    cmd_list = "color", "font", "pos"
    prm_list = 3, 3, 2
    ; get_prmmax() コマンド名を引数に与えると必要なパラメータ数を返す。
    repeat get_prmmax(command)
        ; シナリオ一行からパラメータ取得
    loop
    とか?
  • と言う事は別にテキストファイルに命令名とパラメーター数を書いておいて、読み込むのでもよさそうね。 -- osakana 2006-10-20 (金) 14:13:59
  • たとえば、
    ;text file
    mes 1
    pos 2
    Frame 4
  • て、かんじで。 -- osakana 2006-10-20 (金) 14:20:10
  • 開発時はそんな感じですね。 -- 2006-10-20 (金) 14:22:50
  • どうでしょう(^^?数多くの命令の分だけの多次元配列を用意して判定するロスと、TOKEN_NUM分だけループするロス(^^;どっちが優位だと思いますか?? -- りさ 2006-10-21 (土) 13:27:43
  • 決して反論してるわけではないので、ご理解ください☆ -- りさ 2006-10-21 (土) 13:28:16
  • 分かります。たしかに、そこなんですよね 今の所全トークン処理でやって、連想配列とか実装されたらまた考えれば良いですね。 -- osakana 2006-10-21 (土) 18:37:40
  • 私も日に日に考えが変わってきてます。いい意味で[^^](サンプル書き直し中・・・) -- osakana 2006-10-21 (土) 19:03:42
  • 若干変更でいささか読み良くなりやした。どうでしょうか? -- osakana 2006-10-24 (火) 11:16:30
  • しばらくたって、トークン分解をモジュールにする必要が無いのに気が付いた。 -- osakana 2006-10-24 (火) 11:18:53
  • DelSpace? をタブ対応にしました。どうだしょう?(だ? -- osakana 2006-10-24 (火) 11:19:55
  • 囲み文字と、影文字のモジュールを追加しました。お口に合いますでしょうか?(笑) -- osakana 2006-10-24 (火) 11:53:18
  • あっ〜こういうのも欲しかったんです☆tStrと融合させるのがイイんでしょうか(^^?それともこのモジュールからtstrを呼び出せばいいのかな?? -- りさ 2006-10-24 (火) 12:02:51
  • ん〜どっちがいいんでしょうね?このままモジュールが増えていったらファイルが多くなってきますしフォルダに分けてしまうとか、たとえばmdlフォルダとlblフォルダにそれぞれまとめる。それか雑用モジュールを1つのファイルにまとめるとか? -- osakana 2006-10-24 (火) 13:43:45
  • あ、使う時はいつもの様にナイスネーミングにしといてくださいね(~n~; -- osakana 2006-10-24 (火) 14:04:49
  • あと修正も。(コラ) -- osakana 2006-10-24 (火) 14:07:11
  • 一番ソースの量が少なくて済むように、tStr命令の中で展開しました(^^☆ ポイントだけ抑えて、内部で使用させていただきますねっ -- りさ 2006-10-24 (火) 16:41:26
  • あと、DelSpace? はまったく問題なかったので、そのまま使わせて頂くことにしました☆ TAB と SPACE の定義をmain に移させて貰いました。このマクロは便利デスね〜★どうしていままで思い浮かばなかったんでしょうアタシ(笑) -- りさ 2006-10-24 (火) 16:42:43
  • この便利マクロ?は結構思いつきで書いたんですが、昇進出来たようで嬉しく思います。 -- osakana 2006-10-25 (水) 02:26:09
  • 通常記号はいいんですが(逆にマクロ化すると読み辛い)、タブ・スペース・セミコロン・ダブルクォーテーション・シングルクォーテーションだけは、マクロの方が読みやすいデスね(^^☆エディタの色分けもハッキリしますし♪ -- りさ 2006-10-25 (水) 14:00:24
  • 昔作ったAVGもどきのモジュールから使えそうなのを引っ張り出してきました。スペース削除と自動改行です。参考に…なるでしょうか。HSP2用なのはご容赦を。 -- GENKI? 2006-10-26 (木) 23:11:07
  • 今更ながらコメント追加しました。でももう解析済みでしょう(=x=)今後の方の為に!と言う事にしとこう(エ_エ) -- osakana 2006-11-09 (木) 02:39:22
  • 袋文字と影文字を少し整理しました。 -- osakana 2006-11-13 (月) 21:29:46
  • 袋文字若干速度アップアップ(ーxー;) -- osakana 2006-11-13 (月) 21:31:26
  • 「囲み文字」は,箸△箸のことで、ここにある囲み文字のモジュールが出力するヤツは「袋文字」と言うようです。 -- GENKI? 2006-11-13 (月) 21:31:41
  • 袋文字と影文字は組み合わせて使いたい場合もあると思うので(実際ペイントソフトでは組み合わせる)、1個の命令にまとまるといいな、思うのですが…どうでしょう? -- GENKI? 2006-11-13 (月) 21:43:40
  • 袋文字というんですね!有難うございます。では後でごっそり直しておきたいと思います。それと袋文字とか囲み文字の違いをどこかに書いてもらえると助かります。 -- osakana 2006-11-13 (月) 22:21:19
  • なるほど、1つの命令にするのは良さそうですね。お互いのパラメーターとかをどう統合すれば一番良いのかまだ思い付きませんが、ちょっくら取り掛かってみます。アイデアがあったら教えて下さい。 -- osakana 2006-11-13 (月) 22:26:19
  • 輪郭文字は袋文字の中色を透明色にした文字のこと…っぽい感じ。検索しても明確な説明の記述見つけられなかった。 [worried2] -- GENKI? 2006-11-13 (月) 23:50:04
  • 勘違いしてました。,箸△慮た目そのものが例だったんですね。,筬△領磴どこにあるのか探してしまいました(恥)輪郭文字は真ん中を抜いた物だったのですね、これはgcopyとか使えば出来そうですね。 -- osakana 2006-11-14 (火) 00:49:15
  • 上の説明有難うございますしかも画像入り。私も詳しく無いのに作っちゃっているので、色々な助言助かります。 -- osakana 2006-11-14 (火) 00:55:29
  • 直しておきました。 -- osakana 2006-11-14 (火) 04:49:47
  • 一個にまとめるのに苦戦してます。処理じゃなく仕様に・・・。たとえば引数山盛りにして一個の命令にするか、それとも 別に色などを設定する命令を作るべきか・・・どうしましょう? -- osakana 2006-11-17 (金) 10:07:29
  • そうですね。毎回引数てんこもりだとちょっと困りものですね。分けたほうがいいと思います。2つぐらい?使用頻度で分けたらこんなかんじでしょうか。 -- GENKI? 2006-11-17 (金) 20:31:57
    • 文字色 …これはcolor命令が反映されるのが自然な感じです。
    • 影の色、枠色、影の位置、枠の太さ、枠の角 …この辺はあまり頻繁に変えなさそう。
    • 文字列 …変更頻度が高いのはコレぐらいでしょうか?
  • 私も分けるとしたら3つ位かなと思ってましたが、やはり3つで良さそうですね。 -- osakana 2006-11-18 (土) 01:46:08
  • あっ、2つでした・・・。でも3つバージョンで作ってます・・。 -- osakana 2006-11-18 (土) 21:16:41
  • 一応完成ましたので公開しました。 -- osakana 2006-11-23 (木) 03:24:04
  • 影と袋のそれぞれの設定と出力とで3つでしたか。分かりやすくていい感じです。 -- GENKI? 2006-11-23 (木) 20:54:03
  • ダメと言われたらどうしようかと.....(^^)。後はもう少し解説書いたり これを使ったサンプルを作ろうかと思ったりしてます。 -- osakana 2006-11-24 (金) 01:18:59
  • 袋文字の角を丸くする方は自分では作れないorz ルートを利用するなんて自分には思いつかなかった。年が少なすぎたかw -- 七次元? 2006-11-24 (金) 17:09:42
  • これはピタゴラスの定理に基づいた有名な公式みたいです(違うか?)。そういう私も割と最近知りました。(殆ど勉強して来なかったので私にとっては皆優秀に見えて仕方ない) -- osakana 2006-11-24 (金) 18:07:42
  • あっ。長さが分かるならば、片方の端を固定したひもをピーンと張って回せば円になる、というのがもしかしたら使えるのでは?と思い付いて試したら出来たみたいな・・・。(sin cosを使った方が素直なのでしょうが。) -- osakana 2006-12-04 (月) 19:48:15
  • 装飾文字モジュールのサンプルがやっと出来たので更新しました。 -- osakana 2006-12-04 (月) 20:23:01
  • こんにちは。開発とは関係がないのですが [worried2] ひらがなカタカナ変換モジュールを自身のプログラムに使わせていただいてよろしいでしょうか?? [ojigi] -- As 2007-01-28 (日) 02:44:30
  • Asさんこんにちは、こんなのでよければ自由にお使い下さい。自分で作っといて言うのもおかしいですが正直あんまり使い道が思いつかなかったので(^^)お役に立てればどうぞです。 -- osakana 2007-01-28 (日) 14:28:22
  • 有難うございます [bsmile2] wpeekを使って作っていたのですが、どうもうまくいかず挫折してしまいまして何かないかと探しておりました(笑) -- As 2007-01-28 (日) 15:35:08
  • 行頭と行末のタブとスペースを取り除くモジュールを行頭と行末のタブとスペースを取り除くモジュールに書かせていただきました。2byte文字のも対応しました -- y.tack? 2008-12-18 (木) 11:36:58

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

参考モジュール

String文字列操作関連。シフト、矩形、置換、比較、連結、CSV形式データの読み込みなど。
文字列の計算モジュール文字列で記述した計算式を計算するモジュール。
構文解析

*1 丸で囲んだ数字の1。PCによっては文字化けを起こすためネット上などではあまり使われない。
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2013-04-03 (水) 03:16:52 (249d)