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


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0506
REOMP3再生ソフトを作るには?8解決


REO

リンク

2019/5/6(Mon) 20:26:06|NO.87268

HSP初心者です。

鉄道の自動放送を流すソフトを製作したいと考えています。

listboxを設置し、

1つ目のlistboxで選択できるのは、1番線、2番線、3番線、4番線
2つ目のlistboxで選択できるのは、普通、急行、快速、特急
3つ目のlistboxで選択できるのは、東京、新宿、上野、池袋

などとし、再生ボタンを設置し再生ボタンを押すと、

「まもなく1番線に普通東京行きがまいります。」

と流れ、1つ目のlistboxの選択を変更すると、

「まもなく2番線に普通東京行きがまいります。」

と流れる様なソフトを作りたいです。

このようなソフトにするには、どのようなプログラムを書けば良いでしょうか。
詳しく書いて頂けると幸いです。
よろしくお願いします。



この記事に返信する


さくら

リンク

2019/5/6(Mon) 23:01:39|NO.87270

自動放送部分と選択した文字列の表示方法はテロップで流すとか色んな
方法があるとおもいますが、下記のサンプルでは、単純に3つのリストボックスの選択文字列
を合成して表示するサンプルです。ヒントにして頂ければと思います。


#define LB_GETTEXT $00000189 addname1={"1番線 2番線 3番線 4番線"} addname2={"普通 急行 快速 特急"} addname3={"東京 新宿 上野 池袋"} objsize 80,14 : pos 10,20 : listbox comstr1,80,addname1 objsize 80,14 : pos 90,20 : listbox comstr2,80,addname2 objsize 80,14 : pos 180,20 : listbox comstr3,80,addname3 objsize 60,26: pos 20,120 : button "再生",*go01 stop *go01 gstr1="":gstr2="":gstr3="" sendmsg objinfo(0,2), LB_GETTEXT, comstr1, varptr(gstr1) sendmsg objinfo(1,2), LB_GETTEXT, comstr2, varptr(gstr2) sendmsg objinfo(2,2), LB_GETTEXT, comstr3, varptr(gstr3) anser="まもなく"+gstr1+"に"+gstr2+gstr3+"行きがまいります。" dialog anser,0 stop



さくら

リンク

2019/5/6(Mon) 23:11:51|NO.87271

少し、修正です。音声案内を追加して見ました。



anser="まもなく"+gstr1+"に"+gstr2+gstr3+"行きがまいります。" color 255,255,255 : boxf 18,158,280,176 color 0,0,0 : font "Meiryo UI",14,1 pos 20,160 : mes anser newcom tts, "SAPI.SpVoice" tts->"Speak" anser delcom tts stop



Ponyo

リンク

2019/5/7(Tue) 07:15:11|NO.87273

◆listboxについて
>
>listboxを設置し、
>
>1つ目のlistboxで選択できるのは、1番線、2番線、3番線、4番線
>2つ目のlistboxで選択できるのは、普通、急行、快速、特急
>3つ目のlistboxで選択できるのは、東京、新宿、上野、池袋

listboxは 状態保持変数, 拡張Yサイズ, "文字列" という
3つのパラメータを指定することができます。

・状態保持変数はリストボックスの...簡単に言えば
 上からXX個目を選択しているのを設定や取得することができます。
・拡張Yサイズ...ここはややこしいので割愛させていただきます。
・"文字列"はlistboxに表示する文字列、そのまんまですが
 REOさんがいった1つ目のlistboxで選択できるものの場合は、
 "1番線\n2番線\n3番線\n4番線"です。\nは改行に使われます。
 どうでもいいですが、\を表示させたい場合は「\\」にしてください。

◆条件について
・条件処理ではif命令を使います。

if <変数or数値> <パターン> <変数or数値> { ※条件があっていたらここが実行されます }
・<パターン>は = ! & | などを組み合わせて利用し、いろいろあります。
 こちらもぜひ調べてみてください。

◆音源について
音源を流すにはmmloadとmmplayが主に使われます。
応用等はHSPヘルプで検索してください。
mmloadは "ファイル名", バッファの番号, モード という
3つのパラメータを指定することができます。

・バッファの番号とは、いわゆる管理IDみたいなものです。
 自分で適当に決めていいですけど、IDが重なるとその音源自体も重なってしまいますので、
 余裕を持ってID登録してください。

