制限時間内のキー入力検査
Posted feedbacks - Scheme
c-wrapperでcursesを使いました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | (use c-wrapper)
(c-load "curses.h" :libs "-lcurses")
(initscr)
(define (input-checker n str)
(cbreak)
(printw "input(%s) => " str)
(refresh)
(receive (t input) (let* ((c0 (integer->char (getch)))
(st (sys-time)))
(do ((c c0 (integer->char (getch)))
(lst '() (cons c lst)))
((memq c '(#\lf #\cr))
(values (- (sys-time) st) (list->string (reverse lst))))))
(printw "result => %s\n" (cond
((< n t) "TIME OUT")
((equal? str input) "OK")
(else "NG")))
(refresh)))
(input-checker 5 "ABCDEF")
|

raynstard
#3420()
Rating0/2=0.00
関数 InputCheckerは、以下の仕様を満たしてください。
たとえば、「InputCheker(5, "ABCDEF")」と指定した場合、 出力例はこんな感じです。
1. input(ABCDEF) =>と出力して入力待ちをし、ユーザーが「ABCDEF<ENTER>」を入力したとき、 入力開始から5秒以内ならば「OK」、5秒をこえていれば「TIME OUT」を出力します。 このとき、ユーザーがキーを押下しなければ1. を出力してから たとえ10秒たっていても「TIME OUT」にはならないので注意してください。 時間計測はあくまでユーザーが入力を開始してからです。
このお題はraynstardさんの投稿です。ご協力ありがとうございます。
[ reply ]