お知らせ掲示板 | 質問掲示板 | 不具合報告掲示板 | 機能要望掲示板 | 雑談掲示板

  新規投稿 ┃全記事一覧 ┃検索 ┃設定 ┃サポートフォーラムトップ  
172 / 387 ツリー ←次へ | 前へ→

選択肢の文章にスペース、() ? ! , ' - "" を使用する方法について なめこの里 2013/11/13(水) 8:07

Re:選択肢の文章にスペース、() ? ! , ' - "&q... ぽてと 2013/11/17(日) 18:35
Re:選択肢の文章にスペース、() ? ! , ' - "&q... なめこの里 2013/11/24(日) 4:42
Re:選択肢の文章にスペース、() ? ! , ' - "&q... ぽてと 2013/11/27(水) 21:01
Re:選択肢の文章にスペース、() ? ! , ' - "&q... なめこの里 2013/11/29(金) 11:34

Re:選択肢の文章にスペース、() ? ! , ' - "...
 ぽてと  - 2013/11/17(日) 18:35 -
  
>はじめまして。
>
>選択肢中の文章に、スペース () ? ! ,(コンマ) '(アポストロフィー) ""(引用符) -(ハイフン)などを表示させる方法はありますでしょうか?
>本文中ではなく、選択肢中の文章(\SEL)についての質問です。
>例えば、次のような選択肢を作りたいと思っています。
>
>「ゲーム制作は好きですか?」
>選択肢1: はい! "No game, no life!" です。 (半角・全角スペース "" , ! を使用)
>選択肢2: YU-RIS というスクリプトエンジンがおすすめです! (- を使用)
>
>「この中でビートルズの曲はどれでしょう?」
>選択肢1: Norwegian Wood (This Bird Has Flown) (半角かっこ を使用)
>選択肢2: Can't Buy Me Love...?! (' . ? ! を使用)
>選択肢3: Alice In "Ob-La-De" Land ("" - を使用)
>
>などなど、ちょっとした英語のフレーズや文を選択肢の文章として使いたいのですが、こうした英語でよく用いられる記号を、一手間かかってもよいので何らかの方法で表示させることは可能でしょうか?
>
>なお、半角と全角でそれぞれ試してみたところ、以下のような結果となりました。
>(o...表示可能  x...コンパイルエラー  △...コンパイル可だが、表示されない  □...コンパイル可だが、区切りのためのコンマとして扱われる)
>
>     半 全
>スペース △ △
>,      □ o
>.      o o
>()     x o
>'      x o
>""     x o
>-      x o
>?      x o
>!      x o
>
>ちなみに .(ピリオド)は半角・全角とも表示可能でした。
>
>最後になりましたが、素晴らしいソフトを公開して下さりありがとうございます。
>過去ログとマニュアルの、関係のありそうなページには一通り目を通したつもりではいますが、私の理解不足により質問が重複していましたら申し訳ございません。
>それではどうぞよろしくお願いいたします。


半角英字および半角記号が表示できないとのことですが、基本的に半角文字を含む場合は""で囲ってあげる必要があります。おそらく、囲っていなかったのかとおもわれます。

例:\SEL("Norwegian Wood (This Bird Has Flown)")

バグか仕様かわかりませんが、''で囲むと半角空白が無視されてしまうみたいです。
「"」「'」を文字列引数渡しで渡す場合も奇数の場合コンパイルエラーになるみたいです。

ですが、文字列変数を引数渡しするとうまくいくみたいです。
全パターン試していませんし、システム的にどう処理されているかまでは調べていません。

以下、それっぽくなったものです。「"Can't Buy Me Love...?!"」だけ中央揃えになるみたいです。理由はよくわかりません。

$L(10)='はい! "No game, no life!" です。'
$L(11)="YU-RIS というスクリプトエンジンがおすすめです!"
\SEL($L(10),$L(11))

「この中でビートルズの曲はどれでしょう?」
$L(12)="Norwegian Wood (This Bird Has Flown)"
$L(13)="Can't Buy Me Love...?!"
$L(14)='Alice In "Ob-La-De" Land'
\SEL($L(12),$L(13),$L(14))

