#!/usr/local/bin/perl5 # # お言葉付きおみくじ ver1.00 # by まかまか般若波羅蜜 http://www2u.biglobe.ne.jp/~hannya/ # #1999/06/23 おみくじ # 06/25 修飾語の追加 # 07/29 プログラムを大幅に変更 # 07/31 汎用性を持たせる # 09/07 ver1.00 cookieを加え公開できるように修正 # 08 ver1.01 cookieの処理に若干修正 # # 自由に改造して結構ですが、その際にはオリジナルの著作権が # まかまか般若波羅蜜にあることを明記して下さい。 # 当スクリプトの使用によって生じたいかなる結果に対しても # 作者は責任を負いかねますのでご了承ください。 # #---------------------------------------------------------------- # 設定項目 全角は「''」「""」の中のみ可 #--------------------ページのデザイン---------------------------- $title = 'おみくじビスケット'; #タイトル $title_col = "#999999"; #タイトルカラー $body[0] = "#000000"; #背景色 $body[1] = "#DDDDDD"; #テキスト色 $body[2] = "#44DDFF"; #リンク色 $body[3] = "#FF4488"; #既リンク色 $modoru = './index.html'; #戻るときのページ $width = '640'; #画面の横幅 #-------------------------お言葉の設定--------------------------- $okotoba = '本日のお言葉'; #お言葉の題 $okotoba_col = "#DD0088"; #お言葉の色 $okotoba_siz = 5; #お言葉の字の大きさ #---------------------------------------------------------------- #------日本語として意味の通るようなメッセージパターン------------ # _K = 感嘆、呼びかけ、前置き _S = 名詞 _V = 動詞 _A = 修飾語 #---------------------------------------------------------------- # 下のを参考にして記述してみて下さい # #----------------------------------------------------------------- $mes[0] = '_K_A_Sが_V時
_A_Sは_V。'; $mes[1] = '_Vのは_S。
だが_A_Sは_Vはずだ!'; $mes[2] = '_A_Sよ!
_Sと_A_Sが_V。'; $mes[3] = '_Kもしも_A_Sが_Vならば
_A_Sは_Vだろう。'; $mes[4] = '_K_A_Sが_V時
_A_Sは_Sとなる。'; $mes[5] = '_K_A_Sが_Vことはなくとも
_A_Sは_Vことだろう。'; $mes[6] = '_K_Sは_S。
それは_A_Sが_V時に。'; $mes[7] = '_K_A_S、_Sになる時
_Sとともに_V。'; $mes[8] = '_K_Sが_A_Sになるとすれば
なるほど_Sは_V。'; $mes[9] = '_Kよもや_Sが_Sになるとは!
いやむしろ_Vのは_S。'; $mes[10] = '_Kたとえ_Sが_Sになるとも
_A_Sは_V。'; $mes[11] = '_K_Sが_Sになる時
_A_Sは_Vだろう。'; $mes[12] = '_A_Sは_Vのだろうか?
いや_Vのは_Sのはず…'; $mes[13] = '_Vなんて!
_K_Sですら_Vのに…'; $mes[14] = '人は「_Sが_V」と言う
しかし_Sなら_Vはずもない'; $mes[15] = '_Vよ、_A_Sは。
それなのに…_A_Sのほうは_Vのか!'; $mes[16] = '_A_Sは知っている。
_Sが_Sであるということを。'; $mes[17] = '_Sよ! _Sよ!
_K_Vのだ!'; #---------------------------------------------------------------- #---------------------単語:半角スペースで区切る----------------- #名詞 @SYUGO=qw|お寺の鐘 朝焼け 闇夜 イバラの道 汝 汝 かの者 大きな桃 一杯のお茶漬け 遊園地のぬいぐるみ 孤高の僧侶 便利な巾着袋 塩じゃけ 真昼のアスパラガス ホットなやかん 愛媛のみかん 津軽の林檎 トマトとキュウリ 空飛ぶ座布団 めくるめく世界 お魚くわえたサ○エさん トロツキー夢の大地 今日の夢 太平洋のメリケン粉 誰か 淋しいプレーンヨーグルト 午後のお茶会 月の砂漠 その乙女 陳腐な歌詞 歌を忘れた蝶々 陽気なバーテンダー みすぼらしい犬 壁に書かれた落書き 皇帝の軍団 予 そなたら さまよえる旅人 ベジタリアンの飛び魚|; #動詞 @JUTUGO=qw|開かれる 音を立てて崩れる 咲く ラー油をちょっと入れる 全部ボストンバッグに入る 海の藻屑と消える 謎を残す 真空飛び膝けりをかます メラメラと燃える 大声で叫ぶ そうじきをかける 悪態をつく 遠くで聞こえる 日に焼ける もう一杯追加した クルクルと踊る 漬け物をつける 忍法金縛りをかけた 縄で捕まえた 北風を吹かせる その者の名を呼んだ ご機嫌麗しい 銀の鈴を持ち歩く 真実を語る 手をさしのべる 全てを放棄する 闘い抜く 祈り続ける 月に向かって吠える 忘れられない 微笑みかける 求め続ける ジグザグに歩く 大海を渡る|; #修飾語 @SYUUSYOKU=qw|大いなる 小さき 全ての 一部の 静かなる 怒れる わずかばかりの 偉大なる 美しき 優しき 名状しがたき|; #感嘆、前置き @KANTAN = qw|嗚呼! 嗚呼… 賢者曰く、 先達は記す。 備えよ! そうだ!|; #---------------------------------------------------------------- #--------------------------運勢色々------------------------------ $unsei[0] = '健 康'; #以下、番号を増やしていけばよい $unsei[1] = '仕 事'; $unsei[2] = '金 運'; $unsei[3] = '恋 愛'; $hosi_col = "#DD0088"; #★の色 $unsei_col = "#999999"; #運勢の文字色 $unsei_siz = 5; #文字の大きさ #---------------------------その他-------------------------------- $cookie = 1; # 1日一回しか引けないようにする(0の時無効) $closed = "おみくじは一日一回"; #1日2回以上引こうとした時 $test = 0; # 0を1にするとお言葉を連続50個再生。テスト用。 #----------------------------------------------------------------- #-----------------------設定はここまで---------------------------- #----------------------------------------------------------------- srand(time ^ ($$ + ($$ << 15))); $thisver = '1.01'; $max_henkan = 8; #文字変換の最大数 途中で変換されないときは #この値を大きくしてください $cookies = $ENV{'HTTP_COOKIE'}; if( ($cookies =~ /DATA=omikuji/) && $cookie){ &header; print <
$closed
HTML } else{ &cookiesend if($cookie); &header; if($test){ for(0..50){ &okotoba } } else{&okotoba} &unsei; } &footer; #------------------------------------------------------- #------------------------------------------------------- sub okotoba{ my $i = 1; $mes = $mes[int(rand(@mes))]; while($mes =~ /_K/){ $K =""; if(int(rand(10))>4){ $K= $KANTAN[int(rand(@KANTAN))] } $mes =~ s/_K/$K/; $i++; if($i >$max_henkan){last} } while($mes =~ /_S/){ $S= $SYUGO[int(rand(@SYUGO))]; $mes =~ s/_S/$S/; $i++; if($i >$max_henkan){last} } while($mes =~ /_V/){ $V= $JUTUGO[int(rand(@JUTUGO))]; $mes =~ s/_V/$V/; $i++; if($i >$max_henkan){last} } while($mes =~ /_A/){ $A = ""; $A = $SYUUSYOKU[int(rand(@SYUUSYOKU))] if(int(rand(10))>4); $mes =~ s/_A/$A/; $i++; if($i >$max_henkan){last} } print <
$okotoba

