*disclaimer
815699
[HSP]
04. 画像と音声の取り扱い、それとメッセージボックス
- 04. 画像と音声の取り扱い、それとメッセージボックス
- 0.4 「10問クイズ」の改良
- 04.1 画像の取扱
- 04.2 音声の取扱
- 04.3 メッセージボックス
- 04.4 ボタンの大きさの変更
- 04.5 「村尾さんの例」
- 04.6 「村尾さんの例」の修正(授業中の演習)
- 04.7 著作権について: 著作権のポイント
- 04.8 音声ファイルと画像ファイルの作成・編集について
- 04.9 その他の「部品」について
- 04.10 音声ファイルや画像ファイルをまとめて、一つの実行ファイルにするには
- 今日の課題:
- => TextForHSP05
ほかの人のを見てみましょう。
0.4 「10問クイズ」の改良
例) 10monQuizColor2.hsp(264)
- 正解のフィードバックつき
- 11問に
;10monQuizColor2 ;copyleft 2007-05-10 sugiura@nagoya-u.jp ;2017-06-09 フィードバックkaitou追加 ;2018-06-15 スペースと色づけ 70行目以降 ;2020-06-12 問題数が10問以外も対応 小数点のある計算 ; 1) データを記録し、ファイルとして保存する。 ; 2) 問題番号を出す。 ; 3) 条件に応じてメッセージを出す。 ; 4) 色を変えることで、場面の変化を伝える。 toi(0) = "アメリカの首都はニューヨークである" seitou(0) = 0 kaitou(0) = "Washington D.C.です" toi(1) = "カリフォルニアの州都はロサンジェルスである" seitou(1) = 0 kaitou(1) = "サクラメントです" toi(2) = "ネバダ州のリノはロサンジェルスよりも西にある" seitou(2) = 1 kaitou(2) = "意外とロサンジェルスは東にあります" toi(3) = "アメリカの公用語は英語である" seitou(3) = 0 kaitou(3) = "法律で公用語は決まっていません" toi(4) = "バーモント州はカレーで有名である" seitou(4) = 0 kaitou(4) = "りんごと蜂蜜は取れますがカレーは作っていません" toi(5) = "アメリカには国民健康保険がない" seitou(5) = 1 kaitou(5) = "そういう国の制度がないのです" toi(6) = "アメリカには戸籍がない" seitou(6) = 1 kaitou(6) = "戸籍はありません" toi(7) = "アメリカで生まれた子は無条件でアメリカの国籍を得る" seitou(7) = 1 kaitou(7) = "不法滞在の子も得られます(出生地主義)" toi(8) = "アメリカの政府はアメリカの紙幣を発行していない" seitou(8) = 1 kaitou(8) = "連邦準備制度理事会というところが印刷しています" toi(9) = "グアムはハワイ州に属する" seitou(9) = 0 kaitou(9) = "独立した「準州」です" toi(10) = "Star Trekに出ていたMr. Katoは実は中国系である" seitou(10) = 0 kaitou(10) = "日系です" ;------------------記録する準備--------------------------- notesel kiroku ; 記録する「ノート」の領域を設ける kiroku = "" ; ノートを空っぽにしておく(「文字」である点に注意:0ではない) ;-----------------プログラムの本流------------------------ mondaisuu = length(toi) *main for i, 0, mondaisuu, 1 gosub *settei mon = i + 1 ; 問題番号を表示するために1を足す。 mes "第"+mon+"問" ; 問題番号を提示 mes "" mes toi(i) ; 問題文を提示 if seitou(i) == 1 { gosub *yes } else { gosub *no } ;---------------------------------追加------------ mes "" ; 一行空けて color 255,0,0 ; 赤色で mes kaitou(i) ; 解答をフィードバック ;------------------------------------------------- wait 300 next ;---------------終了する際に----------------------------- *owari cls color 255, 10, 10: boxf ; 場面の変化を背景の色で伝える。 color 0,0,0 font "M S 明朝", 24, 1 pos 70, 100 mes "" ;---- zenbu = length(toi) ; 問題数は全部で、、、 wariai = double(wariai) ; 割合を実数(小数も)で maru = double(maru) zenbu = double(zenbu) wariai = (maru/zenbu) * 100 ; 小数点以下も含めて計算 wariai = int(wariai) ; 整数(小数点以下切捨て)に戻す ;---- ;wariai = maru * 10 mes "正答率は"+wariai+"%でした" mes "" if wariai >= 80 : mes "よくできました" ; 正答率に応じてメッセージを出す if wariai <= 50 : mes "もっとがんばりましょう" wait 300 noteadd "正答率は"+wariai+"%でした" ; 「ノート」の最後に正答率も記録 notesave "log.txt" ; 「ノート」を保存するファイル名を設定し保存する。 end ;--------------------------sub------------------------- *settei cls ;------------------------------------------------------ red = rnd(256) ; 赤色をランダムに ;------------------------------------------------------ color red, 200, 200: boxf ; 背景色に color 0,0,0 font "M S 明朝", 24, 1 pos 70, 100 mes "" mes "正しい場合は、マウスの左ボタン。" mes "間違いの場合、マウスの右ボタン。" mes "-------------------------------" mes "" return *yes repeat stick key if key==256 : noteadd "左○" : maru = maru + 1 : color 10, 10, 255: mes "Good!" : break ; 「ノート」にデータを記録 if key==512 : noteadd "右×" : batu = batu + 1 : color 255, 10, 10: mes "No!" : wait 100 : break await 1 loop return *no repeat stick key if key==256 : noteadd "左×" : batu = batu + 1 : color 255, 10, 10: mes "No!" : wait 100 : break if key==512 : noteadd "右○" : maru = maru + 1 : color 10, 10, 255: mes "Good!" : break await 1 loop return
04.1 画像の取扱
- 画像ファイルはスクリプトと同じフォルダーに)
picload "ファイル名", オプション
- オプション
- 1 で、開いているウインドウ内に画像を表示(普通こちら)
picload "flower.jpg", 1
- 0 で、画像を表示し、開いているウインドウを画像の大きさに合わせる。
- つまり、ウインドウが画像そのものの大きさになる。
picload "flower.jpg", 0
04.2 音声の取扱
準備として音声をプログラム内に読み込んでおく
mmload "ファイル名", バッファ番号
- 「バッファ」というのは一時的な保存場所のこと
- 番号を指定して、音声を鳴らす
mmplay バッファ番号
04.3 メッセージボックス
複数行のメッセージを表示したり、メッセージの記入欄として使う箱。
ここでは最初にメッセージの記入欄として使う。
まず、文字を扱う、ということを宣言しておく
変数名 = "" mesbox 変数名, 幅, 高さ, オプション, 文字数
オプションは
- 1 で、書き換え可能=記入欄として使える
- 0 で、書き換え不可=複数行のメッセージを表示する
文字数は 0としておく。
- 0文字という意味ではなく、「制限なし」という意味
- 書かないで省略すると、64文字が上限となる
04.4 ボタンの大きさの変更
ボタンの表示をする前に、
objsize 幅, 高さ
- デフォルトは、 64 x 24
04.5 「村尾さんの例」
- murao.hsp(204) (murao.zipに音声も画像も入っている)
; 2006村尾版の改良 by sugiura ; 必要な画像 ; 17b.jpg ; murao2.jpg ; 必要な音声 ; okonomiyaki.wav ; murao.wav notesel kiroku ; 記録用ノートの準備 ;-------------------------表紙のタイトル------------ pos 200, 150 ; font "MSゴシック", 32, 1 mes "Photo Album" font "MS明朝", 20 mes "−食べ物と飲み物編−" pos 250, 300 button "はじめ", *tabemono ; stop ;-------------------------------一つ目----------- *tabemono cls pos 200, 10 ; picload "17b.jpg" , 1 ; 画像ファイルを読み込む ; p2 を 1 にすることで、ウインドウ内に配置 ; p2 を 0 にするとウインドウの大きさが ; 画像の大きさになってしまう。 objsize 140,30 ; ボタンの大きさを設定 pos 200, 250 button gosub "写真の説明を聞く", *okonomiyaki ; サブルーチンで音を鳴らす pos 50, 300 ; 入力欄を用意する tabe = "写真の感想を書いてください" ;変数に表示メッセージを代入する mesbox tabe, 500, 64, 1 ; メッセージボックスを設置(書き換え可能) ; メッセージ, 右位置, 下位置, オプション ; オプションは 1で書き換え可能 ; 0で書き換え不可能 objsize 60,24 pos 250, 400 button "つぎへ", *nomimono stop ;--------------------------------二つ目-------------------------- *nomimono noteadd "<お好み焼きの感想>" ; どこでノートに記録をとるかがポイント noteadd tabe ; メッセージボックスの内容をノートに記録 cls pos 250, 10 picload "murao2.jpg" , 1 objsize 140,30 pos 250, 250 button gosub "写真の説明を聞く", *murao pos 50, 300 nomi = "写真の感想を書いてください" mesbox nomi, 500, 64, 1 objsize 60,24 pos 250, 400: button "おわり", *owari stop *owari noteadd "<村尾の感想>" noteadd nomi notesave "murao.txt" end ;--------------------------sub----------- *okonomiyaki mmload "okonomiyaki.wav", 0 ; 音声ファイルの読み込み, バッファ番号 mmplay 0 ; 音声の再生(バッファ番号で指定) return *murao mmload "murao.wav", 1 mmplay 1 return
04.6 「村尾さんの例」の修正(授業中の演習)
1. 指示文をメッセージボックスの中ではなく、
その上に出し、メッセージボックスは空欄になるように修正してみる。
2. mmload を最初にやっておくように。
修正例
- murao2.hsp(250)
何も書かなかったら「警告」をだす。
dialog "メッセージ", オプション
- オプションとして数字を指定
- 0 標準+ OK
- 1 警告+ OK
- 2 標準+ はい・いいえ
- 3 警告+ はい・いいえ
04.7 著作権について: 著作権のポイント
- 表現の創造性を尊重する。
- (言葉そのものではない。)
- (アイデアではない。)
- 盗んではいけない。
- (勝手にひとが書いた表現をコピペしてはいけない。)
- (許してもらえばよい。= 契約書)
- ウソをついてはいけない。
- (人の書いたモノを自分が書いたと偽ってはいけない。)
- 「引用」はよい。
- (出典を示す)
- 学校教育での利用は例外的
- (日本での話)
- (「学校教育法における学校の授業」でないとだめ)
- 教育目的だからという理由ではダメ
★どうすればよいか。
- 自分で作る
- 許可を得る
- 「引用」
04.8 音声ファイルと画像ファイルの作成・編集について
音声
スタート > すべてのアプリ > サウンドレコーダー(パソコンによる)
★ファイルの形式に注意:mp3 か wav
- 音声の編集には SoundEngine
http://soundengine.jp/software/soundengine/
- スマホやICレコーダーで録音するのも便利
- インターネットからダウンロード
- 音声ファイルのサンプル
- pi.mp3(212)
- pingpong.mp3(191)
合成音声
- 音読さん
- 読み上げ例
- americaNewYork.mp3(138)
- onceuponatime.mp3(136)
画像
★ファイルの形式に注意:jpg や BMP
- デジカメやスマホで撮る。
- 画像の大きさに注意
- ペイントでは右下に座標が出る
- "杉浦の描いた絵"
画像生成
Bing Image Creator
https://www.bing.com/images/create
Mary is eating a piece of cake.
- Image Creator に関する規約
- Microsoft アカウントが必要であり、Microsoft Rewards のユーザーとしてサインインしている必要があります。
- 個人の合法的な非商業的目的のために作成物を使用できます。
- Microsoft は、...所有権を主張しません。
- 注意点:Bingの検索履歴、Image Creatorのプロフィール、Image Creatorの履歴が記録される。
04.9 その他の「部品」について
input
一行の文を入力したり、表示したりする。(全部指定しなくてもよい。変数だけは必要)
input 変数, 横幅, 高さ, 文字数 reibun = "Tom doesn't like cakes very much." input reibun
- mesboxは複数行なのに対し input は一行だけ
- 文字入力欄として使う場合、objsel命令で指定すれば、キャレットが表示される
チェックボックス
chkbox "項目名", 変数
- 複数並べて使う。
- チェックが入ったら、変数に 1 が入る。
リストボックス
listbox 変数, 縦方向サイズ,"項目を\nで区切って並べる"
コンボボックス
combox 変数, 縦方向サイズ, "項目"
ラジオボタン RadioButton
04.10 音声ファイルや画像ファイルをまとめて、一つの実行ファイルにするには
スクリプトの先頭に
#pack "ファイル名"
と書いて、実行ファイル自動作成をすればよい。
(昔はもう少し手間がかかっていた、、、)
★ただし、含めることのできる音声ファイルは.wavのみ。(mp3はだめ)
mp3ファイルの埋め込み方
- パックしておいて、それを実行時にファイルに書き出して、それを読み
#pack "left.mp3" #pack "right.mp3" #pack "flower1.jpg" bcopy "left.mp3", "left.mp3" bcopy "right.mp3", "right.mp3" ; 音声ファイル読み込み mmload "left.mp3", 1 mmload "right.mp3", 2
- 実例:絵を押すと音が鳴る
https://sugiura-ken.org/wiki/wiki.cgi/exp?page=HSP#p57
- Reference
http://hsp.tv/play/pforum.php?mode=pastwch&num=25657
今日の課題:
画像と音声を使った語学教材を作ってみてください。
- 参考例 "Supersegmental Features"
- Parappa the Rapper
- Carolyn Graham, Jazz Chants
- シェイクスピアで「強弱5歩格」を体感する
- What does Iambic pentameter mean?
- Stress-Timed Language
https://sugiura-ken.org/wiki/