注意事項として、
文字列は基本的に「"」で囲んでいます。
"を文字列に入れたい場合は「'」で囲んでいます。
'を文字列に入れたい場合は「"」で囲んでいます。

お役にたてればと思います。
引用なし
パスワード

Re:選択肢の文章にスペース、() ? ! , ' - "...
 なめこの里  - 2013/11/24(日) 4:42 -
  
ぽてと様、ご返信ありがとうございます。
お礼が遅くなってしまい申し訳ありません。
おっしゃられた通り、半角英字・記号を表示するために文字列を "" で囲う必要があるということをまったく存じませんでした。
教えていただいた方法で、英語のフレーズや文を選択肢内に表示することができるようになりました。ありがとうございました。

ただ問題が一つありまして、英語に限らず半角文字・記号を選択肢中に用いるたびに文全体が中央スタートの右揃え(文末揃え)になってしまい、文が左へ左へと伸びていってしまいます。
例えば日本語の全角文字で選択肢を作った場合、

[  あああああ  ]
[   いいい    ]
[     う      ]

というように中央揃えになりますが、半角文字を用いた場合、

[ アアアアア     ]
[   イイイ     ]
[     ウ     ]

という風に表示されてしまいます。
そして「ああアアア」とか「ああ、YU-RIS」という具合に全角文字、半角文字をともに用いた場合、中央揃えと右揃えが両方混ざり合って機能してしまい、中央にも右にもどこにも揃わない形になってしまいます。
使用しているYU-RIS のバージョンはyu-ris_0476_010です。
もし解決方法をご存知の方がいらっしゃいましたら教えて頂けますと幸いです。

----------------------

以下は質問ではなく、ぽてと様に教えて頂いた半角文字、とくに英語を表示する方法についての私的まとめメモです。
長くなってしまいますが、他のユーザーさんや開発者様の参考になるかもしれませんので一応……

【1】 \SEL("This is a pen") 式の記述方法について
たしかに選択肢中に "" も ' も使わない場合はこの方法が最も簡単でした。( "" を使うと常にコンパイルエラー、 ' を使うとその使用回数が奇数回の場合にコンパイルエラーになります。)
ただ、 "" (引用符)はともかく ' (アポストロフィー)は英語では結構な頻度で登場しますので、もう一つの【2】の方法を用いることにしました。

【2】 $L(1)="This is a pen" → \SEL($L(1)) 式の記述方法について
半角の "" を文字列内部に使おうとするとコンパイルエラーになりますが、それ以外の記号はみな表示することができました。全角の “” は使用可能です。
ただし検証したのは特によく使われる英記号だけです。具体的には
スペース , . () ' - ? ! ; : & <> ~ /    
で、これらはみな全角・半角ともに表示できました。

そして選択肢中に半角の "" を使いたい場合ですが、これもぽてと様のおっしゃる通り、文字列全体を "" の代わりに '' で囲うことで対処できました。すなわち、

$L(1)='はい! 答えは1番の "This is my room." です。'
\SEL($L(1))

はい! 答えは1番の "This is my room." です。

ただこの場合に問題となるのは、文中に ' をアポストロフィーとして使用できなくなるということで、例えば

$L(2)='はい! 答えは2番の "This is Taro's room." です。'  (奇数個)
$L(3)='はい! 答えは3番の "This is Taro's dog's room." です。'  (偶数個)

は、文中における ' の使用回数の偶奇にかかわらず、ともにコンパイルエラーとなります。
ひとまずの対処法としては、選択肢中に "" と ' の両方を用いたい場合、 "" でなく “” (全角)を用いるようにする、ということしか思いつきませんでした。すなわち、

$L(1)="はい! 答えは2番の “This is Taro's room.” です。"
→ はい! 答えは2番の “This is Taro's room.” です。

あとは選択肢中に半角文字を用いると右揃えになる問題さえ解決できれば、英語の単語や文、半角カタカナや顔文字も自由に選択肢内に使えるようになると思うのですが……!
自分でももっと調べてみますが、ご存知の方がいらっしゃいましたらどうぞよろしくお願いいたします。
それでは、長文失礼いたしました。
引用なし
パスワード

