jug7.com
[ home / cgi / juggler / column / diary / bbs / link / welcome ]


source : クランキーコンドル X


#!/usr/bin/perl
# クランキーコンドル X シミュレーション

$cginame  = 'condorx.cgi';
$title    = 'クランキーコンドル X シミュレーション';

$url_data   = '../simu_data_condorx.html';
$url_memo   = 'condorx_memo.html';
$url_source = 'condorx.html';


if ($ENV{'REQUEST_METHOD'} eq 'POST') {
    read (STDIN, $input, $ENV{'CONTENT_LENGTH'});
}
foreach $str (split(/&/,$input)) {
    ($name,$value) = split(/=/, $str);
    push(@input, $value);
}
($s, $play) = @input; # 設定, プレイ数

print "Content-Type: text/html\n\n";

$s = 1 if !$s;
$check[$s] = 'checked';

# ヘッダとフォームの表示
print <<"__ HTML __";
<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>
<html lang='ja'>
<head>
<meta http-equiv='Content-Type' content="text/html; charset=shift_jis">
<title>jug7.com - cgi $title</title>
 <style type="text/css"> <!--
   A:hover {color:#ff0000;}
 --></style>
</head>
<body text='#000000' bgcolor='#ffffff' link='#0000ff' alink='#ff0000' vlink='#0000cc'>
<font size=7><b><font face='Times New Roman,Times'>jug</font><font face='Bookman Old Style,arial black,Helvetica Black'>7</font><font face='Times New Roman,Times'>.com</font></b></font>
<hr color='#00aa00'>

<strong>[ <a href='../index.html'>home</a> / <a href='index.html'>cgi</a> / <a href='../jug/index.html'>juggler</a> / <a href='../column.html'>column</a> / <a href='../diary/index.html'>diary</a> / <a href='bbs.cgi'>bbs</a> / <a href='../link.html'>link</a> / <a href='../intro.html'>welcome</a> ]</strong>
<div align='center'><h2>$title</h2></div>
<hr width='70%'>
<div align='right'>[ <a href='$url_data'>data</a> / <a href='$url_memo'>memo</a> / <a href='$url_source'>source</a> ]</div>
<br><br><center>
<form action='$cginame' method='POST'>
<table border=0>
<tr><td>設定</td><td><input type='radio' name='s' value='1' $check[1]> 1 <input type='radio' name='s' value='2' $check[2]> 4 <input type='radio' name='s' value='3' $check[3]> 6</td></tr>
<tr><td>試行ゲーム数</td><td><input type='text' size=10 name='play' maxlength=4 value='$play'></td></tr>
</table><br>
<input type='submit' value="開始">
<br><br>
<table border=0><tr><td>
ボーナス成立役が判断できる場合は、ボーナス成立の次プレイに揃えられる。<br>
ボーナス成立役が分からない場合(単独当選、単チェリーなど)は、<br>
まず青7(or REG)を狙い、次に赤7を狙うことにした。<br>
<br>
</td></tr></table>
</form></center>
__ HTML __


# エラーチェックと GET 送信
if ($play > 9999)   { $error = 1; $er_msg = 'プレイ数は最大9999Pまでです。'; }
if (!$play or !$s)  { $error = 1; $er_msg = '記入漏れがあります。'; }
if ($s!=1 && $s!=2 && $s!=3) { $error = 1; $er_msg = '設定は 1 or 4 or 6 です。'; }
if (grep { /[^\d\.]/ } @input) { $error = 1; $er_msg = '不適切な文字が記入されています。'; };

if ($ENV{'REQUEST_METHOD'} ne 'POST') { $error = 1; $er_msg = 0; }
if ($er_msg) {
    print q{<center><b><font color='red' size=4>*** ERROR !! ***</font><br><br>},"\n";
    print "$er_msg</b></center>\n";
}
if ($error) {
    print '<br><br><br><br><br>';
    print "<div align='right'>[ <a href='$url_data'>data</a> / <a href='$url_memo'>memo</a> / <a href='$url_source'>source</a> ]</div>";
    print q{<strong>[ <a href='../index.html'>home</a> / <a href='index.html'>cgi</a> / <a href='../jug/index.html'>juggler</a> / <a href='../column.html'>column</a> / <a href='../diary/index.html'>diary</a> / <a href='bbs.cgi'>bbs</a> / <a href='../link.html'>link</a> / <a href='../intro.html'>welcome</a> ]</strong>};
    print '</body></html>';
    exit;
}

if ($s==4) { $s=2; } elsif ($s==6) { $s=3; }  # 設定4 はシミュ内では 2、設定6 はシミュ内では 3

# data /65536
@bell     = (8940, 9077, 9217);   $bell = $bell[$s-1];
$rep      = 8980;
$che      = 843;
$che2     = 511; # 赤 or 桃チェリー
$suika    = 400;
@chance   = (680, 685, 690);  $chance  = $chance[$s-1];
@feather  = (144, 152, 160);  $feather = $feather[$s-1];
$rt       = 100;
@reg_4    = (64, 76, 98);     $reg_4   = $reg_4[$s-1];
$blue_big = 17;
$red_big  = 17;
$condor1  = 17;
@condor2  = (6, 10, 14);      $condor2 = $condor2[$s-1];


print q{<table border=1 cellspacing=0 align='center' cellpadding=2><caption>シミュレーション結果</caption>},"\n";
print q{<tr align='center' bgcolor='#ffffcc'><td><font size=2>ゲーム数</font></td><td><font size=2>当選</font></td>};
print q{<td>備考</td><td>BIG枚数</td><td><font size=2>BIG<br>回数</font></td><td><font size=2>REG<br>回数</font></td>};
print q{<td><font size=2>投資</font></td><td><font size=2>コイン</font></td><td><font size=2>total<br>ゲーム数</font></td></tr>},"\n";

$t_bell     = $bell;
$t_rep      = $bell+$rep;
$t_che      = $bell+$rep+$che;
$t_che2     = $bell+$rep+$che+$che2;
$t_suika    = $bell+$rep+$che+$che2+$suika;
$t_chance   = $bell+$rep+$che+$che2+$suika+$chance;
$t_feather  = $bell+$rep+$che+$che2+$suika+$chance+$feather;
$t_rt       = $bell+$rep+$che+$che2+$suika+$chance+$feather+$rt;
$t_reg_4    = $bell+$rep+$che+$che2+$suika+$chance+$feather+$rt+$reg_4;
$t_blue_big = $bell+$rep+$che+$che2+$suika+$chance+$feather+$rt+$reg_4+$blue_big;
$t_red_big  = $bell+$rep+$che+$che2+$suika+$chance+$feather+$rt+$reg_4+$blue_big+$red_big;
$t_condor1  = $bell+$rep+$che+$che2+$suika+$chance+$feather+$rt+$reg_4+$blue_big+$red_big+$condor1;
$t_condor2  = $bell+$rep+$che+$che2+$suika+$chance+$feather+$rt+$reg_4+$blue_big+$red_big+$condor1+$condor2;



#---------------------------
#  シミュレート開始
#---------------------------
$g = $count = $coin = $k = $totalk = 0;
$red_big_count = $blue_big_count = $reg_count = 0;
$flag = $red_big_flag = $blue_big_flag = $reg_flag = 0;
$msg = $big_coin = $rt_count = $rt_sp = $rt_count2 = $rt_count3 = 0;

while (1) {

    $g++; $count++;
    if ($coin < 3) { $coin += 50; $k++; $totalk++; }
    $coin -= 3;

    if ($wait) { $wait--; }
    if ($rt_flag) {
        $rt_count--; $wait = 1;
        if ($rt_count<0) { $rt_flag = 0; $wait = 0; }
        if ($rt_sp && $flag) { $rt_flag = 0; }
    }

    $r = int(rand(65536)+1);
    if ($r <= $t_bell) { $coin += 7; $wait++ if $flag; next; }
    elsif ($r <= $t_rep) { $coin += 3; $wait++ if $flag; next; }
    elsif ($r <= $t_che) {
        $coin += 1;
        $r = int(rand($che)+1); # 843
        if ($r<=12 && !$msg) { # 青7 同時当選
            $flag = 'b7'; $wait = 1;
            $detect = 1 if $rt_flag;
            $msg = '中段チェリー';
        } elsif ($r<=24 && !$msg) { # 赤7 同時当選
            $flag = 'r7'; $wait = 2;
            $detect = 2 if $rt_flag;
            $msg = '中段チェリー';
        }
    } elsif ($r <= $t_che2) {
        $coin += 2;
        $r = int(rand($che2)+1); # 511
        if ($r<=6 && !$msg) { # 青7 同時当選
            $flag = 'b7'; $wait = 2;
            $detect = 1 if $rt_flag;
            $msg = '角チェリー';
        }
    } elsif ($r <= $t_suika) {
        $coin += 12;
        $r = int(rand($suika)+1); # 400
        if (($s==1 && $r<=20) or ($s==2 && $r<=22) or ($s==3 && $r<=24)) { # 青7 同時当選
            next if $msg;
            $flag = 'b7'; $wait = 1;
            $detect = 1 if $rt_flag;
            $msg = 'スイカ';
        }
    } elsif ($r <= $t_chance) {
        $r = int(rand($chance)+1); # 680, 685, 690
        if (($s==1 && $r<=59) or ($s==2 && $r<=63) or ($s==3 && $r<=67)) { # 赤7 同時当選
            next if $msg;
            $flag = 'r7'; $wait = 1;
            $detect = 2 if $rt_flag;
            $msg = 'チャンス目';
        }
    } elsif ($r <= $t_feather) {
        $coin += 11;
        $r = int(rand($feather)+1); # 144, 152, 160
        if (($s==1 && $r<=36) or ($s==2 && $r<=38) or ($s==3 && $r<=40)) { # 青7 同時当選
            next if $msg;
            $flag = 'b7'; $wait = 1;
            $detect = 1 if $rt_flag;
            $msg = '羽';
        } elsif (($s==1 && $r<=72) or ($s==2 && $r<=76) or ($s==3 && $r<=80)) { # REG 同時当選
            next if $msg;
            $flag = 'r'; $wait = 1;
            $detect = 1 if $rt_flag;
            $msg = '羽';
        }
    } elsif ($r <= $t_rt) {
        $coin += 7;
        if (!$rt_flag) {
            $flag = 'rt'; $wait = 0; $rt_flag = 1; $rt_count2++;
            if ($count<1100) { $rt_count = 100; } else { $rt_count = 10000; $rt_sp = 1; }
        }
    } elsif ($r <= $t_reg_4 && !$msg) { # REG 同時当選
        $coin += 5;
        $flag = 'r'; $wait = 1;
        $detect = 1;
        $msg = '<b>中段チェ+4枚役</b>';
    } elsif ($r <= $t_blue_big && !$msg) { # 青7 単独当選
        $flag = 'b7'; $wait = 1;
        $detect = 1 if $rt_flag;
        $msg = '単独当選';
    } elsif ($r <= $t_red_big && !$msg) { # 赤7 単独当選
        $flag = 'r7'; $wait = 2;
        $detect = 2 if $rt_flag;
        $msg = '単独当選';
    } elsif ($r <= $t_condor1 && !$msg) { # 青7 同時当選
        $coin += 14;
        $flag = 'b7'; $wait = 1;
        $detect = 1;
        $msg = '<font color=\'red\'>中段チェ+コンドル</font>';
    } elsif ($r <= $t_condor2 && !$msg) { # 青7 同時当選
        $coin += 15;
        $flag = 'b7'; $wait = 1;
        $detect = 1;
        $msg = '<font color=\'red\'><b>角チェ+コンドル</b></font>';
    } else {
        if ($rt_flag) { $coin += 3; $rt_count3++; next; }
    }

    if (($flag && $wait<=0) or ($rt_flag && $rt_count==100)) {  # ボーナスを揃えられる or RT
        $k = ($k > 0) ? $k .'k' : ' ';

        # BIG中
        # 赤che 1744, 桃チェ 901, 1枚役 691, 4枚役 376, スイカ 400, 10枚役 178, 14枚役 100, 13枚役 32
        if (($flag eq 'b7') or ($flag eq 'r7')) {
            while($big_inc <= 345) {
                $big_coin -= 1;
                $r = int(rand(65536)+1);
                if ($r<=61114) { $big_coin += 15; $big_inc += 15; } # 15枚役
            }
        }
        push(@big_coin, $big_coin);

        if    ($flag eq 'b7')  { $get = '<font color=\'blue\' face=\'Arial black\'><strong>777</strong></font>';  $coin += $big_coin; $blue_big_count++; $rt_flag = 0; }
        elsif ($flag eq 'r7')  { $get = '<font color=\'red\' face=\'Arial black\'><strong>777</strong></font>'; $coin += $big_coin; $red_big_count++; $rt_flag = 0; }
        elsif ($flag eq 'r')   { $get = '<strong>REG</strong>'; $coin += 112; $big_coin = ' '; $reg_count++; $rt_flag = 0; }
        else                   { $get = '<font face=\'Arial black\' size=2>Cranky Game</font>'; $msg = ' '; $big_coin = ' '; }

        $opt  = ($count < 100) ? "<b><font color='blue'>" : ($count >= 500) ? "<b><font color='red'>" : '';
        $opt2 = ($count < 100) ? "</font></b>"            : ($count >= 500) ? "</font></b>"           : '';

        $big_count = $blue_big_count + $red_big_count;
        if ($big_count) { $b_prob = int($g/$big_count+0.5); $b_prob = "(1/$b_prob)"; }
        if ($reg_count) { $r_prob = int($g/$reg_count+0.5); $r_prob = "(1/$r_prob)"; }

        if ($flag eq 'rt') { $d_count = "($count)"; } else { $d_count = $count; }
        print "<tr align='center'><td align='right'>$opt $d_count $opt2</td><td>$get</td><td><font size=2>$msg</font></td><td>$big_coin</td>";
        print "<td><font color='blue'>$big_count</font> $b_prob</td><td><font color='blue'>$reg_count</font> $r_prob</td>";
        print "<td>$k</td><td>$coin</td><td>$g</td></tr>\n";

        if ($flag eq 'rt') { $flag = $msg = 0; $k=''; next; }
        $flag = $red_big_flag = $blue_big_flag = $reg_flag = $wait = $count = 0;
        $big_coin = $big_inc = $rt_flag = $rt_count = $rt_sp = $msg = 0;
        $k='';
    }

    if ($g >= $play) {
        $k = ($k > 0) ? $k.'k' : ' ';
        if ($big_count) { $b_prob = int($g/$big_count+0.5); $b_prob = "(1/$b_prob)"; }
        if ($reg_count) { $r_prob = int($g/$reg_count+0.5); $r_prob = "(1/$r_prob)"; }
        print "<tr align='center'><td align='right'>$count</td></td><td>ヤメ</td><td> </td><td> </td>";
        print "<td><font color='blue'>$big_count</font> $b_prob</td><td><font color='blue'>$reg_count</font> $r_prob</td>";
        print "<td>$k</td><td>$coin</td><td>$g</td></tr>\n";
        last;
    }
}

print '</table><br><br><br>';

# 結果の整理
$toushi = $totalk * 1000;
$kankin = int($coin*20);
$shushi = $kankin - $toushi;
$opt3   = ($shushi >= 0) ? 'blue' : 'red';
$payout = ($coin-($totalk*50))/($g*3)*100+100;
$payout = &point($payout,3);
if ($big_count) { $b_prob = &point(($g/$big_count),3); $b_prob = "(1/$b_prob)"; }
if ($reg_count) { $r_prob = &point(($g/$reg_count),3); $r_prob = "(1/$r_prob)"; }
if ($red_big_count)  { $red_b_prob  = &point(($g/$red_big_count),3);  $red_b_prob  = "(1/$red_b_prob)"; }
if ($blue_big_count) { $blue_b_prob = &point(($g/$blue_big_count),3); $blue_b_prob = "(1/$blue_b_prob)"; }
if ($rt_count2)      { $rt_count_prob = &point(($g/$rt_count2),3); $rt_count_prob = "(1/$rt_count_prob)"; }

foreach (@big_coin) { $t_bigget += $_; }
$coin1k = &point(($g*50/($t_bigget + $reg_count*112 + $totalk*50 - $coin + $rt_count3*3)), 3);
$s_d = $s;
$s_d = 4 if $s==2;
$s_d = 6 if $s==3;
# 整理した結果と再試行ボタン、フッタの表示
print <<"__ HTML __";
<table border=1 align='center' cellpadding=3 cellspacing=0>
<tr align='center' bgcolor='#ffffcc'><td colspan=2><b>クランキーコンドル X</b> <b>設定 $s_d</font></td></tr>
<tr><td>プレイ数</td><td align='right'> $g P</td></tr>
<tr><td><b>BIG</b></td><td align='right'><b>$big_count 回 <font color='red'>$b_prob</font></td></tr>
<tr><td><b><font color='red' face='Arial black'>777</font></b></td><td align='right'><b>$red_big_count 回 $red_b_prob</td></tr>
<tr><td><b><font color='blue' face='Arial black'>777</font></b></td><td align='right'><b>$blue_big_count 回 $blue_b_prob</td></tr>
<tr><td><b>REG</b></td><td align='right'><b>$reg_count 回 <font color='red'>$r_prob</font></td></tr>
<tr><td><b><font face='Arial black'>Cranky Game</font></b></td><td align='right'><b>$rt_count2 回 <font color='red'>$rt_count_prob</font></td></tr>
<tr><td>投資</td><td align='right'>$toushi 円</td></tr>
<tr><td>獲得</td><td align='right'>$coin 枚</td></tr>
<tr><td>換金</td><td align='right'>$kankin 円</td></tr>
<tr><td>PAYOUT</td><td align='right'><b>$payout %</b></td></tr>
<tr><td>1k当たり</td><td align='right'><b>$coin1k P</b></td></tr>
<tr><td>収支</td><td align='right'><font color='$opt3'><b>$shushi 円</b></font></td></tr>
</table></center>

<form action='$cginame' method='POST'>
<input type='hidden' name='s' value='$s'>
<input type='hidden' name='play' value='$play'>
<center><input type='submit' value='再試行'></center>
</form>

<br><br><br><br>
<div align='right'>[ <a href='$url_data'>data</a> / <a href='$url_memo'>memo</a> / <a href='$url_source'>source</a> ]</div>
<strong>[ <a href='../index.html'>home</a> / <a href='index.html'>cgi</a> / <a href='../jug/index.html'>juggler</a> / <a href='../column.html'>column</a> / <a href='../diary/index.html'>diary</a> / <a href='bbs.cgi'>bbs</a> / <a href='../link.html'>link</a> / <a href='../intro.html'>welcome</a> ]</strong>
</body></html>
__ HTML __

exit;

# 少数を四捨五入して指定の桁にする
sub point {
    my($value, $fig, $x);
    ($value, $fig) = @_;

    $value = int($value * (10 ** $fig) + 0.5) / (10 ** $fig);
    if ($value =~ /(\d+)\.(\d+)/) { $x = $2; }
    elsif ($value !~ /\./)        { $x =''; $value .= '.'; }
    $value = $value.'0' x ( $fig - length($x) );
    return $value;
}


[ home / cgi / juggler / column / diary / bbs / link / welcome ]