1翻←
ド へα1所♪
障一「苓
対
W・
e,
3.2.2 記録と再生の方法
本システムの記録と再生は基本的には1つのプロシー・ジャーdtakey$
で、記録と再生のモードを切り替えて行っている。モードの切り替えは 起動時のコマンドライン入力で指定する。
このdtakey$のプログラムを図3.18に示す。図中の前半(①)が 記録、後半(②)が再生を行う部分である。記録と再生のモードは変数
rRec」、rrPl」によって切り替えている。
前半の記録ではrPRIN↑#1, B$;」のように、たたかれたキーの1つ1 つ、即ち、 「B$=INKEY$」で得られるキーデータをそのままファイルに 出力する。同時に、「PRINT#2, .b ;Byo1;」とキーデータに対応し た操作時間を別のファイルに出力する。
再生に当たっては、再生開始前に、キーデータと対応する操作時間を 配列変数「dta$(d七aCoun七)」N「d七aByo1(dtaCoun七)」1こそれぞれ読み込 んでおく必要がある。これらの読み込み方法については後述する。
後半の再生では、まず再現速度の調節のため、変数rrPl」の値により、
1キPtごとの停止やリアルタイム、スロー、スピードのモード別の処理 を行っている。そしてキーをたたく代わりに「B$=d七a$(d七aCount)」と キーデーータを送り込んでいる。
このdtakey$を、次のように、コンピュータ教材のプログラム中のキ ー入力命令「lNKEY$」と置き換えると、記録と再生が行える。
A$ = INKEY$ 一〉 A$ = dtakey$
FUNCT l ON dtakey$
IF
cguth =1 OR Re¢ >o THEN pm一一一}
B$ = iNKEY$
LOOP WH I LE B$ =
IF Ree >O THEN F O
PRINT #1, B$;
Byol = TIMER 一 startByo PRINT #2, 一b 1 Byol;
END IF
EしSEIF rPl>OTHEN
lF d七aCount > d七aEnd THEN l)RlNT ,d七a end,,: END IF rPl 〈 4 THEN
d$ = INPVT$(1)
EL撃撃撃撃奄撃撃撃撃sl門 llt・・tBy・・d 1(d七・C・unt))ト②
ELSEIF rPl = 5 AND dtaCount 〉 i TliEN
DO iVH I Lε ((TlトでER−sもar七Byo)/4 < dtaByo1(d七aCoun七))
LOOP
EしSEIF rPi =: 6 AND d七a(=◎un七 > 1 THEN
DO WH lしE ((TlMER一一star七Byo)*4 〈 d七aBy◎1(d七aCoun七))
LOOP END I F
IF d$ = THEN STOP B$ = d七a$(d七aCOun七)
d七aCOun七 = d七aC◎un七 十 1 一一一一一一一一一一一一一」
END甲 dtakey$ = B$
END FUNCT I ON
図3.18 1キーの記録と再生を行うプロシーヅヤーdtakey$
BASICプログラムにおいて使用される入力命令は[NKEY$」より
rlNPUT」が一般的である。そこで、1入力を記録、再生するためのプロ シージャーがd七alnp$である。このd七alnp$は図3.19に示すように、d七akey$を利用した単純なものである。図中のrdtaPrint,(B$)」はたた かれたキーを画面上に表示するためのプロシージャ・一・である。コンピュ ータ教材のプログラムでは、次のようにrlNPUT」文と置き換える。
INPUT A$
INPUT A
. A$ = dt,alnp$
→ A = VAし(d七alnp$)
操作過程を調べる上で必要な付加情報を記録するためのプロシージャ ーがRecT i meである。このRecT i meは図3.20に示すように、引数「
Work%」の値によって、8種の異なるタイプの記録の内、何れかが指定で きる。引数「RecMenu$」、 「RecMemo$」:を記録するタイプでは話語z一 項目などの付加情報の記録が可能である。操作時間を保存するファイル には時刻とメニュー項目を記録するようにしている。再生の際は操作時 間rd t,aByo1(d七aCount)」を再生画面上に表示するようになっている。こ のRecT i meはコンビュPtタ教材のプログラム中の必要な箇所に記述し、
利用できる。本教材では、次のような記述をメニュー選択の後に挿入し、一 メニュー項目、及び、お金工場とソロバンの状態を記録するために使用 している。
Rec卜1enu$ = Menu l七em$(menuNo%)
RecMemo$ = M + MoneyDispCond$ 十 S 十 So l oCond$
RecT i me 8, RecMenu$, RecMemo$
FUNCT I ON fJ七a l np$
DO
B$ = d七akey$
d七aPrin七 (B$)
c$ = c$ + B$
LOOP WH lしE B$ <> CHR$(13)
c$ = LEFT$〈c$, i.EN(c$) 一 i)
d七alnp$ = c$
EX l T FUNCT I ON
図3,19 1入力の記録と再生を行うプロシージャーd七alnp$
SUB RecT i tae (Workjl;, RecMenu$, RecMemo$)
IF Rec 〉 O THEN 七$ = TlME$
Byol = TIMER 一 startByo SEしECT CASE Work駕
CASE 1: PRINT #1, mTitne ; t$
CASE 2: PRINT #1, t 一.Time ; t$1 一 lenu ; RecMenu$
CASE 3: PRINT #1, T i tne 1 t$; 一Menu 1 RecMenu$
1 一Memo ; RecMetno$
CASE 6: PRINT #1, .T ime ;. Byol
CASE 7: PRINT #1, 一Time i Byoll .Menu 1 RecMenu$
CASE 8: PRINT #1, 一Time i Bssoll 一Menu j RecMenu$
; mMeno ; RecMemo$
CASE 9:PRINT瓢 一一Timp. ;Byol; 一Meno ;RecMemo$
CASE 10: PRINT #1, 一Time ; I NT(Byol / 60)1 : ; Byol 一 I NT(Byol / 60) ;1 60
END SεしECT
PRINT #2, ,,_Time , ; 七$; ,,_M ,,; RecMenu$
εしSElF rP1 > O AND. d七aCoun七 く d七aEnd THEN しOCATE 1,68
PRlNT US l NG ,,###:##,,; d七aByo1(d七aCoun七) ¥ 60 ; d七aByol(d七aCoun七) MOD 60;
END IF END SUB
図3.20 操作時間等の情報を記録するプロシージャーRecT i tne
3.2.3 記録内容と読み込み方法
d七akey$、 RecT i駝で記録されたキー操作の記録(以下、操作記録と呼 ぶ。)と操作時間の記録は、拡張子の異なる2、つの同一名のファイルに 保存されている。ファイル名は実行期日と時刻、拡張子は操作記録が「
.DTAJ、操作時間の記録が「.TIM」である。8月24日午後1時31分
に実行された場合、フフイル名は「08241331」となる。図3.21にテキストエディター上に読み込んだ操作記録の様子を示す。
図の1行目には起動された期日と時間、システムのヴァージ:ヨンが記録 されている。図中のらTi凱e」のある行はいずれも操作時間とメニュー項 目、お金工場とソロバンの状態がRecTimeで記録さ:れたものである。既 に述べたように、本コンピュータ教材のキー操作はメニューの選択と数 値などの入力の2種類である。これらの操作の最後には概ねリタ・一…ンキ
・P・・ェ押されるために、図のように、エディター上では1回のメニュー選 択の操作・1入力の操作がいずれも1行分になっている。
この操作記録を更に読み取り易くするために、操作記録の印字プログ ラムを作成し、これに印字させたものを図3.22に示している。湯中の
「〈」、「〉」、「》」、r^vは矢印キー、「」」はりターンキV・■をそれぞ れ読み替えたものである。これ以外にもBSキーがrb」と読み替えられ る。また、メニュー選択の操作と付加情報は対応しているので、1行に まとめて印字している。
図中の2行目は左矢印キー ve 2回、リターンキーが押され、お金工場 が実行開始5秒後に選択され炬ことを意味している。3行目は6秒後に リターンキー一が押され、お金作成が選択されたことを意味する。4行目 は「123」が入力されたことになる。以降も同様に、見ていくと操作過程
S七ar七 1993−10−18 T OO:26:33 Ver 2.0
@iM 〜@卜1 bl
.Time 5−iMenuお金5550−Meno M,10 S,9
^卜1
−Time 6−Menuお金作成5550Meno MIO S,9
123^H
O@PM
−Time 13.Menu両替(小へ)55.50.Meno MllIOOO,220000,3300
100^M
ノも ノロ
酬@H M
_Tirne 22 _Menu ヒント 5 5 5 0_Meno M111000,222222,222222,10 S
L翌o^bl
−Time 23顕enu総門(大へ)5550遡eno M111000,222222,2222
^N
s翌g Pl
−Time 30−Menu終了5550当eno M111000,220000,330000,330 図3.21 エディタで読み込んだ操作記録
Stac rt 1993−10−18 T OO:26:33 Ver 2.0
>>」一.Time 5−Menuお金5550.Meno M,10 S,9
」一T i tne 6−Menuお金作成5550.卜leno M10 S,9 123J
Ov」一T i rne 13瀕enu両替(小へ)5550.Meno M111000,220000,3 100j
」_Time 22 _Menu ヒント 5 5 5 0_「4eno M111000,222222,222222,1
v」一Time 23−Met、u総替(大へ)5550.Meno M111000,222222,22
J
^」一Time 30.Menu終了5550−Metio卜1111000,220000,330000,3
>>〉」_Time 31 _卜lenu ソilハ ン 5 5 5 0_Meno M111000,220000,33000
」一Time 34−Menu表示・加減5550−Meno M111000,220000う3300 123j
vvv」一Time 43−Menu回数変(消)5.550.Meno M111000,220000,
5j
vv」一Time 47−Menu数え上下5550.Meno M111000,220000,:330 8J
図3.22 操作記録の印字
Start 1993−10−18 T OO;26;33 Ver 2.0
−b4.b 4一. b 5−Time OO:26:38.Mお金5550
−b6..Time OO:26:39−Mお金作成5550
−b7.. b 7.b 7.. b 7−b 11 ..b 12−b 13−Time OO:26:46.M両替 b 15 b lt , b 15 io 15 b 20 b 21 b 22 T i me OO:26:55 M
b22 b 23 Time OO:26:56 M総替(大へ)5550
.b 23.b 29−b 30−Time OO:27:03遇終了5550 b31 b31 b 31 b 31 Time OO:27:04 Mソ日ハ ン5550
−b34−Time OO:27:07.M表示・加減5550
b 36 b 36 b 36 h 37 b 41 b 42 b 42 b 43 Time OO:27
−b43.b 44.b 46−b 46−b 47−Time OO:27:20−Pl数え上下55 図3,23 エディタで読み込んだ操作時間の記録
図3.23には操作時間の記録をテキストエディター上に読み込んだも のである。「一b」の後の数字が1つ1つのキーがたたかれた時間である。
「一Time」以降は操作記録同様、 RecTimeで記録されたものである。
先に述べたように再生するためには、以上のような記録から、付加情 報除いたキーーデータと操作時間をそれぞれ配列変数rdta$(d七aCoun七)」、
rd七aByo1(d七aCount)」に読み込まなければならない。
操作記録から、1つ1つのキーデータを「dta$(d七aCoun七)」1こ読み込 むためのプログラムを図3.24に示す。この前半く①)では、操作記録 を1文字ずつ読み出し、それらをつなぎ合わせ、図3.21でみた操作記 録の1行分をつくり配列変数rdtaGra$(M)」に読み込んでいる。後半(
②)ではこのrdtaGra$(j)」の頭から1文字ずつキーデータを取り出し、
「d七a$(n)」に送り込んでいる。「d七aGra$(」)」にある付加情報は「.」
を指標に読み飛ばしている。
lNPUT #1, st$: p = lNSTR(s七$, ,,_T , ) 一 一一_
M = 1: d七aGra$(M) =:s七$
M=2
, DO WH IしE NOT EOF(1)d$ 二 lNPUT$(1, #1)
re3ds2:
.dtaGra$(M) = d七aGra$(M) + d$
iF d$ = C賢R$(&HD) AND NOT EOF(1) THEN i