$mes



HTML } #--------------------------------------------------- sub unsei{ my $index_unsei = $#unsei; my $max_hosi; my $p; return if($index_unsei==0); for(0..$index_unsei){ $hosi[$_] = "★"; $p = int(rand(100)); #星の数の確率 if($p>=25 && $p<55) {$hosi[$_] x= 2} elsif($p>=55 && $p<80){$hosi[$_] x= 3} elsif($p>=80 && $p<95){$hosi[$_] x= 4} elsif($p>=95) {$hosi[$_] x= 5} } print <
HTML for(0..$index_unsei){ $i = $_; print qq||; print qq|$unsei[$_] |; print qq||; print qq|$hosi[$_]
|; } print <
HTML } #--------------------------------------------- sub header{ print "Content-type: text/html\n\n"; print < $title
$title

HEAD } sub footer{ print <
おみくじ $thisver by まかまか般若波羅蜜
FOOTER exit; } #--------------------------------------------------------------- #---------------------クッキーの送信---------------------------- sub cookiesend{ $expires = &expires(18); # 有効期限、単位当たり1時間 print "Set-Cookie: "; print "DATA=omikuji; "; print "expires=$expires; \n"; } #--------------------------------------------------------------- sub expires{ my($addtime) = shift; my(@date); my(@week) = ("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"); local(@month) = ("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"); @date = gmtime(time + $addtime*60*60); $date[5] += 1900; foreach(0..3){$date[$_] = sprintf("%.2d",$date[$_])} "$week[$date[6]], $date[3]-$month[$date[4]]-$date[5] $date[2]:$date[1]:$date[0] GMT"; } #---------------------------------------------------------------