LoginSignup
0
1

More than 3 years have passed since last update.

ゲーム作ってみた.

Posted at

Pythonの機能を色々使うためにゲームを作ってみた.

ゲームルール
まず,コンソールにゲームに相当する,ある図が4つ表示される.これは,各々ランダムに生成された確率分布に従う標本を100個プロットしたものである.この標本は, -100%~100%の割合である.
ゲームは,掛け金に対して上記確率分布からランダムに引いた標本nの割合を掛け金にかけた金額がもらえる.ただし,参加料は掛け金*0.1%であり,ゲーム1回ごとに自動で精算される.

このようなルールを持つゲームを作りたい.
さらに,コマンドを押してゲームを継続したり,終了したりというったことができるようなプログラムを実装したい.
関数定義の仕様とか,グローバル/ローカル変数の仕様とか諸々を理解してなくて冗長かも知れない.
そういうところの指摘がどんどん欲しいところ.

まず,グローバル変数を用意した.
後々正規分布を使いたいから,そのパラメータをランダムに毎回設定するようにしたい.
global mu2
global v2
global mu3
global v3
global mu4
global v4
global mu5
global v5

そしてそれらの変数がこんな感じで一様分布に従って設定するようにした.
mu2 = np.random.uniform(-0.05, 0.05)
v2 =np.random.uniform(0.005, 1.0)
mu3 = np.random.uniform(-0.05, 0.05)
v3 =np.random.uniform(0.005, 1.0)
mu4 = np.random.uniform(-0.05, 0.05)
v4 =np.random.uniform(0.005, 1.0)
mu5 = np.random.uniform(-0.05, 0.05)
v5 =np.random.uniform(0.005, 1.0)

プロットした.
fig = plt.figure(1)
ax2 = fig.add_subplot(321)
X2 = np.random.normal(mu2, v2, 100)
plt.title('game2')
ax2.set_ylim(-4, 4)
plt.plot(X2)

ax3 = fig.add_subplot(322)
X3 = np.random.normal(mu3, v3, 100)
plt.title('game3')
ax3.set_ylim(-4, 4)
plt.plot(X3)

ax4 = fig.add_subplot(325)
X4 = np.random.normal(mu4, v4, 100)
plt.title('game4')
ax4.set_ylim(-4, 4)
plt.plot(X4)

ax5 = fig.add_subplot(326)
X5 = np.random.normal(mu5, v5, 100)
plt.title('game5')
ax5.set_ylim(-4, 4)
plt.plot(X5)

次にゲームの関数を定義した.
P_Startに掛け金,Feeに参加料金,nに参加回数を入力する必要がある.
def game2(P_start, Fee, n) :

global mu2
global v2

x = np.random.normal(mu2, v2)
P_end = P_start + P_start * x - Fee

print("Rate of Change(%): " + str(100 * x) + "  This game's Fee(JPY): " + str(Fee))

return P_end

def game3(P_start, Fee, n) :

global mu3
global v3

x = np.random.normal(mu3, v3)
P_end = P_start + P_start * x - Fee

print("Rate of Change(%): " + str(100 * x) + "  This game's Fee(JPY): " + str(Fee))

return P_end

def game4(P_start, Fee, n) :

global mu4
global v4

x = np.random.normal(mu4, v4)
P_end = P_start + P_start * x - Fee

print("Rate of Change(%): " + str(100 * x) + "  This game's Fee(JPY): " + str(Fee))

return P_end

def game5(P_start, Fee, n) :

global mu5
global v5

x = np.random.normal(mu5, v5)
P_end = P_start + P_start * x - Fee

print("Rate of Change(%): " + str(100 * x) + "  This game's Fee(JPY): " + str(Fee))

return P_end

それぞれのゲームを実行する関数を定義した.
def game2start():

global n1
global n2
global z
global z1
global Fee
global percent
global Fee_total

percent = 0.001

print("How much money (JPY) do you bet?")
n0 = input()
n1 = int(n0)
n2 = 0
Fee_total = 0

