Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2016/04/10 (日)

とりあえず、半分くらいは完成?!

| 22:43 | とりあえず、半分くらいは完成?! - 雪乃☆雫のなでしこ日和 を含むブックマーク はてなブックマーク - とりあえず、半分くらいは完成?! - 雪乃☆雫のなでしこ日和 とりあえず、半分くらいは完成?! - 雪乃☆雫のなでしこ日和 のブックマークコメント

 選択肢の怪現象が解消され、おかげさまで原因もなんとなく分かって、本当の意味でナゾ解明と言えそう

 やはり、キー表示のナゾと、問題の根源は同じだったらしく思われます。


 ・・・とゆうわけで、やっぱり、念のため、シナリオから読んだ数値は全部、整数変換を付けとくことにした;

 まだまだほかにも、絶対必要なセーブとロードの機能や、BGM(MIDIを鳴らすところまでは学んだけど、よく考えたらシナリオにBGMやSEの機能を盛り込んでなかった(^^;)、フルスクリーン表示など、やるべきことはいろいろ残っているけれど、それはまたぼちぼち学びながら作っていくこととして、とりあえず、いま出来ているところまでは、希望どうりに動くようになったように思うので、現状をUPしておくことにする。

 なんでかってゆうと、ちょっと飽きてきた(爆)のと、ちょっとひらめいて、別のモノを作ってみたくなったからですw


のところ出来ること》

 ・ウエイトをかけた影付文字での文章の表示。(フォントスタイルは自由に設定可)

 ・背景の表示と変更。(しょぼいトランジョンあり)

 ・マスクで透過した立ち絵の表示。(半透明にもできます)

 ・テキストウィンドウのサイズは自由に変更でき、サウンドノベル風にも、ビジュアルノベル風にも設定可能です。

 ・テキストウィンドウの画像は、指定した矩形を半透明に、それ以外の枠部分を、マスクの透過付きで表示出来ます。(こだわりです!)

 ・右クリックでテキストウィンドウを隠す。

 ・ちょっと画面を揺らす的な機能あり。(ぶつかったとか殴られたとか)

 ・選択肢によるシナリオ分岐。(選択肢の表示位置も自由に変えられます)

#-----------------------------------------------------------------------
# なこノベル(半分くらい完成版w)
#-----------------------------------------------------------------------
!母艦設計=「母艦の可視はオフ」

#-----基本設計----------------------------------------------------------

# シナリオファイル
シナリオファイルとは文字列。シナリオファイル=「シナリオ.csv」

# 自動改行
自動改行とは整数。自動改行オン

# 背景の大きさはゲーム画面の大きさ。母艦のクライアントの大きさでもある。
背景幅とは整数。背景幅=640
背景高さとは整数。背景高さ=480
背景色とは整数。背景色=$000000    #背景画像がない場合

# 立ち絵の大きさ。は一枚表示のみ。
立ち絵幅とは整数。立ち絵幅=背景幅
立ち絵高さとは整数。立ち絵高さ=背景高さ
元立ち絵透過色とは整数。元立ち絵透過色=$00FF00
立ち絵透過色とは整数。立ち絵透過色=元立ち絵透過色

# 立ち絵表示位置
立ち絵Xとは整数。立ち絵X=背景幅-立ち絵幅
立ち絵Yとは整数。立ち絵Y=背景高さ-立ち絵高さ

# テキストウィンドウの大きさ(画像の大きさ)
テキストウィンドウ幅とは整数。テキストウィンドウ幅=640
テキストウィンドウ高さとは整数。テキストウィンドウ高さ=480
テキストウィンドウ色とは整数。テキストウィンドウ色=$000077    #画像がなかった場合

# テキストウィンドウ表示位置
テキストウィンドウXとは整数。テキストウィンドウX=背景幅-テキストウィンドウ幅
テキストウィンドウYとは整数。テキストウィンドウY=背景高さ-テキストウィンドウ高さ

# テキストウィンドウ内部の透過する矩形(テキストウィンドウ画像上のX,Yで指定)
TW透過Xとは整数。TW透過X=0
TW透過Yとは整数。TW透過Y=0
TW透過Wとは整数。TW透過W=テキストウィンドウ幅
TW透過Hとは整数。TW透過H=テキストウィンドウ高さ
TW透明度とは整数。TW透明度=50
元TW透過色とは整数。元TW透過色=$00FF00
TW透過色とは整数。TW透過色=元TW透過色

# メッセージ表示位置(テキストウィンドウ上のX,Yを指定)
メッセージXとは整数。メッセージX=20
メッセージYとは整数。メッセージY=20

# 文字書体
メッセージ書体とは文字列。メッセージ書体=「MS ゴシック|20|太字」。文字書体はメッセージ書体。
メッセージ色とは整数。メッセージ色=$FFFFFF
メッセージ影色とは整数。メッセージ影色=$000000
メッセージ影とは整数。メッセージ影=2      #大きいほど影が離れる(現状では0-3くらいが妥当か)
メッセージ速度とは整数。メッセージ速度=10    #0で瞬時。小さいほど早い
行とは整数。行=0

# 選択肢
選択肢数とは整数。選択肢数=3
選択肢表示Xとは整数。選択肢表示X=テキストウィンドウX+メッセージX
選択肢表示Yとは整数。選択肢表示Y=テキストウィンドウY+メッセージY
選択肢幅とは整数。選択肢幅=テキストウィンドウ幅-選択肢表示X-100
選択肢隔とは整数。選択肢隔=0
選択肢表示位置固定とは整数。選択肢表示位置固定=オン  #オフにすると表示しているメッセージの下に続けて表示。(選択肢表示Xは指定できます)
                            #オンならメッセージを消し、選択肢表示Xと選択肢表示Yで指定された位置に表示
# ブリンク
ブリンク幅とは整数。ブリンク幅=「▼」の文字幅取得+メッセージ影
ブリンク高さとは整数。ブリンク高さ=「▼」の文字高さ取得+メッセージ影
ブリンク透過色とは整数。ブリンク透過色=$000001
ブリンク表示Xとは整数。ブリンク表示X=(テキストウィンドウX+テキストウィンドウ幅/2-ブリンク幅/2)
ブリンク表示Yとは整数。ブリンク表示Y=(テキストウィンドウY+テキストウィンドウ高さ)-40。
ブリンク速度とは整数。ブリンク速度=300
#-----------------------------------------------------------------------

#-----母艦設計----------------------------------------------------------
母艦のタイトルは「なこノベル」
母艦を$000000で画面クリア母艦のスタイルは「枠固定」
母艦オフに最大化ボタン有効変更。
母艦のクライアント幅は背景幅。母艦のクライアント高さは背景高さ。
母艦中央移動
母艦の可視はオン。
#-----------------------------------------------------------------------

#-----宣言--------------------------------------------------------------
改ページ待機とは整数オフ。
選択肢待機とは整数オフ。
メッセージ行数とは整数=0。
ラベル一覧とは配列ラベルとは文字列ラベル文字列とは文字列。
色指定とは整数改行文字列とは文字列改行文字列改行確認とは整数改行確認はオフ。
立ち絵透明度とは整数。立ち絵透明度=0
テキストウィンドウ隠すとは整数。テキストウィンドウ隠す=オフ。
#-----------------------------------------------------------------------

#-----裏画面作成--------------------------------------------------------
裏画面とはイメージの可視はオフ。
裏画面の幅は背景幅。裏画面の高さは背景高さ。

裏_背景とはイメージの可視はオフ。
裏_背景の幅は背景幅。裏_背景の高さは背景高さ。
裏_背景を背景色で画面クリア。

裏_立ち絵とはイメージの可視はオフ。
裏_立ち絵の幅は立ち絵幅。裏_立ち絵の高さは立ち絵高さ。
裏_立ち絵を立ち絵透過色で画面クリア。    #立ち絵をロードせずにオンしても透明になるように
立ち絵表示とは整数オフ。

裏_テキストウィンドウとはイメージの可視はオフ。
裏_テキストウィンドウの幅はテキストウィンドウ幅。裏_テキストウィンドウの高さはテキストウィンドウ高さ。
裏_テキストウィンドウをテキストウィンドウ色画面クリア。    #画像無しの場合のベタウィンドウ
テキストウィンドウ表示とは整数オフ。
#-----------------------------------------------------------------------

#-----ブリンクカーソル--------------------------------------------------
ブリンク画像とはイメージの可視はオフ。
ブリンク画像の幅はブリンク幅*2。ブリンク画像の高さはブリンク高さ。

# カーソルを描く
ブリンク画像をブリンク透過色で画面クリア文字色黒色。ブリンク画像のメッセージ影,メッセージ影へ「▼」を文字描画文字色白色。ブリンク画像の0,0へ「▼」を文字描画アニメ処理用とはイメージの可視はオフ
アニメ処理用の幅はブリンク幅。アニメ処理用の高さはブリンク高さ。

セル1とはイメージの可視はオフ。
セル1の幅はブリンク幅。セル1の高さはブリンク高さ。

セル2とはイメージの可視はオフ。
セル2の幅はブリンク幅。セル2の高さはブリンク高さ。

ブリンクとはアニメ。
#-----------------------------------------------------------------------


#-----の他処理用の裏画面----------------------------------------------
保持用とはイメージの可視はオフ。
保持用の幅は母艦のクライアント幅。保持用の高さは母艦のクライアント高さ。
保持用を背景色で画面クリア。

トランジョン用とはイメージの可視はオフ。
トランジョン用の幅は母艦のクライアント幅。トランジョン用の高さは母艦のクライアント高さ。

選択肢用とはイメージの可視はオフ。
選択肢ボタンとは配列。 #0ボタン表示位置X、1ボタン表示位置Y、2ボタン幅、3ボタン高さ

テキスト保存用とはイメージの可視はオフ。
テキスト保存用の幅はテキストウィンドウ幅。テキスト保存用の高さはテキストウィンドウ高さ。
#-----------------------------------------------------------------------

#-----表画面------------------------------------------------------------
表画面とはイメージの可視はオン。
表画面の幅は母艦のクライアント幅。表画面の高さは母艦のクライアント高さ。
表画面のXは0。表画面のYは0。
表画面を背景色で画面クリア。

表画面のマウス移動した時は~
  もし、選択待機オンならば
    選択肢用の選択肢ボタンを表画面へ選択肢数でマウスインアウト反映。
  
表画面のマウス押した時は~
  もし、改ページ待機オンならば
    もし、表画面の押されたボタン=右ならば
      もし、テキストウィンドウ隠す=オフならば
        テキストウィンドウ隠す=オン
        テキストウィンドウ表示オフ
        ADV画面合成
        ブリンクを停止
        描画処理反映
      違えば
        テキストウィンドウ復帰
  
    違えばもし、表画面の押されたボタン=左ならば
      もし、テキストウィンドウ隠す=オンならば
        テキストウィンドウ復帰
        
      違えば
        もし、コマンドが「改ページ」ならば
          テキストウィンドウクリア。
           ブリンクを停止。
           シナリオ解析
        違えばもし、コマンドが「改行ならば
           ブリンクを停止。
           シナリオ解析
        違えばもし、コマンドが「クリック待ち」ならば
          シナリオ解析
        違えば
          戻る
    違えば
       戻る
      
  違えばもし、選択待機オンならば
    もし、表画面の押されたボタン=左ならば
      もし、前選択ボタン=0でなければ
        選択肢ボタン
        ラベルは「*」
         ラベル文字列ラベル一覧¥(前選択ボタン-1)
        シナリオの0でラベルを0から表検索。
        ジャンプ先はそれ。
        ラベル検索ジャンプ
      違えば
        戻る
    違えば
      戻る
  違えば
    戻る
#-----------------------------------------------------------------------

#-----シナリオ開く-------------------------------------------
シナリオファイルを開く。
シナリオはそれ
シナリオ行数はシナリオの要素数。
新規シナリオとは整数。新規シナリオ=オン
シナリオ解析
#------------------------------------------------------------

#------------------------------------------------------------
*シナリオ解析
  改ページ待機オフ。
  もし、新規シナリオ=オンならば
    行番号=0
    新規シナリオ=オフ
  違えば    
    行番号=行番号+1

  コマンドはシナリオ¥行番号,0
  もし、行番号>シナリオ行数ならば
    「おわり」と言う。
    終了。
  違えば、
    もし、コマンドがならば   
      シナリオ解析
      
    違えばもし、コマンドが「#」ならば      #コメント行
      シナリオ解析

    違えばもし、コマンドが「*」ならば      #ラベル
      「おわり」と言う。
      終了。

    違えばもし、コマンドが「/」ならば      #改ページ
      コマンドは「改ページ」
      改ページ処理。
    
    違えばもし、コマンドが「END」ならば    #終了処理
      背景色=シナリオ¥行番号,1
      裏_背景を背景色で画面クリア。
      エフェクトナンバー=1
      立ち絵表示オフ
      テキストウィンドウ表示オフ
      ADV画面合成
      終了
       
    #------------------------------------------------------------
    # 設定
    #------------------------------------------------------------
    違えばもし、コマンドが「$」ならば      #設定
      コマンドはシナリオ¥行番号,1
      
      もし、コマンドが「キャプション」ならば
        もし、シナリオ¥行番号,2=でなければ母艦のタイトルはシナリオ¥行番号,2
        シナリオ解析
      
      違えばもし、コマンドが「テキストウィンドウサイズ」ならば
        もし、シナリオ¥行番号,2=でなければテキストウィンドウ幅=(シナリオ¥行番号,2)を整数変換
        もし、シナリオ¥行番号,3=でなければテキストウィンドウ高さ=(シナリオ¥行番号,3)を整数変換
        裏_テキストウィンドウの幅はテキストウィンドウ幅。裏_テキストウィンドウの高さはテキストウィンドウ高さ。
        シナリオ解析

      違えばもし、コマンドが「テキストウィンドウ表示位置」ならば
        もし、シナリオ¥行番号,2=でなければテキストウィンドウX=(シナリオ¥行番号,2)を整数変換
        もし、シナリオ¥行番号,3=でなければテキストウィンドウY=(シナリオ¥行番号,3)を整数変換
        シナリオ解析

      違えばもし、コマンドが「テキストウィンドウ半透明」ならば
        もし、シナリオ¥行番号,2=でなければTW透過X=(シナリオ¥行番号,2)を整数変換
        もし、シナリオ¥行番号,3=でなければTW透過Y=(シナリオ¥行番号,3)を整数変換
        もし、シナリオ¥行番号,4=でなければTW透過W=(シナリオ¥行番号,4)を整数変換
        もし、シナリオ¥行番号,5=でなければTW透過H=(シナリオ¥行番号,5)を整数変換
        もし、シナリオ¥行番号,6=でなければTW透明度=(シナリオ¥行番号,6)を整数変換
        シナリオ解析

      違えばもし、コマンドが「テキストウィンドウ色ならば
        もし、シナリオ¥行番号,2=でなければテキストウィンドウ色=シナリオ¥行番号,2
        裏_テキストウィンドウをテキストウィンドウ色画面クリア
        シナリオ解析
              
      違えばもし、コマンドが「メッセージ表示位置」ならば
        もし、シナリオ¥行番号,2=でなければメッセージX=(シナリオ¥行番号,2)を整数変換
        もし、シナリオ¥行番号,3=でなければメッセージY=(シナリオ¥行番号,3)を整数変換
        シナリオ解析          

      違えばもし、コマンドが「メッセージ速度」ならば
        もし、シナリオ¥行番号,2=でなければメッセージ速度=(シナリオ¥行番号,2)を整数変換
        シナリオ解析
        
      違えばもし、コマンドが「メッセージ書式」ならば
        もし、シナリオ¥行番号,2=でなければメッセージ書体=シナリオ¥行番号,2
        もし、シナリオ¥行番号,3=でなければメッセージ色=シナリオ¥行番号,3
        もし、シナリオ¥行番号,4=でなければメッセージ影色=シナリオ¥行番号,4
        もし、シナリオ¥行番号,5=でなければメッセージ影=シナリオ¥行番号,5
        文字書体はメッセージ書体。
        シナリオ解析

      違えばもし、コマンドが「行ならば
        もし、シナリオ¥行番号,2=でなければ行=(シナリオ¥行番号,2)を整数変換
        シナリオ解析
      
      違えばもし、コマンドが「ブリンク表示ならば
        もし、シナリオ¥行番号,2=でなければブリンク表示X=(シナリオ¥行番号,2)を整数変換
        もし、シナリオ¥行番号,3=でなければブリンク表示Y=(シナリオ¥行番号,3)を整数変換
        もし、シナリオ¥行番号,4=でなければブリンク速度=(シナリオ¥行番号,4)を整数変換
        シナリオ解析

      違えばもし、コマンドが「自動改行ならば
        もし、シナリオ¥行番号,2=でなければ
          もし、シナリオ¥行番号,2=「オンならば
            自動改行オン
          違えば
            自動改行オフ
        シナリオ解析

      違えばもし、コマンドが「選択肢表示位置固定」ならば
        もし、シナリオ¥行番号,2=でなければ
          もし、シナリオ¥行番号,2=「オンならば
            選択肢表示位置固定=オン
          違えば
            選択肢表示位置固定=オフ
        シナリオ解析

      違えばもし、コマンドが「選択肢表示ならば
        もし、シナリオ¥行番号,2=でなければ選択肢表示X=(シナリオ¥行番号,2)を整数変換
        もし、シナリオ¥行番号,3=でなければ選択肢表示Y=(シナリオ¥行番号,3)を整数変換
        もし、シナリオ¥行番号,4=でなければ選択肢幅=(シナリオ¥行番号,4)を整数変換
        もし、シナリオ¥行番号,5=でなければ選択肢隔=(シナリオ¥行番号,5)を整数変換
        シナリオ解析

      違えばもし、コマンドが「テキストウィンドウ透過色」ならば
        もし、シナリオ¥行番号,2=でなければ元TW透過色=シナリオ¥行番号,2
        シナリオ解析
              
      違えばもし、コマンドが「立ち絵透過色」ならば
        もし、シナリオ¥行番号,2=でなければ元立ち絵透過色=シナリオ¥行番号,2
        シナリオ解析

      違えば
        シナリオ解析            
    #------------------------------------------------------------
    # コマンド
    #------------------------------------------------------------              
    違えばもし、コマンドが「!」ならば    #命令
      コマンドはシナリオ¥行番号,1

      もし、コマンドが「改行ならば
        もし改行確認=オンならば    #自動改行した直後の改行コードは無視する
          改行確認=オフ
          シナリオ解析
        違えば
          点滅カーソル
          改ページ待機オン。

      違えばもし、コマンドが「改ページ」ならば
        改ページ処理。
      
      違えばもし、コマンドが「クリック待ち」ならば    #点滅カーソルを出さずに入力待ち
        改行確認=オフ
        改ページ待機オン。
        
      #------------------------------------------------------------
      #    イメージ関連
      #------------------------------------------------------------
      違えばもし、コマンドが「背景」ならば        #背景はロードと同時に表示で構わないかな
        裏_背景の画像はシナリオ¥行番号,2
        エフェクトナンバー=シナリオ¥行番号,3
        色指定=シナリオ¥行番号,4
        ADV画面合成
        メッセージ行数=0      #メッセージ表示位置を先頭に戻し
        シナリオ解析

      違えばもし、コマンドが「背景色」ならば
        背景色=シナリオ¥行番号,2
        裏_背景を背景色で画面クリア。
        エフェクトナンバー=シナリオ¥行番号,3
        色指定=シナリオ¥行番号,4
        ADV画面合成
        メッセージ行数=0      #メッセージ表示位置を先頭に戻し
        シナリオ解析
#------------------------------------------------------------

      違えばもし、コマンドが「立ち絵ロード」ならば
        裏_立ち絵の画像はシナリオ¥行番号,2
        もし、シナリオ¥行番号,3=ならば
          立ち絵透過色=元立ち絵透過色
        違えば
          立ち絵透過色=シナリオ¥行番号,3
        シナリオ解析

      違えばもし、コマンドが「立ち絵オフならば
        もし、立ち絵表示オフならば    #オフなのにオフしようとした場合は無視する
          シナリオ解析
        違えば
          立ち絵表示オフ
          エフェクトナンバー=シナリオ¥行番号,2
          ADV画面合成
          テキスト保存
          メッセージ行数=0  
          シナリオ解析
        
      違えばもし、コマンドが「立ち絵オンならば    #違う立ち絵をロードして置いてオンする場合もあるが・・・
        立ち絵表示オン
        エフェクトナンバー=シナリオ¥行番号,2
        立ち絵透明度=シナリオ¥行番号,3
        ADV画面合成
        テキスト保存
        メッセージ行数=0  
        シナリオ解析
#------------------------------------------------------------

      違えばもし、コマンドが「テキストウィンドウロード」ならば
        裏_テキストウィンドウの画像はシナリオ¥行番号,2
        もし、シナリオ¥行番号,3=ならば
          TW透過色=元TW透過色
        違えば
          TW透過色=シナリオ¥行番号,3
        シナリオ解析

      違えばもし、コマンドが「テキストウィンドウオフならば
        もし、テキストウィンドウ表示オフならば    #オフなのにオフしようとした場合は無視する
          シナリオ解析
        違えば
          テキストウィンドウ表示オフ
          エフェクトナンバー=シナリオ¥行番号,2
          ADV画面合成
          メッセージ行数=0
          シナリオ解析

      違えばもし、コマンドが「テキストウィンドウオンならば
        もし、テキストウィンドウ表示オンならば    #オンなのにオンしようとした場合
          テキストウィンドウ表示オフ        #一旦オフしてから
          エフェクトナンバー=シナリオ¥行番号,2    #再びオンする
          ADV画面合成
        テキストウィンドウ表示オン
         エフェクトナンバー=シナリオ¥行番号,2
         ADV画面合成
        メッセージ行数=0
        シナリオ解析
#------------------------------------------------------------

      #------------------------------------------------------------
      #    分岐
      #------------------------------------------------------------
      違えばもし、コマンドが「選択肢」ならば
        改行確認=オフ
        選択肢数=シナリオ¥行番号,2
        もし、選択肢表示位置固定=オンならば
          保持用を表画面の0,0へ画像コピー。
          メッセージ行数=0
         違えば
          選択肢表示Y=(テキストウィンドウY+メッセージY)+((「あ」の文字高さ取得+メッセージ影+行)*(メッセージ行数+1))

        #選択肢ボタンの設定
        #0ボタン表示位置X、1ボタン表示位置Y、2ボタン幅、3ボタン高さ
        (選択肢数)
          選択肢ボタン回数,0は選択肢表示X
          選択肢ボタン回数,1は選択肢表示Y+(回数-1)*((「あ」の文字高さ取得+メッセージ影+選択肢隔))

          選択肢ボタン回数,2は選択肢幅
          選択肢ボタン回数,3は(「あ」の文字高さ取得+メッセージ影)
          
        (選択肢数)
          行番号=行番号+1
          もし、シナリオ¥行番号,0=「-」でなければ
            選択肢数=回数-1
            抜ける
          ラベル一覧¥(回数-1)=シナリオ¥行番号,2
          シナリオ¥行番号,1を(「あ」の文字高さ取得+メッセージ影+選択肢隔)*(回数-1)へ選択肢表示。
        選択肢をボタン化。

        選択待機オン

      違えばもし、コマンドが「ジャンプ」ならば
        改行確認=オフ
        ラベルは「*」
        ラベル文字列はシナリオ¥行番号,2
        シナリオの0でラベルを0から表検索。
        ジャンプ先はそれ。
        ラベル検索ジャンプ
      
      違えばもし、コマンドが「待機ならば
        シナリオ¥行番号,2秒待つ
        シナリオ解析

      違えばもし、コマンドが「振動」ならば
        もし、メッセージ行数=0ならば
          保持用のテキストウィンドウX,テキストウィンドウY,テキストウィンドウ幅,テキストウィンドウ高さをテキスト保存用の0,0へ画像部分コピー
        裏画面の10,10,裏画面の幅,裏画面の高さを表画面の0,0へ画像部分コピー
        描画処理反映
        0.01秒待つ
        裏画面の0,0,裏画面の幅,裏画面の高さを表画面の10,10へ画像部分コピー
        描画処理反映
        0.01秒待つ
        裏画面を表画面の0,0へ画像コピー
        テキスト保存用を表画面のテキストウィンドウX,テキストウィンドウYへ画像コピー
        描画処理反映
        シナリオ解析
      
      違えば          #存在ない命令だったらスキップ
        シナリオ解析
#------------------------------------------------------------

    違えば
      改行確認=オフ
      シナリオ¥行番号,0をメッセージ表示。
      
      もし、自動改行オンならば
        改行文字列はシナリオ¥行番号,0の1文字右部分。    #自動改行するかどうか判断
        メッセージ行数=メッセージ行数+1
        もし改行文字列=「{カッコ閉じ}」または
          改行文字列=「。」または
          改行文字列=「?」または
          改行文字列=「!」ならば
            改行確認=オン。
            コマンドは「改行」
            点滅カーソル
            改ページ待機オン。
        違えば
          シナリオ解析
      違えば
        メッセージ行数=メッセージ行数+1
        シナリオ解析
#------------------------------------------------------------

#-----改ページ-----------------------------------------------
*改ページ処理
  メッセージ行数=0
    もし改行確認=オンならば    #自動改行した直後の改ページはマウス入力待ちをしない        
      改行確認=オフ
      テキストウィンドウクリア
      シナリオ解析
    違えば
      点滅カーソル
      改ページ待機オン。
#------------------------------------------------------------

#-----メッセージ表示-----------------------------------------
*メッセージ表示(Sを)
  表画面の(テキストウィンドウX+メッセージX),(テキストウィンドウY+メッセージY)+(「あ」の文字高さ取得+メッセージ影+行)*メッセージ行数へメッセージ色,メッセージ影色,メッセージ影,メッセージ速度でSをノベルテキスト描画。
  テキスト保存
#------------------------------------------------------------

#-----選択肢表示---------------------------------------------
*選択肢表示(Sを{数値=0}Yへ)
  表画面の(選択肢表示X),(選択肢表示Y)+Yへメッセージ色,メッセージ影色,メッセージ影,0でSをノベルテキスト描画。
  テキスト保存
  
*選択肢をボタン化
  選択肢用の幅は選択肢幅*2。選択肢用の高さは(「あ」の文字高さ取得+メッセージ影)*選択肢数。
  選択肢用を選択肢幅*2,(「あ」の文字高さ取得+メッセージ影)*選択肢数で画像リサイズ。
  
  (選択肢数)
    表画面の選択肢表示X,選択肢表示Y+((回数-1)*(「あ」の文字高さ取得+メッセージ影+選択肢隔)),選択肢幅,(「あ」の文字高さ取得+メッセージ影)を選択肢用の選択肢幅,(回数-1)*(「あ」の文字高さ取得+メッセージ影)へ画像部分コピー。

   選択肢用を画像ネガポジ。
  (選択肢数)
    表画面の選択肢表示X,選択肢表示Y+((回数-1)*(「あ」の文字高さ取得+メッセージ影+選択肢隔)),選択肢幅,(「あ」の文字高さ取得+メッセージ影)を選択肢用の0,(回数-1)*(「あ」の文字高さ取得+メッセージ影)へ画像部分コピー。

#------------------------------------------------------------

#-----ジャンプ-----------------------------------------------
*ラベル検索ジャンプ
  もし、ジャンプ先=-1ならば
    「ラベルがありません」と言う。
    終了。
  違えばもし、シナリオ¥ジャンプ先,1がラベル文字列ならば
    行番号=ジャンプ先
    テキストウィンドウクリア。
    シナリオ解析。
  違えば
    シナリオの0でラベルをジャンプ先+1から表検索。
    ジャンプ先はそれ。
    ラベル検索ジャンプ
#------------------------------------------------------------

#-----テキストウィンドウクリア-------------------------------
*テキストウィンドウクリア
  保持用を表画面の0,0へ画像コピー。
  改ページ待機オフ。
  選択待機オフ。
  メッセージ行数=0
#------------------------------------------------------------

#------------------------------------------------------------
*テキスト保存
  表画面のテキストウィンドウX,テキストウィンドウY,テキストウィンドウ幅,テキストウィンドウ高さをテキスト保存用の0,0へ画像部分コピー。

*テキストウィンドウ復帰
  テキストウィンドウ隠す=オフ
  テキストウィンドウ表示オン
  ADV画面合成
  テキスト保存用を表画面のテキストウィンドウX,テキストウィンドウYへ画像コピー
  描画処理反映
  点滅カーソル
#------------------------------------------------------------

#-----点滅カーソル表示---------------------------------------
*点滅カーソル
  保持用のブリンク表示X,ブリンク表示Y,ブリンク幅,ブリンク高さをセル1の0,0へ画像部分コピー。
  ブリンク画像の0,0,ブリンク幅,ブリンク高さをアニメ処理用の0,0へ画像部分コピー。
  アニメ処理用をブリンク透過色,100でセル1の0,0へキャラ合成。  

  保持用のブリンク表示X,ブリンク表示Y,ブリンク幅,ブリンク高さをセル2の0,0へ画像部分コピー。
  ブリンク画像のブリンク幅,0,ブリンク幅,ブリンク高さをアニメ処理用の0,0へ画像部分コピー。
  アニメ処理用をブリンク透過色,100でセル2の0,0へキャラ合成。

  ブリンクのXはブリンク表示X。ブリンクのYはブリンク表示Y
  
  ブリンクの画像は「セル1
セル2」

  表示隔はブリンク速度。
#------------------------------------------------------------

#-----画面合成-----------------------------------------------
*ADV画面合成
  裏_背景を裏画面の0,0へ画像コピー。

  もし、立ち絵表示オンならば
    もし、立ち絵透明度=ならば
      立ち絵透明度=100
    裏_立ち絵を立ち絵透過色,立ち絵透明度で裏画面の立ち絵X,立ち絵Yへキャラ合成。

  もし、テキストウィンドウ表示オンならば
    裏_テキストウィンドウのTW透過X,TW透過Y,TW透過W,TW透過HをTW透過色,TW透明度で裏画面のテキストウィンドウX,テキストウィンドウYへテキストウィンドウ合成。

  トランジョン
  裏画面を保持用の0,0へ画像コピー。
  エフェクトナンバー=0
  色指定=0

*トランジョン
  もし、エフェクトナンバー=0ならば
    裏画面を表画面の0,0へ画像コピー。

  違えばもし、エフェクトナンバー=1ならば    #フェードイン
    25
      保持用を表画面の0,0へ画像コピー
      裏画面を表画面の0,0へ回数*4で画像半透明コピー。
      描画処理反映
      0.01秒待つ

  違えばもし、エフェクトナンバー=2ならば    #縦スリット
    20
      コピー幅=回数
      32
        裏画面の20*(回数-1),0,コピー幅,母艦のクライアント高さを表画面の20*(回数-1),0へ画像部分コピー。
      描画処理反映
      0.02秒待つ

  違えばもし、エフェクトナンバー=3ならば     #横スリット
    15
      コピー幅=回数
      32
        裏画面の0,15*(回数-1),母艦のクライアント幅,コピー幅を表画面の0,15*(回数-1)へ画像部分コピー。
      描画処理反映
      0.03秒待つ

  違えばもし、エフェクトナンバー=4ならば    #ブラックアウトイン
    塗り色=色指定                #(色指定可($RRGGBB)
    線色=色指定                 #主に背景専用
    トランジョン用の0,0から母艦のクライアント幅,母艦のクライアント幅へ四角。
    25
      保持用を表画面の0,0へ画像コピー
      トランジョン用を表画面の0,0へ回数*4で画像半透明コピー。
      描画処理反映
      0.01秒待つ
    25
      トランジョン用を表画面の0,0へ画像コピー
      裏画面を表画面の0,0へ回数*4で画像半透明コピー。
      描画処理反映
      0.01秒待つ

  違えばもし、エフェクトナンバー=5ならば    #モザイクアウトイン
    表画面をトランジョン用の0,0へ画像コピー。   #主に背景専用
    50
      トランジョン用を表画面の0,0へ画像コピー。
      表画面に回数画像モザイク。
      描画処理反映
      0.01秒待つ
    50
      裏画面を表画面の0,0へ画像コピー。
      表画面に50-回数画像モザイク。
      描画処理反映
      0.01秒待つ
      
  違えば、
    裏画面を表画面の0,0へ画像コピー。
#------------------------------------------------------------

#------------------------------------------------------------
●ノベルテキスト描画({グループ=?}OBJのX,Yへ{数値=$FFFFFF}表示色,{数値=$000000}影色,{数値=2}影,{数値=200}速度でSを)
  XXは整数。
  もし、速度=0ならば
    文字色は影色。
    OBJのX+影,Y+影へSを文字描画。
    文字色表示色。
    OBJのX,YへSを文字描画。
    描画処理反映
     
  違えば、
    XX=X
    (Sの文字数
      Sの回数から1文字抜き出す。

      もしそれ=「{CHR(10)}」ならば
        X=XX
        Y=Y+(それ文字高さ取得+メッセージ影)
        続ける

      文字色は影色。
      OBJのX+影,Y+影へそれ文字描画。
      文字色表示色。
      OBJのX,Yへそれ文字描画。
      描画処理反映
      (速度/1000)秒待つ。
   
      X=X+(それ文字幅取得)
#------------------------------------------------------------

#------------------------------------------------------------
●テキストウィンドウ合成({グループ=?}コピー元のX,Y,W,Hを{数値=$00FF00}透過色,{数値=50}透明度で{グループ=?}コピー先のX2,Y2へ)
  透過処理用をイメージとして作成。透過処理用の可視はオフ。
  透過処理用の幅はW。透過処理用の高さはH。

  # 半透明にしたい部分を透過処理用に移す
  コピー元のX,Y,W,Hを透過処理用の0,0へ画像部分コピー

  # コピー元の半透明にしたい部分以外をコピー先へ合成
  塗り色は透過色。線色は透過色。線太さは0。
  コピー元のX,YからX+W,Y+Hへ四角。
  コピー元を透過色,100でコピー先のX2,Y2へキャラ合成。
  
  # 半透明にしたい部分を透過コピー
  透過処理用をコピー先のX+X2,Y+Y2へ透明度で画像半透明コピー

  # コピー元を元に戻す
  透過処理用をコピー元のX,Yへ画像コピー。

  VCL_FREE(透過処理用)
//  透過処理用→壊す。
#------------------------------------------------------------

#------------------------------------------------------------
●キャラ合成({グループ=?}コピー元を{数値=$00FF00}透過色,{数値=100}透明度で{グループ=?}コピー先のX,Yへ)
  キャラ透過用をイメージとして作成。キャラ透過用の可視はオフ。
  # コピー元を保存
  キャラ透過用の画像はコピー元→名前
  
  # マスクの作成(キャラの透過部分が白、表示部分が黒の画像)
  マスク画像をイメージとして作成。マスク画像の可視はオフ。
  マスク画像の画像はコピー元→名前
  マスク画像を透過色で画像マスク作成
  
  # 背景と立ち絵を半透明合成したものをキャラ画像とする
  # 背景の方を半透明合成しているので、透明度の値を逆にしている。
  # キャラ透過用に背景を重ねたいがどういうわけかエラーになる
   コピー先をコピー元のX,Yへ(100-透明度)で画像半透明コピー

  キャラ画像をイメージとして作成。キャラ画像の可視はオフ。
  キャラ画像の画像はコピー元→名前

  # コピー元を元に戻す
  キャラ透過用をコピー元の0,0へ画像コピー。
  
  # キャラの透過色部分を黒に変換
  # はじめからキャラの透過色を黒にすると髪や目や文字に黒が使用出来なくなる
  # また、先にマスクを作ってあるので背景と半透明合成したキャラ画像も使える
  マスク画像を画像ネガポジ
  マスク画像をキャラ画像の0,0へ画像ANDコピー
  マスク画像を画像ネガポジ

  # 合成実行
  マスク画像をコピー先のX,Yへ画像ANDコピー    #背景にマスクを重ねる
  キャラ画像をコピー先のX,Yへ画像ORコピー      #背景にキャラを重ねる

  VCL_FREE(マスク画像)
  VCL_FREE(キャラ画像)
  VCL_FREE(キャラ透過用)
//  マスク画像→壊す
//  キャラ画像→壊す
//  キャラ透過用→壊す。
#-----------------------------------------------------------------------
#------------------------------------------------------------
●マウスインアウト反映({グループ=?}OBJ1のAを{数値=0}Sで{グループ=?}OBJ2へ)
  (S)
    もし、((OBJ2→マウスX)>(A¥回数,0))かつ
      ((OBJ2→マウスX)<(A¥回数,0)+(A¥回数,2))かつ
      ((OBJ2→マウスY)>(A¥回数,1))かつ
      ((OBJ2→マウスY)<(A¥回数,1)+(A¥回数,3))ならば
        選択ボタン回数。
    違えばもし、(回数=Aの要素数)かつ(選択ボタン=0)ならば
      選択ボタンは0。
    ここまで

  もし、前選択ボタン<>選択ボタンならば
    もし、前選択ボタン>0ならば
      OBJ1の(A\0,0),(A\0,1)+(前選択ボタン-1)*(A¥(前選択ボタン),3),(A¥(前選択ボタン),2),(A¥(前選択ボタン),3)をOBJ2の(A¥(前選択ボタン),0),(A¥(前選択ボタン),1)へ画像部分コピー。
    もし、選択ボタン>0ならば
      OBJ1の(A\0,0)+(A¥(選択ボタン),2),(A\0,1)+(選択ボタン-1)*(A¥(選択ボタン),3),(A¥(選択ボタン),2),(A¥(選択ボタン),3)をOBJ2の(A¥(選択ボタン),0),(A¥(選択ボタン),1)へ画像部分コピー。
  前選択ボタン=選択ボタン
  選択ボタン=0
  描画処理反映
#-----------------------------------------------------------------------

 ちなみに、これだけでは動きません。

 最低限シナリオファイルが必要で、ほかに、背景やら立ち絵やらを用意しなくちゃなりません。

 あとでいちおう、機能説明と、シナリオファイルの仕様説明を兼ねたサンプルシナリオでも作ってUPするつもり~。


後の目標》

 ・セーブとロードが出来るようにする。(最低限必要!)

 ・フラグによるシナリオ分岐。

 ・BGMの再生と効果音。

 ・文章を読み返す機能。

 ・次の選択肢まで早送りする機能。

 ・フルスクリーン表示

みずぎつねみずぎつね2017/11/24 17:56ノベルのセーブは「.txt」形式ならできそうです。
以下私が作ったプログラムです。既出だったらすいません。

#プログラムに「ナコ様」と「クジラ様」のピクチャーを使ってい#ます。
//キャラ一とは文字列=「{ランタイムパス}\lib\nako.png」
//キャラ二とは文字列=「{ランタイムパス}\lib\kujira.png」
母艦の最大化ボタン有効変更(オフへ)
母艦を中央移動
母艦のスタイルは「枠固定」
チェック列は0
#チェック列の変数は後で使います。

Cはデスクトップ&『ノベル用\』

「なし,P1,ファイル(&F)
P1,P2,セーブ(&O),Ctrl+O,なし,セーブ処理
P1,P3,ロード(&S),Ctrl+S,なし,ロード処理」の、
メニュー一括作成。

●セーブ処理
 「セーブしました」と言う
 Cにフォルダ作成。
 「チェック列は{チェック列}
  時間は{時間}」をC&「【データ】ノベル用.txt」へ保存
●ロード処理
 C&「【データ】ノベル用.txt」が存在するか
 もし、それがはいならば
  「ロードしました」と言う
  C&「【データ】ノベル用.txt」を読む
  それをナデシコする。
  メッセージはメッセージ控え
  メッセージフォームを黒色で画面クリア
  キャラ一の可視はオフ
  キャラ二の可視はオフ
  もし、チェック列が0ならば
  違えば
   チェック列はチェック列-4
   もし、時間が「朝」ならば
    メッセージの15に追加メッセージ一を配列一括挿入
   違えば
   もし、時間が「夜」ならば
    メッセージの15に追加メッセージ二を配列一括挿入
   違えば
 違えば
  「データがありません。セーブしてください」と言う

#メッセージは……
#「.txt」を読む
#メッセージはそれ
#で、変更できます。
#コメントは入力できません。
メッセージは「【ナレーション】
【ナコ】と【クジラ】が話している。

a
【ナコ】
あれれ。
今は、何時かな?
a
【クジラ】
えっと……

b
【クジラ】
どういたしまして。

a
【おしまい】


a」
#メッセージの控え
メッセージ控えは「【ナレーション】
【ナコ】と【クジラ】が話している。

a
【ナコ】
あれれ。
今は、何時かな?
a
【クジラ】
えっと……

b
【クジラ】
どういたしまして。

a
【おしまい】


a」

追加メッセージ一は「【クジラ】
朝の9時だよー!

a
【ナコ】
朝の9時だね。
教えてくれてありがとう。
a」

追加メッセージ二は「【クジラ】
夜の9時だよー!

a
【ナコ】
夜の9時だね。
教えてくれてありがとう。
a」

#一応、文章入力にはパターンを必要とします。
#【キャラの名前】(一行目)
#言葉一(二行目)
#言葉二(三行目)
#選択肢・アルファベット(四行目)
#四行を繰り返して入力しています。
#一行あたり18文字以上は、表示できません。

メッセージフォームとはフォーム
その親部品は母艦
そのHは150
そのWは650
そのXは0
そのYは240
そのスタイルは「枠なし」
その可視はオン
メッセージフォームを黒色で画面クリア

文章ボタンとはボタン
そのクリックした時は
  文章処理
#ボタンの文字変更は、変数の名前で決めています。
もし、名前が「【おしまい】」ならば
 文章ボタンのテキストは「もう一度」
 チェック列は0
 メッセージはメッセージ控え
   時間は空
  違えば
  文章ボタンの有効はオン

#注意。メッセージ配列には「」や『』を入れられません。
#画像を表示するときは画像合成は使えません。
#可視のオンとオフをします。

キャラ一画像とは文字列=「nako.png」
キャラ一とはフォーム。その可視はオフ。その親部品は母艦。
その画像はキャラ一画像
キャラ一を画像通り変形。
そのXは150
そのYは0
そのドラッグ移動はオフ

キャラ二画像とは文字列=「kujira.png」
キャラ二とはフォーム。その可視はオフ。その親部品は母艦
その画像はキャラ二画像
キャラ二を画像通り変形
そのXは100
そのYは-30
そのドラッグ移動はオフ

●画像処理
 もし、名前が「【ナコ】」ならば
  キャラ一の可視はオン
  キャラ二の可視はオフ
 違えば
 もし、名前が「【クジラ】」ならば
  キャラ一の可視はオフ
  キャラ二の可視はオン
 違えば
 もし、名前が「【おしまい】」ならば
  キャラ一の可視はオフ
  キャラ二の可視はオフ
 違えば

●選択処理
#文字サイズを小さくしておきます。
 文字サイズは10
 もし、選択肢がbならば
 「何時かな?」を、
  「朝
夜」でボタン選択
  時間はそれ
  もし、時間が「朝」ならば
#追加メッセージをメッセージに配列一括挿入します。
#配列一括挿入の前に、チェック列+1
   チェック列はチェック列+1
   メッセージのチェック列に追加メッセージ一を配列一括挿入
   文章処理
   チェック列はチェック列-1
#チェック列-1は必要なものです。
  違えば
  もし、時間が「夜」ならば
   チェック列はチェック列+1
   メッセージのチェック列に追加メッセージ二を配列一括挿入
   文章処理
   チェック列はチェック列-1
  違えば
 違えば
 文字サイズは25

#文章を表示するためのプログラム本体です。
#文字の表示は配列取り出すを使っています。
#メッセージのチェック列から取り出しています。
#配列取り出すを使うと、配列から文字が消えてしまうため、配列#挿入を使います。
#チェック列で取り出した文字を配列挿入すれば、元通りです。
#配列挿入を使うと、何度もメッセージを表示できます。

#言葉・名前は文字描画のための変数です。
#選択肢は、処理用変数です。

●文章処理
  文章ボタンのテキストは「文章」
  文章ボタンの有効はオフ
  文字色は白色
  文字サイズは25
  メッセージフォームを黒色で画面クリア
  メッセージのチェック列から1を配列取り出す
  名前はそれ
  メッセージフォームの0,10へ名前を文字描画。
メッセージのチェック列に名前を配列挿入
#名前の後にキャラクターの画像を変更しています。
画像処理
#チェック列を+1します。別行目へ処理を変更します。
  チェック列はチェック列+1
  メッセージのチェック列から1を配列取り出す
  言葉一はそれ
メッセージのチェック列に言葉一を配列挿入
メッセージフォームの10,50へ言葉一を50で文字遅延描画。

チェック列はチェック列+1
  メッセージのチェック列から1を配列取り出す
  言葉二はそれ
メッセージのチェック列に言葉二を配列挿入
メッセージフォームの10,90へ言葉二を50で文字遅延描画。
#言葉という変数に文字を代入して、言葉の変数を文字描画してい#ます。
  チェック列はチェック列+1
  メッセージのチェック列から1を配列取り出す
  選択肢はそれ
  メッセージのチェック列に選択肢を配列挿入
  選択処理
#選択肢はアルファベットで識別しています。
#五行目が「b」だったら、選択肢が発生します。
  チェック列はチェック列+1
#チェック列+1です。次の行に処理を移すためです。
#プログラムは以上です。

#表示する列を増やしたいならプログラムを書き加えます。
#チェック列はチェック列+1
#メッセージのチェック列から1を配列取り出す
#言葉三はそれ
#メッセージフォームの10,90へ言葉三を50で文字遅延描画。

#文章は、選択処理の前に入れると良いでしょう。
#入力パターンは下のプログラムです。

#【キャラの名前】(一行目)
#言葉一(二行目)
#言葉二(三行目)
#言葉三(四行目)
#選択肢・アルファベット(五行目)
#五行を繰り返して入力することになります。

#メッセージフォームの位置とサイズ変更を忘れないでください。

みずぎつねみずぎつね2017/11/24 18:04すいません。記述がバクったまま入れてしまいました。
以下の部分を変更してください。ロードのところです。

もし、時間が「朝」ならば
    メッセージの12に追加メッセージ一を配列一括挿入
   違えば
   もし、時間が「夜」ならば
    メッセージの12に追加メッセージ二を配列一括挿入
   違えば

メッセージの12というところに注目です。
ちょうど、空行になっているところに
メッセージを追加しています。

みずぎつねみずぎつね2017/11/24 20:13#失礼しました。正しいプログラムはこれです。
#なでしこの文字をテキストへ入力すると、おかしくなるみたいです。
母艦の最大化ボタン有効変更(オフへ)
母艦を中央移動
母艦のスタイルは「枠固定」
チェック列は0
#チェック列の変数は後で使います。

Cはデスクトップ&『ノベル用\』
#メニューの二行目はTABを入力しないと動かなくなります。
「なし,P1,ファイル(&A)
P1,P2,セーブ(&B),Ctrl+O,なし,セーブ処理
P1,P3,ロード(&C),Ctrl+S,なし,ロード処理」の、
メニュー一括作成。

●セーブ処理
 「セーブしました」と言う
 Cにフォルダ作成。
 「チェック列は{チェック列}
  時間は{時間}」をC&「【データ】ノベル用.txt」へ保存
●ロード処理
 C&「【データ】ノベル用.txt」が存在するか
 もし、それがはいならば
  「ロードしました」と言う
  C&「【データ】ノベル用.txt」を読む
  それをナデシコする。
  メッセージはメッセージ控え
  メッセージフォームを黒色で画面クリア
  キャラ一の可視はオフ
  キャラ二の可視はオフ
  もし、チェック列が0ならば
  違えば
   チェック列はチェック列-4
   もし、時間が「朝」ならば
    メッセージの12に追加メッセージ一を配列一括挿入
   違えば
   もし、時間が「夜」ならば
    メッセージの12に追加メッセージ二を配列一括挿入
   違えば
 違えば
  「データがありません。セーブしてください」と言う

#メッセージは……
#「.txt」を読む
#メッセージはそれ
#で、変更できます。
#コメントは入力できません。
メッセージは「【ナレーション】
【ナコ】と【クジラ】が話している。

a
【ナコ】
あれれ。
今は、何時かな?
a
【クジラ】
えっと……

b
【クジラ】
どういたしまして。

a
【おしまい】


a」
#メッセージの控え
メッセージ控えは「【ナレーション】
【ナコ】と【クジラ】が話している。

a
【ナコ】
あれれ。
今は、何時かな?
a
【クジラ】
えっと……

b
【クジラ】
どういたしまして。

a
【おしまい】


a」

追加メッセージ一は「【クジラ】
朝の9時だよー!

a
【ナコ】
朝の9時だね。
教えてくれてありがとう。
a」

追加メッセージ二は「【クジラ】
夜の9時だよー!

a
【ナコ】
夜の9時だね。
教えてくれてありがとう。
a」

#一応、文章入力にはパターンを必要とします。
#【キャラの名前】(一行目)
#言葉一(二行目)
#言葉二(三行目)
#選択肢・アルファベット(四行目)
#四行を繰り返して入力しています。
#一行あたり18文字以上は、表示できません。

メッセージフォームとはフォーム
その親部品は母艦
そのHは150
そのWは650
そのXは0
そのYは240
そのスタイルは「枠なし」
その可視はオン
メッセージフォームを黒色で画面クリア

文章ボタンとはボタン
そのクリックした時は
  文章処理
#ボタンの文字変更は、変数の名前で決めています。
  もし、名前が「【おしまい】」ならば
   文章ボタンのテキストは「もう一度」
   チェック列は0
   メッセージはメッセージ控え
   時間は空
  違えば
  文章ボタンの有効はオン

#注意。メッセージ配列には「」や『』を入れられません。
#画像を表示するときは画像合成は使えません。遅延描画で遅くなるためです。
#フォームやイメージで部品を作って、可視のオンとオフをします。

キャラ一画像とは文字列=「nako.png」
キャラ一とはフォーム。その可視はオフ。その親部品は母艦。
その画像はキャラ一画像
キャラ一を画像通り変形。
そのXは150
そのYは0
そのドラッグ移動はオフ

キャラ二画像とは文字列=「kujira.png」
キャラ二とはフォーム。その可視はオフ。その親部品は母艦
その画像はキャラ二画像
キャラ二を画像通り変形
そのXは100
そのYは-30
そのドラッグ移動はオフ

●画像処理
 もし、名前が「【ナコ】」ならば
  キャラ一の可視はオン
  キャラ二の可視はオフ
 違えば
 もし、名前が「【クジラ】」ならば
  キャラ一の可視はオフ
  キャラ二の可視はオン
 違えば
 もし、名前が「【おしまい】」ならば
  キャラ一の可視はオフ
  キャラ二の可視はオフ
 違えば

●選択処理
#文字サイズを小さくしておきます。
 文字サイズは10
 もし、選択肢がbならば
  「何時かな?」を、
  「朝
夜」でボタン選択
  時間はそれ
  もし、時間が「朝」ならば
#追加メッセージをメッセージに配列一括挿入します。
#配列一括挿入の前に、チェック列+1
   チェック列はチェック列+1
   メッセージのチェック列に追加メッセージ一を配列一括挿入
   文章処理
   チェック列はチェック列-1
#チェック列-1は必要なものです。処理がおかしくなるためです。
  違えば
  もし、時間が「夜」ならば
   チェック列はチェック列+1
   メッセージのチェック列に追加メッセージ二を配列一括挿入
   文章処理
   チェック列はチェック列-1
  違えば
 違えば
 文字サイズは25

#文章を表示するためのプログラム本体です。
#文字の表示は配列取り出すを使っています。
#メッセージのチェック列から取り出しています。
#配列取り出すを使うと、配列から文字が消えてしまうため、配列挿入を使います。
#チェック列で取り出した文字を配列挿入すれば、元通りです。
#配列挿入を使うと、何度もメッセージを表示できます。

#言葉・名前は文字描画のための変数です。
#選択肢は、処理用変数です。

●文章処理
  文章ボタンのテキストは「文章」
  文章ボタンの有効はオフ
  文字色は白色
  文字サイズは25
  メッセージフォームを黒色で画面クリア
  メッセージのチェック列から1を配列取り出す
  名前はそれ
  メッセージフォームの0,10へ名前を文字描画。
  メッセージのチェック列に名前を配列挿入
#名前の後にキャラクターの画像を変更しています。
  画像処理
#チェック列を+1します。別行目へ処理を変更します。
  チェック列はチェック列+1
  メッセージのチェック列から1を配列取り出す
  言葉一はそれ
  メッセージのチェック列に言葉一を配列挿入
  メッセージフォームの10,50へ言葉一を50で文字遅延描画。

  チェック列はチェック列+1
  メッセージのチェック列から1を配列取り出す
  言葉二はそれ
  メッセージのチェック列に言葉二を配列挿入
  メッセージフォームの10,90へ言葉二を50で文字遅延描画。
#言葉という変数に文字を代入して、言葉の変数を文字描画しています。
  チェック列はチェック列+1
  メッセージのチェック列から1を配列取り出す
  選択肢はそれ
  メッセージのチェック列に選択肢を配列挿入
  選択処理
#選択肢はアルファベットで識別しています。
#五行目が「b」だったら、選択肢が発生します。
  チェック列はチェック列+1
#チェック列+1です。次の行に処理を移すためです。
#プログラムは以上です。

#表示する列を増やしたいならプログラムを書き加えます。
#チェック列はチェック列+1
#メッセージのチェック列から1を配列取り出す
#言葉三はそれ
#メッセージフォームの10,90へ言葉三を50で文字遅延描画。

#文章は、選択処理の前に入れると良いでしょう。
#入力パターンは下のプログラムです。

#【キャラの名前】(一行目)
#言葉一(二行目)
#言葉二(三行目)
#言葉三(四行目)
#選択肢・アルファベット(五行目)
#五行を繰り返して入力することになります。

#メッセージフォームの位置とサイズ変更を忘れないでください。

雪乃☆雫雪乃☆雫2017/11/25 10:53みずぎつねさん、こんにちは☆
コメントありがとうございます!
それに、ご自身のプログラムまで。
こんなムカシの記事まで、読んで下さってる方がいるんだなあとうれしくなりました♪

セーブとロードは・・・単純にメッセージの表示だけのことで言えば、別に問題はないんですけどねぇ~。
なんか、調子に乗って、シナリオから変更出来る項目を先に色々増やしてしまいましたんで、その全ての変数を保存しなきゃならなくて、その仕様を考えるのがねーめんどうになったてゆうか;
しかも、ロード時にそれがちゃんと遺漏無く元の状態に戻ってるかどうか検証しなきゃないのもまたまためんどーで;;;
・・・とゆうワケで、棚上げしたまま放置となっているのデスよw

近頃は、この当時よりもまただいぶ賢くなったので、こうして見返すと、今後の目標に挙げた事柄もみんなナントカできそうな気もするんだけど、何よりモチベーションを下げたのは・・・なでしこはpngの透明色が使えず画像合成するしかないので、キャラの周囲にエッジが出ないようにするために、アルファ値付きの合成ができないか試したところ、画像色取得が遅すぎて挫折したんです~(20~30秒もかかる!Σ(゜д゜;)
・・・自分じゃろくに絵も描けないくせして何言ってんだか;

でも、こうして反応があると、うれしがってまたちょっといじってみようかなーとゆう気になったり・・・?(≧▽≦)

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20160410