Perl
Perl入学式

perlでチンチロリンしてイカサマして勝つコード書いてみる(バグあり)

折角Perlを習ったんだから何か書いてみよう

Perl入学式を4回受けまして何か自分に書ける者はないかなと思って書いてみました。
(本当は5回あったのですが、そのうち1回は某証券のセミナーに行って儲け話のヒントを得たついでにただ飯食ってきましtゲフンゲフン)

そういえば別の勉強会のときにサイコロを使ったLTをしたな

そうそう、pythonの某勉強会で始めてLTをしたんですよ。トラブルありましたけど。
会場の設備がMac御用達だったのでWin勢の私はトラブりまして、結局パワポだけしか発表できませんでした。悲しい……絶対Mac買って発表します。

そこで今回はそれを派生してみよう

前回のコードと発表内容こちらです。
https://github.com/seno0xFF/python_LT

※pythonで書いたのでソースコードがまるで違います。ご了承ください。

チンチロリンをやってみよう

前回は6のゾロ目と1のゾロ目が出る確率を取るという
統計で既に証明されているもの再現性をとるコードを書きました。

今回はサイコロを使って実際にチンチロリンというカイジやジョジョ4部で
わりかし有名なんじゃないかな、というアングラな賭け事を遊べるコードを書いてみました。

チンチロリンのルールはこちらをご参照ください

http://www.geocities.co.jp/Playtown/8112/hobby/ho0001.html

※にわかなTRPG勢なので、ルールはこれを見ながら作成しました。
 相手はCOMとしてます。COMがサイコロを振った後、自分がサイコロを振るという流れです。
 賭ける点は3点です。さあ早速書いてみましょう。

ただチンチロリンするだけじゃ何かつまんねえよなあ…

折角書くんだったら、ゲームの中でくらい常に勝ちたいよね。
だって世の中辛いことばかりだし

イカサマして自分が必ず勝つようにすればいいんじゃね!?

自分が作ったCOMにまで負けるとかそれこそ世の中クソってモノです。
私はそこまでマゾヒストじゃあありませんもの。ゲームでくらい圧勝したいですよ!

というわけで書いてみました

ソースコードはこちらになります。
https://github.com/seno0xFF/perl_advent_2017/blob/master/tintiro.pl

結果を貼る

通常の勝ちパターンです。これは普通に自分の勝ちです
https://github.com/seno0xFF/perl_advent_2017/blob/master/%E3%83%81%E3%83%B3%E3%83%81%E3%83%AD%E3%83%AA%E3%83%B3%E9%80%9A%E5%B8%B8%E5%8B%9D%E3%81%A1.PNG

相手の勝ちパターンの場合(自分が負ける場合)

ジゴロだとCOMの勝利になるため、何らかの形でサイコロが跳ね返って3点が相手に入るようにしました。偶然です偶然。イカサマかもしれませんがばれなきゃイカサマじゃあないんですよ。
https://github.com/seno0xFF/perl_advent_2017/blob/master/%E3%83%81%E3%83%B3%E3%83%81%E3%83%AD%E3%83%AA%E3%83%B3COM%E5%BC%B7%E5%88%B6%E5%8B%9D%E3%81%A1%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%EF%BC%88%E8%B2%A0%E3%81%91%E3%81%AA%E3%81%84%E3%82%88%E3%81%86%E3%81%AB%E3%82%A4%E3%82%AB%E3%82%B5%E3%83%9E%E3%81%99%E3%82%8B%EF%BC%89.PNG

※すみません。スクショではヒフミCOMチートになっていますが完全に間違いです。

続いては自分のターンです。まずサイコロを振ります。

https://github.com/seno0xFF/perl_advent_2017/blob/master/%E3%83%81%E3%83%B3%E3%83%81%E3%83%AD%E3%83%AA%E3%83%B3COM%E5%BC%B7%E5%88%B6%E5%8B%9D%E3%81%A1%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%EF%BC%88%E8%B2%A0%E3%81%91%E3%81%AA%E3%81%84%E3%82%88%E3%81%86%E3%81%AB%E3%82%A4%E3%82%AB%E3%82%B5%E3%83%9E%E3%81%99%E3%82%8B%E3%80%82%E3%82%B4%E3%82%B1%E3%81%A7%E5%8B%9D%E3%81%A6%E3%81%A6%E5%8B%9D%E3%81%A1%E5%88%A4%E5%AE%9A%E3%81%8C%E5%87%BA%E3%82%8B%E3%81%AF%E3%81%9A%E3%81%AA%E3%81%AE%E3%81%A0%E3%81%8C%E2%80%A6%EF%BC%89.PNG

…なんだか雲行きが怪しいですね?
突風が2回吹いて同じ値が出てしまいましたよ?
リアルだと、きっとこのあたりでイカサマが疑われ始めるところですね。

決定的におかしいイカサマバグ

https://github.com/seno0xFF/perl_advent_2017/blob/master/%E3%83%81%E3%83%B3%E3%83%81%E3%83%AD%E3%83%AA%E3%83%B3COM%E5%BC%B7%E5%88%B6%E5%8B%9D%E3%81%A1%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%EF%BC%88%E8%B2%A0%E3%81%91%E3%81%AA%E3%81%84%E3%82%88%E3%81%86%E3%81%AB%E3%82%A4%E3%82%AB%E3%82%B5%E3%83%9E%E3%81%99%E3%82%8B%E3%80%82%E4%BE%A1%E5%80%A4%E5%88%A4%E5%AE%9A%E3%81%8C%E5%87%BA%E3%82%8B%E3%81%AE%E3%81%8C%E3%81%8A%E3%81%8B%E3%81%97%E3%81%84%E3%83%90%E3%82%B0%EF%BC%89.PNG

なんてこった……賽の目が同数なのになぜか自分が勝った判定が出てるじゃないかorz
これではイカサマがばれてしまいます。
カイジの世界ならノーカン!ノーカン!で大騒ぎ。
ジョジョの世界なら露伴先生に小指を詰められてしまいます。

改善点(頭をひねってるところ)

なぜcomのサブルーチンが呼ばれるのかが自分ではわかっていません。
このままでは露伴先生に小指を詰められてしまいますので助けてください!何でもしますから!

まとめ

・反省点

・正規表現使うと最初に自分で抜かしておきながら、全く使わなかった
・Mojoliciousフレームワークを教えてもらったのにノータッチ

皆様にご助言を頂きたいポイント

こうすればcomのサブルーチンが不要な個所で呼び出されるのを防ぐことが出来るよ!
等があればマサカリぶん投げてください。

今度作るもの、やりたいこと

・まずバグを取り除きたい
・掲示板に機能追加(まず写経から)
・Perl入学式のラストのじゃんけんで勝ち取った「Perl徹底攻略」を読み漁る
・買った「新版Perl言語プログラミングレッスン」がまだ終わってないので写経