雨谷の日和

過去20年で2,700を超えるアニメの第1話だけは見続けた僕のお勧めアニメがハズレなはずがない

ボヤキ - ゲーム

人狼BBS作成日記49

さて、いよいよ投票とかを実装してみたいと思います。 基本的な方針として、ログファイルは追記モードでログを増やして行くので、投票とかもそういうデータフォーマットで指定するように考えてみます。 今は発言用とシステムメッセージ用のコードしか無いの…

人狼BBS作成日記48

ということで、今までの変更結果を置いておきます。 →ログファイル →ソースコード →実行結果(※実際には入力できないように機能をオフにしてあります) データのフォーマットの変更がメインだったので、あまり見た目の変化はありませんね。 さて、次はこれに…

人狼BBS作成日記47

昨日のメインルーチンから呼び出されるサブルーチンを一応掲載します。 まずはヘッダーとフッター。 sub STDOUT_HEADER { print "Content-type: text/html\n\n"; print "<html><head><title>人狼BBS - $Vil_Name</title>\n"; print "<link rel=\"stylesheet\" type=\"text/css\" href=\"$Vil_Css\">\n"; print "</head><body class=\"mode01\">\n"; print "<center></center></body></html>

人狼BBS作成日記46

さて、HTMLの出力側も整理してみました。 各部分の出力をサブルーチン化して、メインの流れを分かりやすくすると、以下のようになりました。 sub STDOUT_HTML { &STDOUT_HEADER; &STDOUT_DAY_LIST( "header" ); for($index = 0 ; $index < @Msg_Line; $index…

人狼BBS作成日記45

データフォーマットを変更したので、読み込み部分にも改変を。 sub FILEIN_MSG { if( open( LOGFILE, "<./msg.txt" ) ){ flock( LOGFILE, 1 ); $line = <LOGFILE>; $line =~ s/\r//g; ($Vil_Name, $Vil_Img, $Vil_Css) = split( /<>/, $line); $Day_Count = $Query_Tb</logfile>…

人狼BBS作成日記44

さて、データフォーマットの方にも手を入れます。 追記モードだけでデータを作るのであれば、一行目に現時点の日付とキャラクター人数を入れておくのは不味いですね。 ということで、これらを排除しないといけません。 ただ、そうするとキャラクターのデータ…

人狼BBS作成日記43

さて、そろそろデータフォーマットとかの見直しを考えたいと思います。 まずは、ログインしたプレイヤーごとに見えるメッセージや出来る操作を切り分けしたいですね。 ということは、キャラクターのデータとして、メモリ上に役職や生死のフラグを持つ必要が…

人狼BBS作成日記42

例によってスクリプトとかを置いときます。 →ログファイル →ソースコード →実行結果(※実際には入力できないように機能をオフにしてあります) タイプごとのメッセージ(人狼の囁きとか霊話とか)でもほとんど同じように入力できてしまいますね。ただ、実際…

人狼BBS作成日記41

タイプ別の入力フォームは、hidden で埋め込んでいるmode パラメータを変えることで判別すれば良いだろう。 ただ、見た目的に色々と考えないと誤入力なども懸念されるから、そこら辺も工夫したいところです。 ということで、以下のようにしてみます。 sub ST…

人狼BBS作成日記40

実際のスクリプトとかを置いときますね。 →ログファイル →ソースコード →実行結果(※実際には入力できないように機能をオフにしてあります) これで基本的な入力方法まではできたことにします。あとは、投票とか襲撃設定とかをどのように入力させるかとか、…

人狼BBS作成日記39

今度はFILEOUT_MSG の説明を。 sub FILEOUT_MSG { $temp = "$Day_Count_Max<>$Query_Tbl{'mode'}<>0<>$Time_Stamp<>$Query_Tbl{'msg'}\n"; open( LOGFILE, ">>./msg.txt"); flock( LOGFILE, 2 ); print LOGFILE $temp; close( LOGFILE ); }一行目で、メモリ…

人狼BBS作成日記38

今日はSYSIN_TIME についてをまず。 入力した発言については、その書き込みの時間を記録しておくべきだと私は思っています。発言の流れの確認、間隔の確認は、人狼BBSでの一つの醍醐味だと思うからです。 ということで、SYSIN_TIME はその入力時間をTime_…

人狼BBS作成日記37

さて、今日からは発言のための入力方法の実装に入ることにします。 まずは、入力用のフォームをHTMLに追加しないといけませんね。こんな感じでしょうか。 print "<form method=\"POST\" action=\"$Cgi_Main\">\n"; print "<input type=\"hidden\" name=\"mode\" value=\"01\">\n"; print "<textarea cols=\"60\" rows=\"5\" name=\"msg\" wrap=\"off\"></textarea><br>\n"; print "</form>

人狼BBS作成日記36

ということで、いつものようにここまでで出来たものの実例を。 →ログファイル →ソースコード →実行結果 1〜3日目を表示することが出来るようになってます。メッセージ内容はでたらめなので、あまり気にしないで下さい。 一応、1〜3日目以外の不正な日付…

人狼BBS作成日記35

さて、日付を渡す方法はとりあえずGETを使うことにします。 ページのリンクとして、以下のようなURLを使えば良いでしょう。 http://www.hoge.jp/jinro.cgi?day=1上記であれば1日目のログを表示させるという感じです。 ただ、それだけだと、もしもdayパラメ…

人狼BBS作成日記34

ということで、今までのを合体させて、サブルーチンにするとこんな感じ? sub STDIN_QUERY_STRING { if( $ENV{'REQUEST_METHOD'} eq "POST" ){ read( STDIN, $query, $ENV{'CONTENT_LENGTH'} ); }else{ $query = $ENV{'QUERY_STRING'}; } @pairs = split( /&…

人狼BBS作成日記33

さて、パラメータを切り分けて使う際の注意点とともに、その為の処理を考えてみます。 まず、URL encoding の問題があります。 通常、ホームページのアドレスであるURLには、使える文字についての制限があります。半角英数字しか使えないというような感じの…

人狼BBS作成日記32

受け取ったパラメータは、先日も書いたように、以下のような形で渡されます。 date=20040929&name=Alice従って、今度はこれを使い易いように切り分けないといけないわけです。 ということで、以下のようにして連想配列に格納してみます。 @pairs = split( /&…

人狼BBS作成日記31

さて、ではGETやPOSTで送られてきたパラメータを、サーバ側のプログラムで受け取る場合にどうするかを見てみます。 まずはソースコードから。 if( $ENV{'REQUEST_METHOD'} eq "POST" ){ read( STDIN, $query, $ENV{'CONTENT_LENGTH'} ); }else{ $query = $EN…

人狼BBS作成日記30

ということで、次はクライアントからの入力を捌く方法を考えるわけです。 まずは、CGIの基礎のおさらいから。 HTTPは基本的に、サーバに置かれているデータをクライアントにダウンロードするだけの通信手順を規定したものでした。しかし、それだけだと何…

人狼BBS作成日記29

日付別に表示する場合のものを動かしてみます。 →ログファイル →ソースコード →実行結果:1日目、2日目 ソースコードの以下の部分が、表示する日付を指定しています。 $Day_Count = 2;上記だと、2日目を表示するわけですね。この数字を「1」にすれば、1…

人狼BBS作成日記28

日付をデータ行の先頭に付与したので、読み込み部分をそれに対応させてみましょう。 sub FILEIN_MSG{ if( open( LOGFILE, "<./msg.txt" ) ){ flock( LOGFILE, 1 ); ($Char_Count, $Vil_Img, $Vil_Css) = split( /<>/, <LOGFILE> ); for($index = 0 ; $index < $Char_C</logfile>…

人狼BBS作成日記27

さて、人狼BBSにはゲーム日付があります。 1日目、2日目という奴ですね。 ゲームの進行が1日単位ということで、それぞれの発言は別途に扱う必要があるわけです。 ということで、ログデータに日付を付与してみます。 こんな感じでしょうか。 3<>../resourc…

人狼BBS作成日記26

読み込みのフォーマットを変えたものをうpしておきます。 →ログファイル →ソースコード →実行結果 いやまあ、見た目は前のものと全く同じわけですが……。 次は、日付ごとに表示する方法を考えてみることにします。

人狼BBS作成日記25

あー、プログラムのソースコードを見るのも久しぶりですねー。 ということで、人狼BBS作成日記19では「出力側はほとんど同じなので、説明は割愛します」とか書きましたが、思い出しついでに説明します。 読み込んだ変数の格納の仕方が異なるので、出力…

人狼BBS作成日記24

社交型の職業別特性。 1、占い師 社交型の占い師は、周りから信じてもらえることが多い。ただ、占い先の選び方が非常にヌルいので、いつまでたっても人狼を見つけられないことも多い。うまくステルスした人狼の誘導にひっかかると、村を滅ぼしてしまう。 2…

人狼BBS作成日記23

論理型の職業別特性。 1、占い師 占い師になった論理型は、全く役に立たない。その論理の使いどころが無いからだ。そもそも占い師という存在自体が、論理型にとっての手がかりそのものなのだから、自分が占い師になってしまった論理型は途方に暮れる他無い…

人狼BBS作成日記22

今度は推理型の職業別特性。 1、占い師 推理型の占い師は、村人の意見に従う傾向がある。状況証拠的に、自分に不利になるようなことはほとんどしない。占いのヒットは村人次第になるので、白確定がどんどん増える傾向にある。信じられやすく、最も無難な占…

人狼BBS作成日記21

直感型の職業別特性とか。 1、占い師 序盤でぽんぽんと人狼を引き当てる恐ろしい占い師になる。でも、誰にも信じてもらえない。「なんであの人を占ったの?」という問いに「勘だよ勘」とか返すから。大抵、狂人の偽占い師の方が信じられて、途中で吊られた…

人狼BBS作成日記20

作成日記は厳密にはお休みなので、人狼BBSでのプレイヤーに関する考察でも書いときます。 私は、人狼プレイヤーを以下の4タイプに分類して、行動予測をしています。 1、直感型 直感直感で、情報を切り分けていくタイプですね。判断が早く、情報の少ない序…