#!/usr/bin/perl #入力を整理。なければショートカットして表示へいくす。 #################################################### unless($ENV{QUERY_STRING} eq ""){ @arg = split /&/,$ENV{QUERY_STRING}; foreach(@arg){ ($key,$val) = split /=/; $arg{$key} = $val; } } @read = split /s/,$arg{card}; @huda = split /s/,$arg{huda}; #解答なしなら、100枚の読み札と取り札と開始時刻を発行。 #################################################### if($arg{ans} eq ""){ @read = &hiki(100,100); @huda = &hiki(100,100); $time = time; $title="百人一首。華の饗宴"; } #解答があれば答あわせ。正解なら読み札を一枚減らす。 #全部済んだらendingになだれこむ。 ################################################# else{ if($arg{ans} eq @read[0]){ @huda = &delpoint(@read[0],@huda); shift @read; $title="おみごと。つぎのうた。"; if($#read == -1){ $starttime = $arg{time}; $endtime = time; &ending($starttime,$endtime); } }else{ $title="おてつき。やりなおし。"; } $time = $arg{time}; } #読み札と取り札の配列を変数に直す。そのままプリントしてもいいような気もする。 ###################################################################### for(@read){ $reads = $reads."s".$_; } $reads =~ s/^s//; for(@huda){ $hudas = $hudas."s".$_; } $hudas =~ s/^s//; $card{0} = '秋の田のかりほの庵の苫をあらみわが衣手は露にぬれつつ。'; $card{1} = '春過ぎて夏来にけらし白妙の衣ほすてふ天の香具山。'; $card{2} = 'あしびきの山鳥の尾のしだり尾のながながし夜をひとりかもねむ。'; $card{3} = '田子の浦に打ち出でてみれば白妙の富士の高嶺に雪はふりつつ。'; $card{4} = '奥山に紅葉ふみわけ鳴く鹿の声きく時ぞ秋は悲しき。'; $card{5} = 'かささぎの渡せる橋に置く霜の白きを見れば夜ぞふけにける。'; $card{6} = '天の原ふりさけ見れば春日なる三笠の山に出でし月かも。'; $card{7} = 'わが庵は都のたつみしかぞすむ世をうぢ山と人はいふなり。'; $card{8} = '花の色はうつりにけりないたづらにわが身世にふるながめせしまに。'; $card{9} = 'これやこの行くも帰るも別れては知るも知らぬも逢坂の関。'; $card{10} = 'わたの原八十島かけてこぎ出ぬと人には告げよあまのつり舟。'; $card{11} = '天つ風雲のかよひ路吹きとぢよ乙女のすがたしばしとどめむ。'; $card{12} = '筑波嶺の峯より落つるみなの川恋ぞつもりて淵となりぬる。'; $card{13} = 'みちのくのしのぶもじすり誰故に乱れそめにし我ならなくに。'; $card{14} = '君がため春の野に出でて若菜つむわが衣手に雪はふりつつ。'; $card{15} = '立ち別れいなばの山の峯に生ふるまつとしきかば今かへりこむ。'; $card{16} = '千早ぶる神余もきかず龍田川からくれないに水くくるとは。'; $card{17} = '住之江の岸による波よるさへや夢の通ひ路人目よくらむ。'; $card{18} = '難波潟みじかき芦のふしのまもあはでこの世を過ぐしてよとや。'; $card{19} = 'わびぬれば今はた同じ難波なる身をつくしても逢はむとぞ思ふ。'; $card{20} = '今来むといひしばかりに長月の有明の月を待ち出でつるかな。'; $card{21} = '吹くからに秋の草木のしをるればむべ山風を嵐といふらむ。'; $card{22} = '月見れば千々に物こそ悲しけれわが身ひとつの秋にはあらねど。'; $card{23} = 'このたびは幣もとりあへず手向山紅葉のにしき神のまにまに。'; $card{24} = '名にしおはば逢坂山のさねかずら人にしられでくるよしもがな'; $card{25} = '小倉山峰のもみじ葉心あらば今ひとたびのみゆきまたなむ'; $card{26} = 'みかの原わきてがながるる泉川いつ見きとてか恋しかるらむ'; $card{27} = '山里は冬ぞさびしさまさりける人めも草もかれぬとおもへば'; $card{28} = '心あてに折らばや折らむ初霜のおきまどはせる白菊の花'; $card{29} = '有明のつれなくみえし別れより暁ばかりうきものはなし'; $card{30} = '朝ぼらけ有明の月とみるまでに吉野の里にふれる白雪'; $card{31} = '山川に風のかけたるしがらみは流れもあへぬ紅葉なりけり'; $card{32} = '久方の光のどけき春の日にしづ心なく花のちるらむ'; $card{33} = '誰をかも知る人にせむ高砂の松もむかしの友ならなくに'; $card{34} = '人はいさ心も知らずふるさとは花ぞむかしの香に匂ひける'; $card{35} = '夏の夜はだ宵ながら明けぬるを雲のいづくに月やどるらむ'; $card{36} = '白露を風のふきしく秋の野はつらぬきとめぬ玉ぞちりける'; $card{37} = '忘らるる身をば思はず誓ひてし人の命の惜しくもあるかな'; $card{38} = '浅茅生の小野の篠原忍ぶれどあまりてなどか人の恋しき'; $card{39} = '忍ぶれど色に出でにけりわが恋は物や思ふと人の問ふまで'; $card{40} = '恋すてふ我が名はまだき立ちにけり人しれずこそ思ひそめしか'; $card{41} = 'ちぎりきなかたみに袖をしぼりつつ末の松山波こさじとは'; $card{42} = '逢ひ見ての後の心にくらぶればむかしは物を思はざりけり'; $card{43} = '逢ふことの絶えてしなくは中々に人をも身をも恨みざらまし'; $card{44} = 'あはれともいふべき人は思ほえで身のいたづらになりぬべきかな'; $card{45} = '由良のとをわたる舟人かぢをたえ、行く方もしらぬ恋の道かな'; $card{46} = '八重むぐらしげれる宿のさびしきに人こそ見えね秋は来にけり'; $card{47} = '風をいたみ岩うつ波のおのれのみくだけて物をおもふ頃かな'; $card{48} = 'みかき守衛士のたく火の夜はもえ昼は消えつつ物をこそおもへ'; $card{49} = '君がため惜しからざりし命さへながくもがなとおもひけるかな'; $card{50} = 'かくとだにえやはいぶきのさしも草さしもしらじなもゆる思ひを'; $card{51} = '明けぬれば暮るるものとは知りながらなほ恨めしき朝ぼらけかな'; $card{52} = 'なげきつつひとりぬる夜の明くる間はいかに久しきものとかは知る'; $card{53} = '忘れじの行末までは難ければ今日を限りの命ともがな'; $card{54} = '滝の音は絶えて久しくなりぬれど名こそ流れてなほ聞こえけれ'; $card{55} = 'あらざらむこの世の外の思ひ出に今ひとたびの逢ふこともがな'; $card{56} = 'めぐりあひて見しやそれともわかぬ間に雲がくれにし夜半の月かげ'; $card{57} = 'ありま山猪名の笹原風吹けばいでそよ人を忘れやはする'; $card{58} = 'やすらはで寝なましものを小夜更けてかたぶくまでの月を見しかな'; $card{59} = '大江山いく野の道のとほければまだふみも見ず天の橋立'; $card{60} = 'いにしへの奈良の都の八重桜今日九重に匂いぬるかな'; $card{61} = '夜をこめて鳥の空音ははかるともよにあふさかの関はゆるさじ'; $card{62} = 'いまはただ思ひ絶えなむとばかりを人づてならでいふよしもがな'; $card{63} = '朝ぼらけ宇治の川ぎりたえだえにあらはれわたるぜぜの網代木'; $card{64} = 'うらみわびほさぬ袖だにあるものを恋に朽ちなむ名こそ惜しけれ'; $card{65} = 'もろともに哀れと思へ山桜花よりほかに知る人もなし'; $card{66} = '春の夜の夢ばかりなる手枕にかひなく立たむ名こそ惜しけれ'; $card{67} = '心にもあらで憂き世にながらへば恋しかるべき夜半の月かな'; $card{68} = 'あらし吹く三室の山のもみぢ葉は龍田の川のにしきなりけり'; $card{69} = '寂しさに宿を立ち出でながむればいづこもおなじ秋の夕暮れ'; $card{70} = '夕されば門田の稲葉おとづれてあしのまろやに秋風ぞふく'; $card{71} = '音にきく高師の浜のあだ波はかけじや袖のぬれもこそすれ'; $card{72} = '高砂の尾の上の桜咲きにけり外山の霞たたずもあらなむ'; $card{73} = 'うかりける人をはつせの山おろしよはげしかれとは祈らぬものを'; $card{74} = '契りをきしさせもが露を命にてあはれことしの秋も去ぬめり'; $card{75} = 'わたのはらこぎいでて見れば久方の雲居にまがふおきつしらなみ'; $card{76} = '瀬をはやみ岩にせかるる滝川のわれても末に逢はむとぞ思ふ'; $card{77} = '淡路島かよふ千鳥のなく声にいく夜寝覚めぬすまの関守'; $card{78} = '秋風にたなびく雲のたえまよりもれ出づる月のかげのさやけさ'; $card{79} = '長からむ心もしらず黒髪のみだれてけさは物をこそ思へ'; $card{80} = 'ほととぎす鳴きつる方を眺むればただ有明の月ぞのこれる'; $card{81} = '思ひわびさても命はあるものを憂きに堪えぬはなみだなりけり'; $card{82} = '世の中よ道こそなけれ思ひ入る山の奥にも鹿ぞ鳴くなる'; $card{83} = 'ながらへばまたこの頃やしのばれむ憂しと見し世ぞ今は恋しき'; $card{84} = '夜もすがら物思ふ頃は明けやらぬねやのひまさへつれなかりけり'; $card{85} = 'なげけとて月やは物を思はするかこちがほなるわがなみだかな'; $card{86} = 'むらさめの露もまだひぬまきの葉に霧立ちのぼる秋の夕暮れ'; $card{87} = '難波江の芦のかりねの一夜ゆへ身をつくしてや恋わたるべき'; $card{88} = '玉の緒よ絶えなば絶えねながらへばしのぶることのよはりもぞする'; $card{89} = '見せばやな雄島のあまの袖だにもぬれにぞぬれし色はかはらず'; $card{90} = 'きりぎりす鳴くや霜夜のさむしろに衣かたしきひとりかも寝む'; $card{91} = 'わが袖は潮干に見えぬ沖の石の人こそ知らねかはくまもなし'; $card{92} = '世の中はつねにもがもななぎさこぐあまの小舟の綱手かなしも'; $card{93} = 'みよしの野の山の秋風さよふけてふるさとさむく衣うつなり'; $card{94} = 'おほけなくうき世の民におほふかなわがたつそまに墨染の袖'; $card{95} = '花さそふあらしの庭の雪ならでふりゆくものはわが身なりけり'; $card{96} = 'こぬ人をまつほの浦の夕凪にやくやもしほの身もこがれつつ'; $card{97} = '風そよぐならの小川の夕暮れはみそぎぞ夏のしるしなりける'; $card{98} = '人も惜し人も恨めしあぢきなく世を思ふゆゑにもの思ふ身は'; $card{99} = '百敷や古き軒端のしのぶにもなほあまりあるむかしなりけり'; $ans{0} = "
"; $ans{1} = "
"; $ans{2} = "
"; $ans{3} = "
"; $ans{4} = "
"; $ans{5} = "
"; $ans{6} = "
"; $ans{7} = "
"; $ans{8} = "
"; $ans{9} = "
"; $ans{10} = "
"; $ans{11} = "
"; $ans{12} = "
"; $ans{13} = "
"; $ans{14} = "
"; $ans{15} = "
"; $ans{16} = "
"; $ans{17} = "
"; $ans{18} = "
"; $ans{19} = "
"; $ans{20} = "
"; $ans{21} = "
"; $ans{22} = "
"; $ans{23} = "
"; $ans{24} = "
"; $ans{25} = "
"; $ans{26} = "
"; $ans{27} = "
"; $ans{28} = "
"; $ans{29} = "
"; $ans{30} = "
"; $ans{31} = "
"; $ans{32} = "
"; $ans{33} = "
"; $ans{34} = "
"; $ans{35} = "
"; $ans{36} = "
"; $ans{37} = "
"; $ans{38} = "
"; $ans{39} = "
"; $ans{40} = "
"; $ans{41} = "
"; $ans{42} = "
"; $ans{43} = "
"; $ans{44} = "
"; $ans{45} = "
"; $ans{46} = "
"; $ans{47} = "
"; $ans{48} = "
"; $ans{49} = "
"; $ans{50} = "
"; $ans{51} = "
"; $ans{52} = "
"; $ans{53} = "
"; $ans{54} = "
"; $ans{55} = "
"; $ans{56} = "
"; $ans{57} = "
"; $ans{58} = "
"; $ans{59} = "
"; $ans{60} = "
"; $ans{61} = "
"; $ans{62} = "
"; $ans{63} = "
"; $ans{64} = "
"; $ans{65} = "
"; $ans{66} = "
"; $ans{67} = "
"; $ans{68} = "
"; $ans{69} = "
"; $ans{70} = "
"; $ans{71} = "
"; $ans{72} = "
"; $ans{73} = "
"; $ans{74} = "
"; $ans{75} = "
"; $ans{76} = "
"; $ans{77} = "
"; $ans{78} = "
"; $ans{79} = "
"; $ans{80} = "
"; $ans{81} = "
"; $ans{82} = "
"; $ans{83} = "
"; $ans{84} = "
"; $ans{85} = "
"; $ans{86} = "
"; $ans{87} = "
"; $ans{88} = "
"; $ans{89} = "
"; $ans{90} = "
"; $ans{91} = "
"; $ans{92} = "
"; $ans{93} = "
"; $ans{94} = "
"; $ans{95} = "
"; $ans{96} = "
"; $ans{97} = "
"; $ans{98} = "
"; $ans{99} = "
"; print << "HEAD"; Content-Type: text/html;charset=Shift_JIS $title $card{$read[0]}

