HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0421
boサウンドノベル txtファイルに選択肢データ7未解決


bo

リンク

2012/4/21(Sat) 17:18:26|NO.46197

現在サウンドノベルを製作しようとして、txtファイルに文字を書いておいてクリックした
ら一行進むプログラムを組んだのですが、txtファイルに選択肢をいれこんでHSPで処理するには
どのようにすればいいのでしょうか。



この記事に返信する


f(出張中)

リンク

2012/4/21(Sat) 17:25:09|NO.46198

大きな目標を持つのは大変結構だとは思うが、
「今までと違った事」に突き当たる度に人に聞かなきゃならんようなら、
まず一旦置いておいて、

基礎をしっかりやった方が良いのではないか。
サウンドノベルとやらは逃げやしないよ。

どうしてもと言うのなら、これ以上は止めやしないがな。



f(出張中)

リンク

2012/4/21(Sat) 17:36:24|NO.46199

ついでに付け加えると

選択肢の表示はどうするのか?
装飾はするのか?
選択状態の表示は?
背景との関係性はどうなる?
そもそも画面描画の仕組みは?

等、

多分、今漠然と考えているよりも、遥かに大事になりかねないぞ。



だいちょ

リンク

2012/4/21(Sat) 17:51:07|NO.46201

よく意味がわかりませんが(すいません・・・)
noteloadでtxtファイルのデータを読み込ることは出来ます。
noteselを使うのを忘れずに。
ググればいくらでもありますので、使い方は自分で調べてください。



暇人

リンク

2012/4/21(Sat) 17:53:59|NO.46202

まず今の段階でtxtファイルにして何か楽になったり分かりやすくなったりはしない
仕様が決まるまでは全部スクリプ内でいじれた方が変更を反映しやすいし楽

txt={"あいうえお かきくけこ さしすせそ たちつてと なにぬねの はひふへほ まみむめも やいゆえよ らりるれろ"} mes txt
これを行が開いてるところをページの区切りとして
クリックしたら次のページに移るように出来たら
少しは先に進めるかな・・・
他の文章貼り付けても対応できるようにするのが重要



TMKL

リンク

2012/4/21(Sat) 18:01:45|NO.46203

ほかの質問を見ると、
「クリックしたら先に進む」
はできるようですね

ここまでできるなら、あとは
「クリックしたら"○○によって進む先を変更して"進む」
とすればいいと思いますよ

>txtファイルに選択肢をいれこむ
よく意味が分かりません
「選択肢を書いておく」ってことではありませんよね?



ZAP

リンク

2012/4/21(Sat) 22:07:08|NO.46204

まずは
「選択肢のない一本道のノベル」
としてソフトを完成させてみてはどうでしょうか。

たぶんソコに至るまでにも、いろいろと覚えていくべきことが
見えてくるんじゃないかと思います。

いったんシンプルな形で完成させ、それをベースにひとつずつ
改良を加えていくようにすれば、段階的によくなると思います。



暇人

リンク

2012/4/22(Sun) 12:46:58|NO.46208

ページ送りとページジャンプだけだけど
これの応用で選択肢を選ばれた時の対応ができる
ただし選択肢の表示や判定は色々考える必要が有る

//*ラベル名(必ず行頭に「 * 」) //[p] クリック待ち改ページ //[l] クリック待ち改行 txt={" *start あいうえお かきくけこ [p] さしすせそ たちつてと [p] *一行毎にクリック なにぬねの[l] はひふへほ[l] まみむめも [p] やいゆえよ らりるれろ [jmp]*一行毎にクリック "} str_jmp="*start" //ジャンプ先指定 jmp_f=1 //ジャンプ先指定があるフラグ=1 cls_f=1 //画面クリアして改ページフラグ=1 mes "左クリックで開始" onclick gosub *next_mes stop *next_mes if wparam ! 1 {return}//左クリック以外return if cls_f { //画面クリアして改ページ cls_f=0 color 255,255,255:boxf:color:pos 0,0 line_cnt=0 //改行用カウンタ } if jmp_f {//ジャンプ先指定がある index_start=0 //ラベル行の次のインデックス用(ページ開始位置) repeat //ラベル検索ループ getstr txt_tmp,txt,index_start,'' //一行取り出し if strsize = 0 {dialog "ラベルが無い",0 :end} index_start + strsize //取り出したbyte数を加算 if txt_tmp=str_jmp {break} //ラベルが一致したらbreak loop index=0 //ページ開始位置からの移動分用インデックス jmp_f=0 } repeat repeat getstr txt_line,txt,index_start+index,''//一行取り出し if strsize=0 {dialog "テキスト終了",0 :end} index+strsize //一行分のbyte数を加算 if instr(txt_line,0,"*") ! 0 {break} //行頭に*が無かったらラベル行ではないのでbreak str_jmp_save=txt_line //通過したラベルを記録 loop getstr txt_mes,txt_line,0,'['//タグが有ったらそこまで取り出し、無ければ全部 strsize_getstr=strsize stat_getstr=stat // getstrで取り出した文字列の終端文字コ−ド('['ならタグ有り) pos 50,50+line_cnt*24 if stat_getstr = '[' {//タグ有り getstr txt_tag,txt_line,strsize_getstr,']'//タグ取り出し strsize_getstr+strsize switch txt_tag case "p" //クリック待ち改ページ cls_f=1 mes txt_mes //タグを除いてあるバッファを表示 line_cnt++ //表示行数加算 break swbreak case "l" //クリック待ち改行 cls_f=0 mes txt_mes line_cnt++ break swbreak case "jmp" //クリック待ちジャンプ getstr str_jmp,txt_line,strsize_getstr,'' //[jmp]の続きをジャンプラベルとして取り出し if strsize=0 {dialog "ラベルが無い",0 :end} jmp_f=1 cls_f=1 break swbreak default //間違ったタグ指定 mes txt_line //取り出した一行を全て表示(間違ったタグを指定した時用) line_cnt++ swend }else{//タグ無し mes txt_mes //タグを除いてあるバッファを表示 line_cnt++ //表示行数加算 } loop title "現在のラベル:"+str_jmp +" index:"+ index+" txt_tag:"+txt_tag+" mousex="+mousex+" mousey="+mousey +" str_jmp_save:" +str_jmp_save return


選択肢の表示領域とマウスカーソルの判定例

txt={" 1,Aを選ぶ 2,Bを選ぶ"} getstr m1,txt,idx //notegetのが楽だけど行数が多くなっていくと重くなる記憶が・・・ idx+strsize getstr m2,txt,idx m1x=100 m1y=100 m2x=100 m2y=130 repeat redraw 0 color 255,255,255:boxf color pos m1x,m1y mes m1 m1sx=ginfo(14) m1sy=ginfo(15) pos m2x,m2y mes m2 m2sx=ginfo(14) m2sy=ginfo(15) hsvcolor 50+rnd(200),200,200 if mousex>m1x and mousey>m1y and mousex<(m1x+m1sx) and mousey<(m1y+m1sy) {line m1x,m1y+m1sy,m1x+m1sx,m1y+m1sy} if mousex>m2x and mousey>m2y and mousex<(m2x+m2sx) and mousey<(m2y+m2sy) {line m2x,m2y+m2sy,m2x+m2sx,m2y+m2sy} redraw 1 await 10 loop



ONION software Copyright 1997-2023(c) All rights reserved.