#!/usr/bin/perl $script = './puzzle.cgi'; # このスクリプトのファイル名 $home = '../index.html'; # 戻る先 $image = './image'; # 画像データフォルダ $title = "スライドパズル"; # ページタイトル $text = "#000000"; # 文字色 $link = "#990000"; # リンク色(未訪問) $vlink = "#660000"; # リンク色(訪問済) $alink = "#6666FF"; # リンク色(訪問中) $backcolor = "#FFFFFF"; # 背景色 $backpic = ""; # 壁紙(使用しない場合は'') $waku = "#ffcc00"; # 外枠の色 $piece = "#ffffff"; # 各ピースの境の色 $spacecolor = "#ffffff";# 空白部分の色 ### パズルをクリアーした際のメッセージ↓(『$clear = <<"_HTML_";』と『_HTML_』は消さないでそのまま。タグを使えます。) $clear = <<"_HTML_"; おめでとうございます! _HTML_ ### メッセージ(ここまで)↑ $difficulty = 100; # 難易度設定([100]から[800]ぐらいまで) ####### 初期設定ここまで ##################### $buffer = $ENV{'QUERY_STRING'}; @pairs = split(/&/,$buffer); foreach $pair (@pairs) { ($name, $value) = split(/y/, $pair); $FORM{$name} = $value; } $in = $FORM{'in'}; $mm = $FORM{'mm'}; if ($mm eq "") { $table = "abcdzefghzijklzmno0z"; srand; for ($i = 0; $i < $difficulty; $i++) { $move = int(rand(4)+1); &move($move); } } else { $table = $in; $move = $mm; &move($move); } print "Content-type: text/html\n\n"; print <<"_HTML_"; $title _HTML_ if ( $table eq "abcdzefghzijklzmno0z" ) { $check = 1; print <<"_HTML_";
Slide Puzzle


$clear


_HTML_ } else { print <<"_HTML_";
Slide Puzzle



_HTML_ } foreach $ii (split(//, $table)) { if ($ii eq "z") { print "\n"; } elsif ($ii eq "0" && $check) { print "\n"; } elsif ($ii eq "0") { print "\n"; } else { if ($table =~ /$ii....0/) { print "\n"; } elsif ($table =~ /0$ii/) { print "\n"; } elsif ($table =~ /0....$ii/) { print "\n"; } elsif ($table =~ /${ii}0/) { print "\n"; } else { print "\n"; } } } print <<"_HTML_";

[ やり直す ]

[ 完成イメージ ]
++WEBC-PUZZLE++
_HTML_ sub move { local($move) = @_; if ($move == 1) { $table =~ s/(.)(....)0/0${2}${1}/; } elsif ($move == 2) { $table =~ s/0([a-p])/${1}0/; } elsif ($move == 3) { $table =~ s/0(....)(.)/${2}${1}0/; } elsif ($move == 4) { $table =~ s/([a-p])0/0${1}/; } }