SRC質問掲示板Mk2
(現在 過去ログ48 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 検索 掲示板新着情報RSS配信新着情報 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■9079 / inTopicNo.1)  フキダシインクルードの改行
  
□投稿者/ 超・熱血将軍零微瑠 -(2003/07/02(Wed) 15:52:13)
    漫画のフキダシの様に会話を展開するフキダシインクルードを作ったのですが、様々な点からいまいち使い勝手がよくありません・・・
    そこで、以下の様にするにはどうすればいいのか教えて頂きたいのですが・・・
    1・フキダシの右端まできたら自動改行する方法
    2・半角スペースではなくて、半角のnを使うと改行する方法

    一応、下にインクルードの内容を書いておきます


    会話上段:
    Font 12pt #000000
    PaintPicture Args(1) 350 190 80 80
    PaintPicture Bitmap\通常会話.JPG 0 0 480 180 透過 #000000
    Refresh
    PaintString 30 20 Args(2)
    PaintString Args(3)
    PaintString Args(4)
    PaintString Args(5)
    PaintString Args(6)
    PaintString Args(7)
    PaintString Args(8)
    Refresh
    Wait Click
    PaintPicture Args(1) 350 190 80 80 暗
    PaintPicture Bitmap\通常会話.JPG 0 0 480 180 暗 透過 #000000
    Refresh
    PaintString 30 20 Args(2)
    PaintString Args(3)
    PaintString Args(4)
    PaintString Args(5)
    PaintString Args(6)
    PaintString Args(7)
    PaintString Args(8)
    Refresh
    Font
    Return



    思考上段:
    Font 12pt #000000
    PaintPicture Args(1) 350 190 80 80
    PaintPicture Bitmap\思考中.JPG 0 0 480 180 透過 #000000
    Refresh
    PaintString 30 20 Args(2)
    PaintString Args(3)
    PaintString Args(4)
    PaintString Args(5)
    PaintString Args(6)
    PaintString Args(7)
    PaintString Args(8)
    Refresh
    Wait Click
    PaintPicture Args(1) 350 190 80 80 暗
    PaintPicture Bitmap\思考中.JPG 0 0 480 180 暗 透過 #000000
    Refresh
    PaintString 30 20 Args(2)
    PaintString Args(3)
    PaintString Args(4)
    PaintString Args(5)
    PaintString Args(6)
    PaintString Args(7)
    PaintString Args(8)
    Refresh
    Font
    Return

    咆哮上段:
    Font 24pt #000000
    PaintPicture Args(1) 310 150 160 160
    PaintPicture Bitmap\咆哮.JPG 0 0 480 180 透過 #000000
    Refresh
    PaintString 30 20 Args(2)
    PaintString Args(3)
    PaintString Args(4)
    PaintString Args(5)
    PaintString Args(6)
    PaintString Args(7)
    PaintString Args(8)
    Refresh
    Wait Click
    PaintPicture Args(1) 310 150 160 160 暗
    PaintPicture Bitmap\咆哮.JPG 0 0 480 180 暗 透過 #000000
    Refresh
    PaintString 30 20 Args(2)
    PaintString Args(3)
    PaintString Args(4)
    PaintString Args(5)
    PaintString Args(6)
    PaintString Args(7)
    PaintString Args(8)
    Refresh
    Font
    Return




    会話下段:
    Font 12pt #000000
    PaintPicture Args(1) 60 210 80 80
    PaintPicture Bitmap\通常会話.JPG 0 300 480 180 上下反転 左右反転 透過 #000000
    Refresh
    PaintString 30 350 Args(2)
    PaintString Args(3)
    PaintString Args(4)
    PaintString Args(5)
    PaintString Args(6)
    PaintString Args(7)
    PaintString Args(8)
    Refresh
    Wait Click
    PaintPicture Args(1) 60 210 80 80 暗
    PaintPicture Bitmap\通常会話.JPG 0 300 480 180 暗 上下反転 左右反転 透過 #000000
    Refresh
    PaintString 30 350 Args(2)
    PaintString Args(3)
    PaintString Args(4)
    PaintString Args(5)
    PaintString Args(6)
    PaintString Args(7)
    PaintString Args(8)
    Refresh
    Font
    Return




    思考下段:
    Font 12pt #000000
    PaintPicture Args(1) 60 210 80 80
    PaintPicture Bitmap\思考中.JPG 0 300 480 180 上下反転 左右反転 透過 #000000
    Refresh
    PaintString 30 350 Args(2)
    PaintString Args(3)
    PaintString Args(4)
    PaintString Args(5)
    PaintString Args(6)
    PaintString Args(7)
    PaintString Args(8)
    Refresh
    Wait Click
    PaintPicture Args(1) 60 210 80 80 暗
    PaintPicture Bitmap\思考中.JPG 0 300 480 180 暗 上下反転 左右反転 透過 #000000
    Refresh
    PaintString 30 350 Args(2)
    PaintString Args(3)
    PaintString Args(4)
    PaintString Args(5)
    PaintString Args(6)
    PaintString Args(7)
    PaintString Args(8)
    Refresh
    Font
    Return

    咆哮下段:
    Font 24pt #000000
    PaintPicture Args(1) 20 170 160 160
    PaintPicture Bitmap\咆哮.JPG 0 300 480 180 上下反転 左右反転 透過 #000000
    Refresh
    PaintString 30 350 Args(2)
    PaintString Args(3)
    PaintString Args(4)
    PaintString Args(5)
    PaintString Args(6)
    PaintString Args(7)
    PaintString Args(8)
    Refresh
    Wait Click
    PaintPicture Args(1) 20 170 160 160 暗
    PaintPicture Bitmap\咆哮.JPG 0 300 480 180 暗 上下反転 左右反転 透過 #000000
    Refresh
    PaintString 30 350 Args(2)
    PaintString Args(3)
    PaintString Args(4)
    PaintString Args(5)
    PaintString Args(6)
    PaintString Args(7)
    PaintString Args(8)
    Refresh
    Font
    Return




