Pythonで擬似的なパチスロを実装してみた


はじめに

はじめまして。最近プログラミングを始め、何か作ってみたいと思いいろいろ試行錯誤しています、sakuraです。

現在、Pythonを学んでいるところですが、本当にまだまだ駆け出しで「完全に理解した。」の領域も見えていない状態です。

そんな中ですが、何か作ったり勉強したことがあれば記事に残していきたいと思います。

環境

今回のプログラムはiPadのPython開発環境をアプリとして提供しているPythonista3を使って実装しました。

初心者なりに実装した擬似パチスロ

簡単なパチスロプログラムの基礎を実装しました。
まだまだ改良の余地はありまくりでしょうが、とりあえず紹介します。

擬似パチスロの仕組み

パチスロはご存知でしょうか?
ピエロ柄やらブドウ柄があるアレもそうですが、ここではパチンコ内蔵の3つの数字がゾロ目で停止すれば大当たりとなる方を想定して作りました。(画像みたいなやつ)

この仕組みですが、実際のパチンコがどのようになっているかは分かりませんが、今回のプログラムでは次のような方法で大当たり抽選を行います。

①1〜7までの数字からなる3桁の数字を全て用意する。
②この343個の数字からランダムに1つ数字を取り出す。
③ゾロ目を取り出せば大当たり

大まかに説明するとこんな感じです。機種によっては1から8まであったりしますが、私が好きなシンフォギアを想定して作っています(笑)。

擬似パチスロのコード

コードは次のような構成になっています。

pachisl.py

import numpy as np

#343個の3桁の数字を持つサイコロを生成
dice = list()
for x in range(1,8):
    for y in range(1,8):
        for z in range(1,8):
            dice.append(100*x+10*y+z)

#ゾロ目の出る確率調整
prob = list()
for i in range(343):
    if dice[i] == 111:
        prob.append(0.00045)
    elif dice[i] == 222:
        prob.append(0.00045)
    elif dice[i] == 333:
        prob.append(0.00045)
    elif dice[i] == 444:
        prob.append(0.00045)
    elif dice[i] == 555:
        prob.append(0.00045)
    elif dice[i] == 666:
        prob.append(0.00045)
    elif dice[i] == 777:
        prob.append(0.00045)
    else:
        prob.append(0.99685/336)

#343個の数字から調整された確率で1つ取り出す
samples = np.random.choice(a=dice,size=1,p=prob)
print(samples)

Numpyのnp.random.choice関数を利用して出目の確率を調整した「イカサマサイ」を作り出しています。応用的なことはありません。

確率の調整は数値を変えれば如何様にもなります。このコードではゾロ目の確率が1/315となるように調整しています。パチンコ実機の1/319に近い感じですね。

実行すると3桁の数字を1つ返し、ゾロ目なら大当たりということになります。玉は出ませんが。

まとめと展望

今回実装したのは、パチスロの形態でも最も単純化されたものです。実際のパチスロでは奇数テンパイと偶数テンパイの確率は違うような気もしますし、7テンはかなり珍しいです。

ですから、このプログラムにはまだまだ改良の余地がありまくりという事になります。
具体的にはGUIの実装やサウンドの付加、更に細かい確率調整、通常時と確変時の区別などができたら面白いなと考えています。