• 検索結果がありません。

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