・モードは音源の流し方を設定できます
 以下のように設定しますが、今回の場合は0(省略)でいいです。

モード0 : 指定したファイルは通常の再生を行う
モード1 : 指定したファイルは無限ループで再生を行う
モード2 : 指定したファイルは再生終了まで待つ(非推奨)
モード3 : (CDのみ)指定されたトラック以降を再生する
モード+16 : (AVIのみ)対象ウィンドウ全体で再生

・モード0は効果音等で使われます。
・モード1はBGM等で使われます。
 この2つだけ覚えればいいって感じです。

もう一人の mmplay は mmloadで指定した バッファの番号 を指定します。
指定してない番号を割り当てた時は再生されません。

・使用例(これは実行できます)※ファイルパスは自分で決めてください

mmload "ファイルパス1", 1, 0 mmload "ファイルパス2", 2, 0 gsel 0 ; 一応 mmplay 1 ;mmplay 2 stop

...しかし、これだとミキシング(音と音を重ねること)ができないので、
dmmloadやdmmplayといった難易度高めの利用方法があります。
しかしパラメータの指定方法は全く同じなのでご安心を。
そちらも詳しく検索してみてください。

◆スクリプト
最終的にこんな感じです。(一つ目だけ再現)

mmload "1番線のファイルパス", 1, 0 mmload "2番線のファイルパス", 2, 0 mmload "3番線のファイルパス", 3, 0 mmload "4番線のファイルパス", 4, 0 gsel 0 ; 一応 objsize 100, 50 ; オブジェクトのXY(横縦)のサイズを変更 listbox bansen, 20, "1番線\n2番線\n3番線\n4番線" objsize 64, 48 ; オブジェクトのXY(横縦)のサイズを変更 button gosub "再生", *saisei ; ボタンの設置 stop *saisei title "再生中:まもなく" + ( bansen + 1 ) + "番線に...がまいります。" if bansen = 0 { mmplay 1 ; 1番線だけが流れる } if bansen = 1 { mmplay 2 ; 2番線だけが流れる } if bansen = 2 { mmplay 3 ; 3番線だけが流れる } if bansen = 3 { mmplay 4 ; 4番線だけが流れる } return

いろいろめんどくさいと思いますが参考にしてくれたら幸いです(^^;)



REO

リンク

2019/5/7(Tue) 18:21:12|NO.87276

お返事ありがとうございます。

*saisei
title "再生中:まもなく" + ( bansen + 1 ) + "番線に...がまいります。"
if bansen = 0 {
mmplay 1 ; 1番線だけが流れる
}
if bansen = 1 {
mmplay 2 ; 2番線だけが流れる
}
if bansen = 2 {
mmplay 3 ; 3番線だけが流れる
}
if bansen = 3 {
mmplay 4 ; 4番線だけが流れる
}
return

この後の普通、急行、快速、特急はどのように書けば良いでしょうか?



Ponyo

リンク

2019/5/8(Wed) 19:28:30|NO.87282



mmload "1番線のファイルパス", 1, 0 (省略) mmload "4番線のファイルパス", 4, 0
の所に以下を追加します。

mmload "普通のファイルパス", 5, 0 mmload "急行のファイルパス", 6, 0 mmload "快速のファイルパス", 7, 0 mmload "特急のファイルパス", 8, 0

listboxの所に以下を追加します

listbox type, 20, "普通\n急行\n快速\n特急"


if bansen = 0 { mmplay 1 ; 1番線だけが流れる } (省略) if bansen = 3 { mmplay 4 ; 4番線だけが流れる }
の所に以下を追加します。

wait 100 ; 音に合わせて待つ(自分で決めてください) if type = 0 { mmplay 5 ; 普通だけが流れる } if type = 1 { mmplay 6 ; 急行だけが流れる } if type = 2 { mmplay 7 ; 快速だけが流れる } if type = 3 { mmplay 8 ; 特急だけが流れる }
駅名なども↑のように変数名と音源管理番号を変えれば簡単にできます(^^♪



REO

リンク

2019/5/9(Thu) 14:04:51|NO.87286

詳しく教えて頂き、ありがとうございました。
ソフト完成しました!
他にも作ってみようと思います。
ありがとうございました。



REO

リンク

2019/5/9(Thu) 14:05:25|NO.87287

チェック忘れです



名無三

リンク

2019/5/10(Fri) 20:21:53|NO.87290

hspogg使った方が良いのでは…(小声)



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