#!/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 <残念でした!
記録は$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);
# -----