トップ 履歴 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

FlashCard04byHSP

*disclaimer
603010

HSP

FlashCard04byHSP 音を聞いて、英単語をタイプする

603009
flashCard04c.hsp(167)
text.csv(207)

; Flash Card
; version 04
; copyleft 2017-07-06 sugiura@nagoya-u.jp
;          2019-06-28 バグ修正

; テキストファイルから、一行ずつ、カンマ区切りで2項目、読み込む
; テキストファイルは text.csv というファイル名で、
; 一行二項目をカンマ区切りにして、同じフォルダーに入れておく。
; 音声ファイルを、項目の順序に対応させ、ファイル名を数字にしておく

pos 100, 100
font "MS ゴシック", 36, 17

mes "Flash Card 04"
mes ""
mes ""
mes "音声が流れます"
mes ""
mes "単語をタイプしてください"
mes ""

wait 200

*start
cls

notesel text				; 事前に読み込みバッファ設定
noteload "text.csv"		; CSVファイルの読み込み

gyosuu = notemax				; notemaxは、メモリーパッド内の行数。

pos 100, 100
font "MS ゴシック", 36, 17

mes "単語数は、"+gyosuu+"語です。"

;------------------------------------テキストファイルの読み込み
sdim wordlist, 2, notemax

item = ""

repeat gyosuu				; 行数(語数)分だけ繰り返す。
	noteget item, cnt		; noteget で行単位で読みだす。cntで読み込み回数をインデックス番号とする
	split item, ",", wordlist(0,cnt), wordlist(1,cnt)
	item = ""
	await 1
loop

wait 100
;-------------------------------------音声ファイルの読み込み
kaku = ".mp3"					; 音声ファイル名の拡張子

repeat gyosuu					; 項目の数だけ音声ファイルがあることになっている
	ban = cnt + 1
	ban = str(ban)				; 文字列型に
	namae = ban + kaku			; 音声ファイル名を順に作る

	mmload namae , cnt+1 		; 音声ファイルを番号順にバッファーに入れて番号をつける
	
	pos 150, 150
	mae = gyosuu - cnt			; カウントダウン
	mae = str(mae)				; 文字列型に
	font "MS ゴシック", 36, 17
	mes mae + "秒前"
	await 1000					; 秒読み
	cls
loop

;--------------------------------------学習の開始
pos 100, 100
font "MS ゴシック", 36, 17

mes "では、はじめます。"


mes ""
mes ""
pos 300, 300
button goto "Start", *main
stop


*main

;-------------------------------------ランダマイズ
randomize
repeat length(wordlist)
	x = rnd(cnt+1)
	R(cnt) = R(x)
	R(x) = cnt + 1
	await 1
loop

	i = 0

*main2

	cls
	;mes "Now i is "+i
	if i == length(R) : goto *owaru   ; 問題数の上限に達したら終わり

	monme = str(i+1)
	;mes "Now playing "+R(i)
	mmplay R(i)						; 対応する音を鳴らす
	
	i = i + 1
	
	pos 200, 100
	font "MS ゴシック", 36, 17
	mes monme + "問目"
	mes ""
	
	kotae = ""

	input kotae, 150, 24
	
	button gosub "Check", *kotaeawase
		
	wait 10
	
	pos 200, 300
	button "Next", *main2			; 行き先に注意 *main2
	mes ""
	button "Quit", *owaru
	stop

;------------------------------------  一通りおわり、繰り返すか尋ねる
*owaru
	cls
	
	wait 100
	pos 200, 100
	font "MS ゴシック", 36, 17
	
	mes "おわりますか?"
	mes ""
	mes ""

	font "MS ゴシック", 36, 17
	;button goto "Again!", *start
	button goto "Again!", *main
	mes ""
	button goto "おわります", *owari
	stop

;----------------------------------------おわり
*owari
	cls
	wait 5
	pos 200, 100
	font "MS ゴシック", 36, 17
	mes "じゃ、またね。"
	wait 100
end

; ------------sub--------------

*kotaeawase
	
	if kotae == wordlist(0, R(i)-1){
		pos 400, 150
		font "MS ゴシック", 36, 17
		mes wordlist(0, R(i)-1)
		mes wordlist(1, R(i)-1)
		mes ""
		color 0,0,255
		mes "Good"
		wait 100
	}else{
		pos 400, 150
		font "MS ゴシック", 36, 17
		mes wordlist(0, R(i)-1)
		mes wordlist(1, R(i)-1)
		mes ""
		color 255,0,0	
		mes "Wrong"
		wait 150
	}
return