Danchan
@Danchan (だん だん)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

while文でつまずいています。。

解決したいこと

多くの方が詰まるポイントかもしれませんが、、
while文を使ってルーレットゲームを作っています。
【ユーザーの持ち金が¥100から始まり、当たると2倍、外れると-¥50
ユーザーの持ち金が¥0になるまで値を保持し続けて、増えたり減ったりを繰り返す】という処理がわからず困っています。

関数定義をして作ろうと思っていますが、みなさんならどう記述しますか?ご教授いただけたら嬉しいです。

この部分に記述したい

import random

roulette = ['Black','Red']

while True:
       user = 100
       print('Black or Red?')
       print('Black = B, Red = R')
       call = input('Your call')
       if call == 'B'or call =='R':
          casino()

#この間の部分です
#こちらのコードも正確とは言えない部分があるかもしれません。。

       else:
           break


途中まで捻り出した関数定義はこちら

def casino():
    while True:
        if random.choice(roulette) == 'Black' and call == 'B':
            #計算の処理がはいる?            


            print('HIT!!')
            print('Your Money:', total)
        elif random.choice(roulette) == 'Red' and call == 'R':
           #計算の処理がはいる?

            print('HIT!!')
            print('Your Money:', total)

        else:
           #計算の処理がはいる?
            print('Lose...')
            print('Your Money:', total)


### 自分で試したこと
### 累算代入演算子など使ってみましたが、おそらく書き方が違うみたいです。
0

3Answer

サクッと作ってみました。
参考になれば

import random

def casino(money, forecast):
    list = ['B', 'R']
    random_value = random.choice(list)

    if forecast == random_value:
        print(f'あたり {money}{money * 2}')
        money = money * 2
    else:
        print(f'はずれ {money}{money - 50}')
        money = money - 50

    print()
    return money


money = 100
while True:
    forecast = input('B or R: ')
    money = casino(money, forecast)

    if money <= 0:
        print('Game Over')
        break
1Like

Comments

  1. @Danchan

    Questioner

    @fhara さん!こんにちは!
    コード付きで丁寧なご回答、大変ありがとうございます!
    とても感激しております!
    先ほど動かしてみて、まさにやってみたいゲームでした!

    投稿した後も、改善を繰り返していましたがやはりmoneyの値をwhileループの中で維持させる方法がわからず苦戦していました。

    関数の中でreturnでmoneyを返すと、値がリセットされず繰り返すことができるんですね!

    コードも短く簡単になっているので、これを参考にさらに理解を深めて行きたいと思います!
    ありがとうございます!

【ユーザーの持ち金が¥100から始まり、当たると2倍、外れると-¥50
ユーザーの持ち金が¥0になるまで値を保持し続けて、増えたり減ったりを繰り返す】という処理

これを一度に解決しようとして「分からない」状態になっているのだと思います。
この処理を細かく分解して一つずつ解決していきましょう。
ゲームの流れをフローチャートにして整理するのも良いと思います。

0Like

現状だとアドバイスがしにくい状態になっているので,
機能が足りなくともいいから,動く状態にして,
ここが足りないとわかっているが,何を調べたらいいか,みたいに聞いてみるのはどうでしょうか?

0Like

Your answer might help someone💌