引用返信/返信 削除キー/
■9080 / inTopicNo.2)  Re[1]: フキダシインクルードの改行
□投稿者/ TomTom -(2003/07/02(Wed) 16:37:25)
    TomTomです。

    ちょっと動作実験をしていないので的を外しているかもしれませんが。

    まずはじめに
    >PaintString Args(3)
    >PaintString Args(4)
    >PaintString Args(5)
    >PaintString Args(6)
    >PaintString Args(7)
    >PaintString Args(8)
    この部分はバッサリと削除しましょう。
    恐らくは自動改行とnで改行の条件を満たせば、必要のない記述だと思いますので。


    >1・フキダシの右端まできたら自動改行する方法

    TextWidth関数でPrintStringで表示したときの幅が取得できるので、
    これをうまく利用して、規定の幅ごとに改行記号を入れていけばよろしいかと。


    >2・半角スペースではなくて、半角のnを使うと改行する方法

    で、改行記号で改行させる方法ですが、手前味噌ですが、
    http://www.e-net.jp/user/tomtom/IMPACT_Talk.lzh
    このインクルードの「IMPACT風会話インクルード(軽量版).eve」、
    80〜90行目を研究すると幸せになれるかもしれません。


    それでは。
引用返信/返信 削除キー/
■9087 / inTopicNo.3)  Re[2]: フキダシインクルードの改行
□投稿者/ 超・熱血将軍零微瑠 -(2003/07/02(Wed) 20:22:22)
    ばっさりと研究は現在やっておりますが、一番の研究の
    『TextWidth関数でPrintStringで表示したときの』
    この関数が全く分からないのですが・・・
    ヘルプにも乗っていない様なので・・・
引用返信/返信 削除キー/
■9090 / inTopicNo.4)  Re[3]: フキダシインクルードの改行
□投稿者/ 超・熱血将軍零微瑠 -(2003/07/02(Wed) 21:00:14)
    すみません、結局改行記号も分かりませんでした・・・
    全く分からないG言語等があって・・・
引用返信/返信 削除キー/
■9096 / inTopicNo.5)  Re[4]: フキダシインクルードの改行
□投稿者/ TomTom -(2003/07/02(Wed) 23:15:52)
    TomTomです。

    むぅ、解析でませんでしたか。(G言語とはいったい?)
    やってることとしては、

    1InStr関数で文字列から改行記号を探す(例の場合は";")
    2文字列の先頭から改行記号までを配列に保存する
    3配列に保存した分を文字列から削除する
    4文字列の終わりまで1〜3を繰り返す

    上記の処理が、80〜90行目に当たります。
    その上で、文章を格納した配列をFor〜NextなりDo〜Loopなりでループさせて、
    順に表示していく、という処理をしています。


    TextWidthに関しては、安定版なら「変数と式」、開発版なら「関数」の最後の方に
    記載されています。
    もっとも、難しければ行末まで来たら改行という機能は考えずに、自分で当たりを付けて
    あらかじめ改行記号を入れた方がよろしいかと思います。