$title

ゲームはブックマークにいれれば、途中セーブできます。一度に百首もやってらんないす。


今回のお歌

HEAD $rest = $#huda + 1; print "のこり枚数$rest\n"; print "

"; print "$card{$read[0]}\n"; print ""; print "

"; print "
"; for(@huda){ print "$ans{$_}\n"; } print "
"; print <<"END";
[Home] [目次]
END exit; #sub hiki #(a,b) 0からaまでの数字から、bこのランダムな別々の数字を選びとるおみくじ関数。 ##################################################################### sub hiki { my $all = @_[0]; my $end = @_[1] -1; my $element; my @output; my @card; for(0..$all){ $card[$_]=$_; } for(0 .. $end){ $ran = int(rand($all - $_)); $element = $card[$ran]; splice(@card,$ran,1); @output = (@output,$element); } @output } #sub delpoint #(a,@arr) 配列@arrからaと同じ要素を削除する関数。 ################################################# sub delpoint { my $refer = shift @_; foreach(0..$#_){ if(@_[$_] == $refer){ splice(@_,$_,1); } } @_ } #sub ending #本プログラムのエンディングシーン。 ################################################################# sub ending { $time = @_[1] - @_[0]; $hour = 0; $hour = int($time / 3600); $min = $time % 3600; $sec = $min % 60; $min = int($min /60); $ID = time; $date = localtime; open LOG ,">>100nin.log"; print LOG "$time&$ID&$date\n"; close LOG; open DATA ,"100nin.log"; while(){ split /&/; $score{@_[1]} = @_[0]; $dated{@_[1]} = @_[2]; } close DATA; @rankin = sort{$a <=> $b;}(values %score); # $,=","; # print '@rankin'; # print @rankin; # $,=""; $i = 0; foreach(@rankin){ $i++; foreach $num (keys %score){ if( $score{$num} == $_ ){ $message .= "$i 位 $score{$num} 秒 記録日 $dated{$num}
"; } } if($_ == $score{$ID}){ $prize = $i ; break; } } print << "EOF"; Content-Type: text/html おみごと。100首完成。

おみごと。100首完成。

あなたの所要時間は$hour時間$min分$sec秒でした。

あなたの順位は$prize位です。

$message

記念にコメントなどよろしく
お名前:

完走の感想

EOF open COM, "log.log"; while(){ print $_; } close COM; print <<"EOF2";

[Home] [目次]
EOF2 exit; }