def nnn():

    global n1
    global n2
    global z
    global z1
    global Fee
    global Fee_total

    print("If you challenge this game, click the key 's'. If you end this game, click the key 'e'.")
    command = input()
    if command == 's' and n2 == 0 :
            n2 += 1
            Fee = n1 * percent
            Fee_total += Fee
            z1 = np.floor(game2(n1, Fee, n2))
            print("Your possession: " + str(z1) + "  Your challenges: " + str(n2))
            return z1, Fee, Fee_total, nnn()
    if command =='s' and n2 > 0:
            n2 += 1
            Fee = n1 * percent
            Fee_total += Fee
            z1 = np.floor(game2(z1, Fee, n2))
            print("Your possession: " + str(z1) + "  Your challenges: " + str(n2))
            return z1, Fee, Fee_total, nnn()
    else :
            print("Game is End..." + "Your possession: " + str(z1) + "  Your challenges: " + str(n2) + "  Total Fee: " + str(Fee_total))

nnn()

def game3start():

global n1
global n2
global z
global z1
global Fee
global percent
global Fee_total

percent = 0.001

print("How much money (JPY) do you bet?")
n0 = input()
n1 = int(n0)
n2 = 0
Fee_total = 0

def nnn():

    global n1
    global n2
    global z
    global z1
    global Fee
    global Fee_total

    print("If you challenge this game, click the key 's'. If you end this game, click the key 'e'.")
    command = input()
    if command == 's' and n2 == 0 :
            n2 += 1
            Fee = n1 * percent
            Fee_total += Fee
            z1 = np.floor(game3(n1, Fee, n2))
            print("Your possession: " + str(z1) + "  Your challenges: " + str(n2))
            return z1, Fee, Fee_total, nnn()
    if command =='s' and n2 > 0:
            n2 += 1
            Fee = n1 * percent
            Fee_total += Fee
            z1 = np.floor(game3(z1, Fee, n2))
            print("Your possession: " + str(z1) + "  Your challenges: " + str(n2))
            return z1, Fee, Fee_total, nnn()
    else :
            print("Game is End..." + "Your possession: " + str(z1) + "  Your challenges: " + str(n2) + "  Total Fee: " + str(Fee_total))

nnn()    

def game4start():

global n1
global n2
global z
global z1
global Fee
global percent
global Fee_total

percent = 0.001

print("How much money (JPY) do you bet?")
n0 = input()
n1 = int(n0)
n2 = 0
Fee_total = 0

def nnn():

    global n1
    global n2
    global z
    global z1
    global Fee
    global Fee_total

    print("If you challenge this game, click the key 's'. If you end this game, click the key 'e'.")
    command = input()
    if command == 's' and n2 == 0 :
            n2 += 1
            Fee = n1 * percent
            Fee_total += Fee
            z1 = np.floor(game4(n1, Fee, n2))
            print("Your possession: " + str(z1) + "  Your challenges: " + str(n2))
            return z1, Fee, Fee_total, nnn()
    if command =='s' and n2 > 0:
            n2 += 1
            Fee = n1 * percent
            Fee_total += Fee
            z1 = np.floor(game4(z1, Fee, n2))
            print("Your possession: " + str(z1) + "  Your challenges: " + str(n2))
            return z1, Fee, Fee_total, nnn()
    else :
            print("Game is End..." + "Your possession: " + str(z1) + "  Your challenges: " + str(n2) + "  Total Fee: " + str(Fee_total))

nnn()

def game5start():

global n1
global n2
global z
global z1
global Fee
global percent
global Fee_total

percent = 0.001

print("How much money (JPY) do you bet?")
n0 = input()
n1 = int(n0)
n2 = 0
Fee_total = 0

def nnn():

    global n1
    global n2
    global z
    global z1
    global Fee
    global Fee_total

    print("If you challenge this game, click the key 's'. If you end this game, click the key 'e'.")
    command = input()
    if command == 's' and n2 == 0 :
            n2 += 1
            Fee = n1 * percent
            Fee_total += Fee
            z1 = np.floor(game5(n1, Fee, n2))
            print("Your possession: " + str(z1) + "  Your challenges: " + str(n2))
            return z1, Fee, Fee_total, nnn()
    if command =='s' and n2 > 0:
            n2 += 1
            Fee = n1 * percent
            Fee_total += Fee
            z1 = np.floor(game5(z1, Fee, n2))
            print("Your possession: " + str(z1) + "  Your challenges: " + str(n2))
            return z1, Fee, Fee_total, nnn()
    else :
            print("Game is End..." + "Your possession: " + str(z1) + "  Your challenges: " + str(n2) + "  Total Fee: " + str(Fee_total))

nnn()
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1