●はじめに
フォームによる送信と、CGIスクリプト自身によるページ生成を使って、じゃんけんぽんゲームを作ってみました。
●実行例
じゃんけんをするならここをクリック
●導入手順
1.「jyanken.cgi」を入手します
-
これをFTPで自分のサイトに転送します。
2.ファイルのパーミッションを変更します
-
$chmod 755 jyanken.cgi
※「$」はUNIXのプロンプトだから入力する必要はないよ。
3.動作確認をします
-
$jyanken.cgi
jyanken.cgiを実行して、その時間とメッセージが表示されればOKです。
4.HTML文書にスクリプトを実行するための1行を入れます
-
<!--#exec cmd="jyanken.cgi"-->
●リスト
#!/usr/local/bin/perl
#じゃんけん▲(c)p4room(http://p4room.mda.or.jp/~roro/)
$_ = substr($ENV{"QUERY_STRING"}, 0, 1); #引数の最初の1文字を取得
$file = "count.log";
open(FILE,"+<$file") || die "$fileが開けません"; #読み書き両用オープン
flock(FILE,2); #ロックする(使用中なら未使用になるまで待つ)
chop(@count = <FILE>); #勝敗カウンタを配列に読み込む
if ( $_ ne "") { #初めてのときはじゃんけんしない
@jyan = ("ぐぅ" ,"ちょき" , "ぱぁ"); #配列セット
srand(time|$$); #ランダマイズ
$a=int(rand(3)); #0〜2の整数乱数取得
$x="$a"."$_";
$count[0]++;
if ($x=="00" || $x=="11" || $x=="22") {$output = "あいこ";}
elsif ($x=="02" || $x=="10" || $x=="21") {
$output = "あなたの勝ち";
$count[1]++;
}
else {
$output = "CPUの勝ち";
$count[2]++;
}
seek(FILE,0,0); #ファイルポインタを先頭に戻す
print FILE "$count[0]\n"; #ゲーム回数書き出し
print FILE "$count[1]\n"; #あなたの勝数書き出し
print FILE "$count[2]\n"; #CPUの勝数書き出し
}
flock(FILE,8); #ロック解除
close(FILE); #クローズ
print "Content-type: text/html\n\n";
$dummy=time;
print <<"EOF";
<html><body TEXT="#FFFFFF" LINK="#00FFFF" VLINK="#FF00FF" ALINK="#FF0000" BGCOLOR="#000000">
<center><h1>じゃんけんげーむ</h1></center><hr><br>
<h2>●これまでの勝敗</h2>
今まで$count[0]回じゃんけんしました<br><br>
あなたの勝ち:$count[1]回<br>
CPUの勝ち:$count[2]回<br>
<h2>●じゃんけんしようよ</h2>
あなたは:@jyan[$_]<br>
CPUは:@jyan[$a]<br>
勝敗は :$output<br>
<form action="jyanken.cgi" method="GET">
<input type=submit name="0" value=" ぐぅ ">
<input type=submit name="1" value="ちょき">
<input type=submit name="2" value=" ぱぁ ">
<input type=hidden name="$dummy">
</form><br>
<a href=jyanken.htm>前のページに戻る</a>
</body></html>
EOF
exit;