Re:選択肢の文章にスペース、() ? ! , ' - "...
 ぽてと  - 2013/11/27(水) 21:01 -
  
回答ではありませんが、少し調べてみました。

現在の\SEL命令による選択肢描画命令を実行した際に表示される文字列の位置はどうなっているのかを調べてみました。(\CSELは調べてません)

es_select.yst:539行目〜559行目の箇所で描画開始位置を決定しています。

具体的には以下の箇所で描画開始位置のX座標を決定しています。
544:@SEL.TX.X(@_LC) = (@sel_sx / 2) - (@_RINT(1) * @SEL.TX.SX / 2)
549:@SEL.TX.X(@_LC) = (@sel_sx / 2) - (@_RINT(1) * @SEL.TX.AL.SX / 2)
556:@SEL.TX.X(@_LC) = (@sel_sx / 2) - (@_RINT(1) * @SEL.TX.NA.SX / 2)

数式を日本語にすると

「描画開始位置 = 選択肢のX座標 / 2 - 文字数 * 文字サイズX座標 / 2 」

つまり、全角文字での選択肢内の中央揃え用の開始位置を算出しています。
半角文字を中央揃えしたい場合は、半角は全角の半分ですので、/2ではなく、/4にします。


以下に変更すると半角文字での中央揃えができるようになります。
544:@SEL.TX.X(@_LC) = (@sel_sx / 2) - (@_RINT(1) * @SEL.TX.SX / 4)
549:@SEL.TX.X(@_LC) = (@sel_sx / 2) - (@_RINT(1) * @SEL.TX.AL.SX / 4)
556:@SEL.TX.X(@_LC) = (@sel_sx / 2) - (@_RINT(1) * @SEL.TX.NA.SX / 4)


これだと、半角と全角のどちらかにしか対応できていない状態です。
全角、半角が混在した場合の中央揃えは


「合計文字X座標 = 文字数 * 文字サイズX座標」


合計文字X座標を、個別文字X座標の合計にすればよいハズです。


「合計文字X座標 = 文字サイズX座標(1) + ... 文字サイズX座標(N)」
※Yu-risは配列が0始まりのため、-1をする必要がある可能性があります


全角と半角の混在は検証も何もしていませんので、推測の域からでてはおりません。
ですが、ERIS側を弄る事になりますのであまりお勧めはしません。
分かったこととして、ERIS側を弄らないと、\SELでの半角文字を含む選択肢の中央揃えはできないみたいです。


なので、原始的ではありますが、「中央揃えにする」ということを「表示位置を調整する」という意味に置き換えてよいのならば、選択肢文字列の前に半角スペースや全角スペースを入れることで表示位置を調整することできると思います。


伝わりにくい文章で申し訳ありませんが、お役にたてればと思います。
引用なし
パスワード

Re:選択肢の文章にスペース、() ? ! , ' - "...
 なめこの里  - 2013/11/29(金) 11:34 -
  
ご返信ありがとうございます。
非常に助かりました。

>以下に変更すると半角文字での中央揃えができるようになります。
>544:@SEL.TX.X(@_LC) = (@sel_sx / 2) - (@_RINT(1) * @SEL.TX.SX / 4)
>549:@SEL.TX.X(@_LC) = (@sel_sx / 2) - (@_RINT(1) * @SEL.TX.AL.SX / 4)
>556:@SEL.TX.X(@_LC) = (@sel_sx / 2) - (@_RINT(1) * @SEL.TX.NA.SX / 4)

この方法で、半角文字のみを使用した選択肢の中央揃えはできるようになりました。
ERISをこれ以上本格的にいじるのはまだ自分には難しすぎるので、全角・半角混在する場合は、教えてくださった「選択肢文字列の前に半角スペースや全角スペースを入れる」という方法で対処したいと思います。

またこの選択肢中の半角文字の問題について何か進展や発見があれば書き込みに来ます。
本当にありがとうございました!
引用なし
パスワード

  新規投稿 ┃全記事一覧 ┃検索 ┃設定 ┃サポートフォーラムトップ  
172 / 387 ツリー ←次へ | 前へ→
58,641
(SS)C-BOARD v3.8.1β4 is Free.