引用返信/返信 削除キー/
■9097 / inTopicNo.6)  Re[5]: フキダシインクルードの改行
□投稿者/ 超・熱血将軍零微瑠 -(2003/07/02(Wed) 23:36:26)
    すみません、C言語でした・・・
    とりあえずもう少し頑張ってみます
    いまいち不安ですが・・・
引用返信/返信 削除キー/
■9115 / inTopicNo.7)  文字数を返すの意味
□投稿者/ 超・熱血将軍零微瑠 -(2003/07/03(Thu) 19:32:57)
    Leftの文字列の左から指定した文字数の文字列を取り出して返す
    Lenの指定した文字列の文字数を返す。

    この指定した文字列を返すの意味が良く分からないのですが・・・・
引用返信/返信 削除キー/
■9116 / inTopicNo.8)  Re[7]: 文字数を返すの意味
□投稿者/ TomTom -(2003/07/03(Thu) 20:06:40)
    TomTomです。


    ヘルプの例ではちょっとわかりにくいかもしれませんね。

     変数A = Left("テスト文字列", 4)

    としてみると分かるでしょうか。
    この場合、「変数A」には「"テスト文字列"の左から4文字分である」、
    「"テスト文"が格納される」事になります。

    「返す」というのはつまり、

     関数で処理した結果(「Left("テスト文字列", 4)」なら"テスト文")を、
     その場所に書き込んだのと同じ事になる

    と覚えておけば大体は合っているかと。


    インクルードを作るには、ほぼ間違いなく関数のお世話になるので、
    これを機会に色々と試して、しっかりと理解しておくことをおすすめします。
引用返信/返信 削除キー/
■9117 / inTopicNo.9)  上手く行かない・・・
□投稿者/ 超・熱血将軍零微瑠 -(2003/07/03(Thu) 20:10:03)
    すみません、文字を返すは一応分かりました
    ・・・で、TomTomさんのを参考にしてやってみたのですが、
    一回しか改行出来ない上に(;)が残ってしまいます・・・
    理解がいまいち上手くいってないとも思うのですが・・・


    会話上段:
    Global 発言行数
    Set 発言行数 1
    Font 12pt #000000
    PaintPicture Args(1) 350 200 80 80
    PaintPicture Bitmap\通常会話.JPG 0 0 480 180
    Refresh
    発言内容全文 = Args(2)
    Global 発言行数
    Set 発言行数 1
    Font 12pt #000000
    PaintPicture Args(1) 350 200 80 80
    PaintPicture Bitmap\通常会話.JPG 0 0 480 180
    Refresh
    発言内容全文 = Args(2)
    Do While (InStr(発言内容全文, ";") <> 0)
    発言内容[発言行数] = Left(発言内容全文, InStr(発言内容全文, ";"))
    発言内容全文 = Right(発言内容全文, Len(発言内容全文) - InStr(発言内容全文, ";"))
    PaintString 30 (8 + 16 * 発言行数) 発言内容[発言行数]
    Incr 発言行数
    Loop
    Refresh
    Wait Click
引用返信/返信 削除キー/
■9118 / inTopicNo.10)  Re[8]: 上手く行かない・・・
□投稿者/ TomTom -(2003/07/03(Thu) 20:34:06)
    TomTomです。

    ";"が残るのは、「InStr(発言内容全文, ";")」で取得する文字数が
    ";"まで含んだ文字数であるためです
    (「InStr("テスト;発言", ";")」なら";"4文字目にあるので「4」を返す)
    ですから、InStrで求めた文字数から1を引いた文字数で、Leftを実行すれば大丈夫です。

    改行の回数は、こちらで試したところ、";"ごとに改行できていますが…
    ただ、この処理の仕方だと最後の1行が表示されないようになっているので、
    そのあたりが問題かもしれません。
    Loopのあとに、もう一度PaintStringが必要ですね。

    また、Do〜Loop内でPaintStringを実行するなら、配列に格納する必要はありませんね。

    これらをふまえて、処理を書くと、

    会話上段:
     Font 12pt #000000
     PaintPicture Args(1) 350 200 80 80
     PaintPicture Bitmap\通常会話.JPG 0 0 480 180
     Refresh
     Set 発言行数 1
     発言内容全文 = Args(2)
     Do While (InStr(発言内容全文, ";") <> 0)
      発言内容 = Left(発言内容全文, InStr(発言内容全文, ";") - 1)
      発言内容全文 = Right(発言内容全文, Len(発言内容全文) - InStr(発言内容全文, ";"))
      PaintString 30 (8 + 16 * 発言行数) 発言内容
      Incr 発言行数
     Loop
     PaintString 30 (8 + 16 * 発言行数) 発言内容全文
     Refresh
     Wait Click
    Return

    こんな感じになるかと。
