; Flash Card ; version 2022-06-30 ; copyleft 2017-07-06 sugiura@nagoya-u.jp ; 2019-06-28 バグ修正 ; 2019-07-03 答えあわせのバグ修正 ; 2021-06-17 バク修正・見た目改良 ; 2022-06-30 読み込むファイル名修正 text.csv => text2.csv ; テキストファイルから、一行ずつ、カンマ区切りで2項目、読み込む ; テキストファイルは text2.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 "text2.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で読み込み回数をインデックス番号とする(0から) 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 ; 音声ファイルを番号順にバッファーに入れて番号をつける ; cntは0から始まる。1足すので、音声ファイルは1.mp3から 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 ;-------------------------------------ランダマイズ pos 0,0 font "MS ゴシック", 12, 17 randomize repeat length(wordlist) cls x = rnd(cnt+1) ; rndは、1から()内の数字までの間で整数の乱数発生。()内の数字は含まれない ; 初回ループは、1から1まで、、、、0 R(cnt) = R(x) ; その番目の要素をRの0番に入れる R(x) = cnt + 1 ; 最初は、0+1なので、1。1を要素番号R(x)に入れる 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) ; 対応する音を鳴らす。R(0)からR(2)に1,2,3が入っている。 ; i = i + 1 pos 200, 100 font "MS ゴシック", 36, 17 mes monme + "問目" mes "" eigo = wordlist(0, R(i)-1) ; 英単語を変数 eigoに yaku = wordlist(1, R(i)-1) ; 対訳を変数 yakuに ;mes eigo ; 出題のチェック kotae = "" ; 答えを入れる変数 kotae input kotae, 150, 24 ; 解答欄 button gosub "Check", *kotaeawase i = i + 1 ; ★順番を増やすカウンター i この位置に注意 pos 650,0 mes i 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!", *main ; 戻る場所に注意、再度、ランダム化するように mes "" button goto "おわります", *owari stop ;----------------------------------------おわり *owari cls wait 5 pos 200, 100 font "MS ゴシック", 36, 17 mes "じゃ、またね。" wait 100 end ; ------------sub-------------- *kotaeawase pos 400, 0 mes "あなたの解答" mes kotae mes "---------------" if kotae == eigo{ pos 400, 150 font "MS ゴシック", 36, 17 mes "正解は↓" mes eigo mes yaku mes "" color 0,0,255 mes "Correct!" wait 100 }else{ pos 400, 150 font "MS ゴシック", 36, 17 mes "正解は↓" mes eigo mes yaku mes "" color 255,0,0 mes "Wrong" wait 150 } return