雨谷の日和

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

ボヤキ - ゲーム

人狼BBS作成日記77

昨日の処理で集計した結果を、今度はHTMLに整形して出力します。 $temp = "$Day_Count_Max<>80<><>$Time_Stamp<>"; for($index = 0; $index < @Char_Alive_Index; $index++){ $temp = $temp."$Char_Name[ $Char_Alive_Index[$index] ]"; $temp = $temp."($C…

人狼BBS作成日記76

まずは投票の集計から見ていきましょう。 こんな感じになるでしょうか。 @Char_Vote_Temp = (); @Char_Alive_Index = (); for($index = 0; $index < @Char_Life; $index++){ if($Char_Life[$index] == 0){ push(@Char_Alive_Index, $index); } $Char_Vote_Te…

人狼BBS作成日記75

ようやくゲームっぽい話に移ることができますね。いやはや、何を私はのろのろと作っているのやら……。 ということで日付が変わるときの処理を考えていこうと思います。 まずは、日付が変わるときになにをすれば良いのかということの確認から。 ・投票集計 ・…

人狼BBS作成日記74

ようやく、ログインしたキャラクターでの表示の切り替えまで出来たので、公開しておきます。 →ログファイル →ソースコード →実行結果(※実際には入力できないように機能をオフにしてあります) さて、次は日付が変わるときの各処理を実装していきたいと思い…

人狼BBS作成日記73

次に、表示の切り替えを考えます。 占い設定の入力フォームや、襲撃設定の入力フォームなどは、ログインしたキャラクターが占い師や人狼の時だけ表示されれば問題ありません。 ということで、ログインしたときに表示する、入力フォームを役職ごとに切り替え…

人狼BBS作成日記72

こんどは入力時の、役職チェックについて考えてみます。 占い設定や襲撃設定といった、役職者の能力に関する入力は、占い師や人狼だけが可能になるようにする必要があると思います。 ですから、入力時にそのログインしているキャラクターの役職をチェックし…

人狼BBS作成日記71

役職の読み込みを考えてみます。 まず、役職を格納するための配列を用意しておきます。 @Char_Cast = ();この配列には、ログファイルの読み込み処理時「配役決定(55)」のデータ行を読み込んだときにその文字列(wolf、fortuneなど)を格納します。 以下の…

人狼BBS作成日記70

ログインの機能をつけたとはいうものの、そのログインしたキャラクターごとに処理の切り替えを行わなければ、あまり意味はないわけです。 ということで、処理の切り替えを考えることにしましょう。 ただ、処理を切り替えると言ってもそれぞれのキャラクター…

人狼BBS作成日記69

さて、とりあえずスクリプトを。 →ログファイル →ソースコード →実行結果(※実際には入力できないように機能をオフにしてあります) ログイン機能を付けたとは言っても、まだそれをもとに表示を切り替えたりとかは出来ていないので、次はその辺りのことを考…

人狼BBS作成日記68

ログイン/ログアウトの準備として、もう一つ、占いや霊能などの結果の保持を考えておきます。 結果を保持しておいて、何に使うかというと、今までに占った人や死んだ人などの判定を、画面に表示するのに使います。 まずは変数を。 @Result_Attack = (); @Res…

人狼BBS作成日記67

さて、ここまでのログイン/ログアウト関連の処理を組み込むことにします。 まず、入力してもらったキャラクター番号の値を受け取って、Cookie に放り込む場合と、ログアウトのときにCookie のデータをクリアする場合の、処理の分岐をメインルーチンに組み込…

人狼BBS作成日記66

ログアウトを考えてみましょう。 ログインしたときの情報はCookie に保存しますから、ログアウトの時にはその保存された情報をCookie から削除すればよいと考えます。 Cookie からデータを削除するには、以下のようにすれば良いでしょう。 sub CLEAR_COOKIE …

人狼BBS作成日記65

ログインのための内部的な仕組み(Cookieによる値の保持)については実装できましたので、今度は具体的にログインするための実装を進めます。 まずはログインするための入力フォームを考えます。 sub STDOUT_LOGIN_FORM { print "<div class=\"login\">\n"; print "<form method=\"POST\" action=\"$Cgi_Main\" class=\"login\">\n"; print "<input type=\"hidden\" name=\"mode\" value=\"login\">\n</form></div>…

人狼BBS作成日記64

Cookie に値をセットするには、HTTPのヘッダ部分に「Set-Cookie」という項目を追加することになります。具体的には、以下のようになります。 Set-Cookie: jinro=[key]:[value],[key]:[value],...サブルーチンとして書くなら、以下のようになるでしょうか。 s…

人狼BBS作成日記63

CookieのVALUEの文法を考えてみます。 あ、その前にNAMEを何にするかを決めておかないといけませんね。まあ、ここは手堅く「jinro」で良いでしょう。 jinro=[key]:[value],[key]:[value],〜,[key]:[value]上記のように、VALUEの部分にkey とvalue を複数埋め…

人狼BBS作成日記62

ログイン機能を実装するには「ログインしているか・していないか」を区別する方法を考える必要があります。 Sessionが使えるのであれば、それが一番良いんだろうとは思うのですが、独自に実装するのは面倒なので今回はやめておきます。多分、世の中にはSessi…

漫画「デスノート」と人狼ゲームの類似性

週刊少年ジャンプに連載中の「デスノート」と人狼ゲームとに類似性があるよね?という話題を時々見かけたりするので、ちょっと考察でもしてみようかなと。 まずはデスノートのルールから。 1、デスノートの持ち主は、相手の本名を知っていればそれを殺すこ…

人狼BBS作成日記61

いつものように、ここまでのスクリプトを置いておきます。 →ログファイル →ソースコード →実行結果(※実際には入力できないように機能をオフにしてあります) コマンドも入力だけはできるようになりました。ユーザ側の機能的には、これくらいになるのかな?…

人狼BBS作成日記60

さて、メインルーチンの方も見ておきましょう。 ここでコマンド入力もできるようにするので、入力系の処理分岐が増えます。 &SYSIN_TIME; &STDIN_QUERY_STRING; if( $Query_Tbl{'mode'} == 51){ if( $Query_Tbl{ 'msg' } ne "" ){ &FILEIN_MSG; &FILEOUT_VOT…

人狼BBS作成日記59

入力フォームで入力して頂いたコマンドは、ファイルにコマンド行として追記することになります。 投票コマンドの場合、以下のようになるでしょうか。 sub FILEOUT_VOTE { $temp = "$Day_Count_Max<>$Query_Tbl{'mode'}<>$Login_Index<>$Time_Stamp<>$Query_T…

人狼BBS作成日記58

では、襲撃の場合を見てみます。 sub STDOUT_ATTACK_FORM { print "<div class=\"cell\"><div class=\"char\">\n"; print "<img class=\"char\" src=\"$Char_Icon[$Login_Index]\" width=\"50\""; print "height=\"50\" alt=\"$Char_Name[$Login_Index]\"></div>\n"; print "<div class=\"name\">人狼の襲撃</div>\n"; print "</div>

人狼BBS作成日記57

では、投票するための入力フォームを考えてみましょう。 以下のような感じになるでしょうか。 sub STDOUT_VOTE_FORM { print "<div class=\"cell\"><div class=\"char\">\n"; print "<img class=\"char\" src=\"$Char_Icon[$Login_Index]\" width=\"50\""; print " height=\"50\" alt=\"$Char_Name[$Login_Index]\"></div>\n"; print "<div class=\"name\">$Char_Name[$…</div></div>

人狼BBS作成日記56

ここまでの結果を置いておきます。 →ログファイル →ソースコード →実行結果(※実際には入力できないように機能をオフにしてあります) 表示だけはできても、まだ入力ができないのであまり意味はありませんね。 まあ、内部的なデータ保持はできているので、あ…

人狼BBS作成日記55

さて、読み込んだデータをHTMLに出力することを考えてみます。 まずは各データごとに、出力用のサブルーチンを作ってみます。 ほとんど発言の出力と同じなので、襲撃設定の場合のサブルーチンを見てみましょう。 sub STDOUT_ATTACK { ($Msg_Date, $Msg_Type,…

人狼BBS作成日記54

次は、襲撃と処刑の場合について考えてみます。 ただ、まだ日付更新の実装を全く考えていないので、とりあえずデータを読み込むことだけを考えてみます。 襲撃と処刑で変わる状態はキャラクターの生死フラグということになると思います。 ですから、そのため…

人狼BBS作成日記53

さて、次は襲撃/占い/護衛のデータの読み込みを考えてみます。 まず、以下のようにデータを格納する変数を用意しておきます。 @Exec_Attack = (-1, -1); @Exec_Fortune = (-1, -1); @Exec_Guard = (-1, -1);これらは第二候補まで設定できないといけないので…

人狼BBS作成日記52

まずは投票から実装してみます。一番簡単そうなので。 最初に、各キャラクター毎の投票設定を格納するための変数を用意しておきます。 @Char_Vote = ();これに投票設定を読み込んでいくことになりますね。 読み込みルーチンは、以下のようにしてみました。 s…

人狼BBS作成日記51

さて、コマンドの割り当てが終わったので、今度はそれぞれのコマンドのデータとしてどういうものを持っていればいいのかを考えます。 51:投票設定 これは投票先のキャラクターの番号を1つ持っておけば良いでしょう。以下のような感じになります。 2<>51<>0…

人狼BBS作成日記50

さて、人狼ゲームの通常ルールであれば、発言のほかに実行できるコマンドは以下のようなものがあります。 1、投票(生存者):投票設定、投票集計、処刑実行 2、襲撃(人狼):襲撃設定、襲撃実行、襲撃成功 3、占い(占い師):占い設定、占い実行 4、…

人狼BBS作成日記49

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