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


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
0821
くろの6メッセージの表示に関して9解決


くろの6

リンク

2018/8/21(Tue) 01:55:56|NO.85138

初心者です。初歩的な質問ですみません。
「メッセージを表示させて、”次へボタン”で次のメッセージに移る」という
プログラムを組んでいるのですが、

cls mes "こんにちは" button "次へ",*hata1 stop *hata1 mes "私は名無しです。" button "次へ",*hata2 *hata2
という感じになってしまっています。
これだとラベルが多くなり、長くなってしまうので、もっと短くしたいんです。
どうすればいいでしょうか。
質問が分かりにくかったらすみません。



この記事に返信する


ゆうやん

リンク

2018/8/21(Tue) 06:11:23|NO.85139

ラベルの後に、clsを入れてみてはどうですか?



くろの6

リンク

2018/8/21(Tue) 09:21:43|NO.85140

clsを入れてメッセージを消すのを忘れていました。
私が言いたいのは、ノベルゲームのようにセリフをたくさん表示させるときに、
スクリプトが長くなってしまうということです。



Y_repeat

リンク

2018/8/21(Tue) 10:17:12|NO.85141

マクロで短くするとかでしょうか

#define hoge(%1,%2) cls 0:mes %1:button %2,*@f:stop cls hoge "1","NEXT" *@ hoge "2","NEXT" *@ hoge "3","NEXT" *@ hoge "4","NEXT" *@ stop



初心者

リンク

2018/8/21(Tue) 10:43:36|NO.85142

dialogで代用とか?
--------------------

cls dialog "こんにちは",1,"???" dialog "私は名無しです",1,"名無し"

短くなります



ham

リンク

2018/8/21(Tue) 14:23:25|NO.85143

変数で条件分岐すれば分かりやすそうな、
例えばこんな感じで。

*hata1 if num=0: mes "こんにちは" if num=1: mes "私は名無しです。" if num=2: mes "3個目" button "次へ",*hata2 stop *hata2 cls num+1 goto*hata1



Tsuyoshi

リンク

2018/8/21(Tue) 16:08:30|NO.85144

おせっかいかもしれませんが、今後それなりの規模のゲームを作られるのでしたら、
配列を覚えて下記のような書き方にされると後々楽になります。

「message(数字) = 〜」 の行を追加するだけでメッセージを追加できます。


// 必要な変数を準備 sdim message,100,100 // メッセージを格納する配列変数 text_cnt = 0 // 何個目のメッセージかをカウント数える変数 // 配列変数にメッセージを格納 // ここを増やしていけばメッセージが増えます message(0) = "こんにちは" message(1) = "私は名無しです。" message(2) = "3番目のメッセージ" // メインループ *hata cls pos 0,0: mes message(text_cnt) pos 0,30: button "次へ",*hata text_cnt++ stop



沢渡

リンク

2018/8/21(Tue) 17:27:33|NO.85145

「ノベルゲームのように」という記述から察するに、メッセージデータはスクリプト
ではなく外部のテキストファイルに置いておき、note系命令を使って
読み込んで表示するようにした方が、幸せになれるかもしれません。



くろの6

リンク

2018/8/21(Tue) 17:42:20|NO.85146

色々な方法を教えていただき、ありがとうございました。
配列を使う方法と、テキストファイルを読み込む方法を使ってみようと思います。



あり

リンク

2018/8/21(Tue) 17:55:37|NO.85147

文を書いている間に解決になってしまいましたが(汗)
メモリーノートパッド系命令を使うとこんな感じです。

data = "こんにちは\n私は名無しです。\nあとは適当\n終わります。" notesel data // 文字列dataをメモリーノートパッドのバッファに指定 *main cls noteget txt, txtindex // dataから一行ずつ取り出す mes txt txtindex ++ // 読み込む行を移動 if txtindex < notemax : button "次へ", *main
この方法だとdataの行数が増えてもスクリプトの変更はいりません。

テキスト量が多いならdataの内容をテキストファイル(data.txt等)に保存してnoteselの次に

noteload "data.txt"
とすればスクリプトの見通しをよく出来ます。



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