#!/usr/bin/perl # # 記憶力テスト # # CGIスクリプトから見たベースとなるディレクトリ $base = "../kioku"; # ライブラリの挿入 require 'cgi-lib.pl'; # ↓カスタマイズ可能な変数↓ $title = "記憶力テスト"; # タイトル # ゲーム中で利用する変数 $data = "kioku.dat"; $mfile = "$base/kioku.htm"; # 問題HTMLファイル # ゲーム中で利用する変数 $count = 0; # チャンレンジ回数 $mondai = ""; # 問題 # 入力データの解析 &ReadParse(*in); $file = $in{'file'}; # 答えが入っているファイル $value = $in{'value'}; # ユーザーが入力した答え $end = $in{'end'}; $send = $in{'send'}; # ヘッダー出力 print "Content-type: text/html\n\n$title\n"; # 終了時にはテンポラリファイルを抹消する if($end ne ""){ print "

お疲れさまでした

"; unlink($file) if $file ne ""; exit(0); } # 同一人物がゲームしているかチェックする if(-e $file){ $min5 = 1 / (24 * 60 * 5); # 目安は5分 if((-A $file) > $min5){ unlink($file); # 5分以上経っていたら強制的にゲーム終了 } else { open(FILE, "< $file"); $ip = ; close(FILE); chop $ip; if($ip ne $ENV{'REMOTE_ADDR'}){ # print "

$ip
$ENV{'REMOTE_ADDR'}

"; print "

別の方がゲーム中ですので、しばらくお待ち下さい

"; exit(0); } } } if(! -e $file){ # 新しいゲーム開始 $file = $data; # 答えファイルの定義 # 最初は3桁から始める $mondai = sprintf("%d", int(rand(100))); } else { # ゲームの続き $data = $file; open(FILE, "< $data"); $ip = ; $count = ; $mondai = ; close(FILE); chop $count; chop $mondai; # 答え合わせを行なう if($mondai ne $value){ print <

残念でした!

答え$mondai
入力した値 $value

記録は$count回でした!


もう一度チャレンジしますか?
はい END_OF_HTML unlink($data); exit(0); } } # 出題処理 $count++; # 問題を作成 srand(time); $mondai = sprintf("%s%d", $mondai, int(rand(10))); # 答えをデータファイルへ出力 open(FILE, "> $data"); print FILE "$ENV{'REMOTE_ADDR'}\n$count\n$mondai\n"; close(FILE); # 入力フォームを出力 open(FILE, "< $mfile"); while(){ print $count if /-- TRY --/; print $mondai if /-- MONDAI --/; print; } close(FILE); # -----