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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0905
シュミレーションゲーム等の文章表示に関して9解決


リンク

2010/9/5(Sun) 23:53:42|NO.34878

 シュミレーションゲームの開発の練習を始めたのですが、
ゲームをやっている中で、下の囲まれたところに、文章を
表示する、ということがありますよね。
 でも、それって、別途テキストファイルを作っておいて
そこから読みだしているのでしょうか、それとも、
mesを使って一つずつ表示するようにしてあるのでしょうか。
 mesを使う場合なら、ラベルを使ってうまくできそうな気がするのですが、
テキストファイルからの一行または、複数行の読み出すということになると、
よくわかりません。
 また、文字を最前面に表示するプログラムに関してもわかりません。
 なにか、いい解決方法等ありますでしょうか。



この記事に返信する


f3d

リンク

2010/9/6(Mon) 00:27:45|NO.34879

両方を同じ場所に保存して実行してみてください。

空行までが人まとまりとして表示されます。

画面から飛び出たりしますが、それは自分で治してください。

main.hsp


notesel note noteload "arc.txt";メッセージ取得 nextline = -1 repeat getkey Lcrick,1 if Lcrick == 1 && b_Lcrick == 0{;もし右クリックしていたら nextline++ n = 0 repeat noteget message(cnt),nextline+cnt;ノートから次の行を読み出す。 if message(cnt) == ""{ n = cnt break } loop nextline += n } b_Lcrick = Lcrick getkey Esc,27;終了 if Esc == 1:noteunsel:end redraw 0 color 0,0,0;枠描画 boxf 0,350,639,479 color 255,255,255 boxf 1,351,638,478 color 0,0,0;メッセージ描画 repeat n+1 pos 10,360+(17*cnt) mes ""+message(cnt) loop redraw 1 wait 3 loop noteunsel

arc.txt


中学の時、英語の辞書忘れたから隣の女子のを共同で使わせてもらった。 家も近所だし気さくで話しやすいやつだったもんで、 彼女が見てない隙に、ふざけてその辞書の「v○gina」の項を○で囲んでやった。 …あれから10年以上が経ち、そんな事ずっと忘れてた。 盆休みで実家に帰省して仕事の整理をしてた時の事。 英語の辞書が必要になって、中学時代のを探し出して使った。 そしたら憶えの無い落書きをみつけた。 「p○nis」が○で囲んであって余白に「お返しだバーカ昼休みに図書室で待つ」と書い てある。それで思い出した。 あの時あたりからだったか、彼女は昼休みになると真っ先に教室から出て行くようにな った。 俺は「何委員だか知らないけど忙しいんだなぁ」なんて思ってた。 中学最後の昼休みも、彼女は教室にいなかったっけ…。 で、嫁にそれ見せたら顔真っ赤にして「今頃みつけるな!」だって。 END



リンク

2010/9/6(Mon) 18:11:18|NO.34886

nextline++
↑は、この後のものを追加していくという意味でいいのでしょうか。
getkey Esc,27
      ↑の27は、Escを数字で表したものということは、
わかるのですが、なぜこれが必要なのでしょうか。
mes ""+message(cnt)
  ↑の""は、なぜ必要なのでしょうか。
質問してばかりですいません。



f3d

リンク

2010/9/6(Mon) 18:38:44|NO.34888

>>nextline++
>>↑は、この後のものを追加していくという意味でいいのでしょうか。

追加するというより、今後のものを読み込む場所の数字?ですね。

>>getkey Esc,27
>>      ↑の27は、Escを数字で表したものということは、
>>わかるのですが、なぜこれが必要なのでしょうか。

これはエスケープを押したとき終了するようにするためで、
(if Esc == 1:noteunsel:end)
別になくても大丈夫です。

>>mes ""+message(cnt)
>>  ↑の""は、なぜ必要なのでしょうか。

もしmessage(cnt)が数字だった場合エラーになってしまうからです。
最初何にも読み出していないときはmessage(cnt)が0なのでエラーがでてしまいます。
""があれば文字列の 0 として認識されエラーがでません。



SYAM

リンク

2010/9/6(Mon) 18:49:38|NO.34890

>nextline++
>↑は、この後のものを追加していくという意味でいいのでしょうか。

++ は、その変数に1を足す、って意味の演算子 です。


>getkey Esc,27
>わかるのですが、なぜこれが必要なのでしょうか。

ここで出てきた Esc は 変数 です。
それを踏まえて getkey 命令のヘルプを読むと 意味がわかるはずです。


>mes ""+message(cnt)
>  ↑の""は、なぜ必要なのでしょうか。

計算式(数値も文字列も)の結果が 数値か 文字列か は、計算式の最初に出てきた項によって決まります。
たとえば、

1+1
は、最初の 1 が数値なので 結果が 2 になりますし、

"1"+1
は、最初の "1" が文字列なので文字列の計算扱いとなり結果が "11"になります。

なので、式の先頭を ""+ … にすることで、その式を確実に文字列の足し算にしているのです。
さもないと、 f3dさんの言うようなエラーになる可能性が出てきます。



リンク

2010/9/6(Mon) 22:54:08|NO.34898

いろいろと、ご指導ありがとうございました。頑張ります。



ANTARES

リンク

2010/9/7(Tue) 00:59:06|NO.34899

>>>mes ""+message(cnt)
>>>  ↑の""は、なぜ必要なのでしょうか。
>
>もしmessage(cnt)が数字だった場合エラーになってしまうからです。
 間違いです。dialogはエラーになりますが、
mesは1項だけならエラーにはなりません。



通りすがり

リンク

2010/9/8(Wed) 01:18:52|NO.34908

>>>>mes ""+message(cnt)
>>>>  ↑の""は、なぜ必要なのでしょうか。
>>
>>もしmessage(cnt)が数字だった場合エラーになってしまうからです。
> 間違いです。dialogはエラーになりますが、
>mesは1項だけならエラーにはなりません。
HSP3からはdialogでもエラーにはなりません。



ANTARES

リンク

2010/9/8(Wed) 03:46:19|NO.34909

 ほんまや。
おおきに。



p、USAGI

リンク

2010/9/8(Wed) 05:33:52|NO.34910

エラーになるのは、

;title message(cnt) //エラー title ""+message(cnt)
私は、文字列を入力する場所には『""+』を入れ、
文字列であることを明確にするクセをつけたほうが、
予期せぬエラーが発生しにくいと思います。



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