引用返信/返信 削除キー/
■9121 / inTopicNo.11)  Re[5]: フキダシインクルードの改行
□投稿者/ 超・熱血将軍零微瑠 -(2003/07/03(Thu) 21:30:11)
    記号を使った改行はうまくいきました、どうもありがとうございます
    ですが、もう一つの目的の自動改行は全く分かりません・・・
    その上これを組み合わせるとなると・・・
    一応改行したいピクセル幅は30から410位なのですが・・・
    (↓これ、自動改行なしバージョンです)

    http://page.freett.com/hirokatsu/hukidasi.zip
引用返信/返信 削除キー/
■9126 / inTopicNo.12)  1行最大20文字で3行毎に表示を待つサンプル
□投稿者/ 調整は自分でしてください -(2003/07/03(Thu) 23:45:04)
    デバックが完璧ではないのでまだバグを含んでいる可能性があります
    
    表示文字列 = Args(2)
    行カウンタ = 0
    
    Do
      If Len(表示文字列) > 20 Then
        If InStr(表示文字列,";") = 0 Then
          PaintString 文字位置X (文字位置Y + (行カウンタ * 17)) Left(表示文字列, 20)
          表示文字列 = Mid(表示文字列, 21)
        Else
          If InStr(表示文字列,";") > 20 Then
            PaintString 文字位置X (文字位置Y + (行カウンタ * 17)) Left(表示文字列, 20)
            表示文字列 = Mid(表示文字列, 21)
          Else
            PaintString 文字位置X (文字位置Y + (行カウンタ * 17)) Left(表示文字列, ((InStr(表示文字列,";") - 1)))
            表示文字列 = Mid(表示文字列, ((InStr(表示文字列,";")) + 1))
          EndIf
        EndIf
      Else
        If InStr(表示文字列,";") = 0 Then
          PaintString 文字位置X (文字位置Y + (行カウンタ * 17)) 表示文字列
          表示文字列 = ""
        Else
          PaintString 文字位置X (文字位置Y + (行カウンタ * 17)) Left(表示文字列, ((InStr(表示文字列,";")) - 1))
          表示文字列 = Mid(表示文字列, ((InStr(表示文字列,";")) + 1))
        EndIf
      EndIf
      
      If 行カウンタ = 2 Then
        Refresh
        Wait Click
        行カウンタ = -1
      EndIf
      
      If InStr(表示文字列,";") = 1 Then
        表示文字列 = Mid(表示文字列, 2)
      EndIf
      
      行カウンタ = 行カウンタ + 1
    Loop While ((Len(表示文字列)) > 0)

引用返信/返信 削除キー/
■9127 / inTopicNo.13)  追加
□投稿者/ 調整は自分でしてください -(2003/07/03(Thu) 23:54:04)
    ループを出た後に以下の行が必要
      If 行カウンタ <> 0 Then
        Refresh
        Wait Click
      EndIf
引用返信/返信 削除キー/
■9129 / inTopicNo.14)  申し訳ないですが・・・
□投稿者/ 超・熱血将軍零微瑠 -(2003/07/04(Fri) 00:16:45)
    わざわざ作っていただいて申し訳ありませんが・・・
    使い方がさっぱり分からないです・・・
    単体ならばまだ何とかなるかもしれませんが、組み合わせるとなるとちょっと・・・
    おまけにLoop型の修正方法も分からないので・・・
    すみません、もう少し勉強します
引用返信/返信 削除キー/
■9138 / inTopicNo.15)  Re[1]: フキダシインクルードの改行
□投稿者/ 超・熱血将軍零微瑠 -(2003/07/04(Fri) 18:54:41)
    とりあえず自動改行は今回は見送りとします
    一応あれはとっておいて勉強材料にしますので・・・
    皆さん、どうもありがとうございました
解決済み!
引用返信/返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Pass/

HOME HELP 新規作成 新着記事 トピック表示 検索 掲示板新着情報RSS配信新着情報 過去ログ

- Child Tree -
- Antispam Version -