前提・実現したいこと
Pythonの基礎勉強のため、ドラクエのようなゲームを作ろうと思っています。
[3]銀行 を選ぶと500円もらえる設定し、1000 + 500円で所持金は 1500円になる予定ですが、
下記の通り1000円のままになってしまいます。
[質問]
1)本件のバグの原因は何でしょうか?
2)今後内容拡大に伴い関数が増えていくと、コメント # グローバル変数 の箇所のように
様々な部分で global ~ が無数に登場する気がするのですが、
基本的なやり方として別の方法があるのでしょうか?
それとも global ~ はある程度多く使うものでしょうか?
変数と関数の基礎的な扱いがまだよく分かっておらず、初歩的な質問ですがよろしくお願いします。
実行結果
誰と話す?[1]村人[2]武器屋[3]銀行 3 現在の所持金1000円 ここは銀行です これをきみにあげよう 500円を手に入れた! 現在の所持金1000円 誰と話す?[1]村人[2]武器屋[3]銀行
該当のソースコード
python
1 2# 所持金 3money = 1000 4 5# NPC 6npc = {'villager': {'name': "村人", 'quote': "ここは最初の村です"}, 7 'armsshop': {'name': "武器屋", 'quote': "ここは武器屋だ" }, 8 'banker' : {'name': "銀行", 'quote': "ここは銀行です" }} 9 10# 現在のステータス表示 11money_status = "現在の所持金" + str(money) + "円" 12 13def status(): 14 print(money_status) 15 16# 銀行イベント 17def banker_event(): 18 print("これをきみにあげよう") 19 get_money(500) 20 21def get_money(x): 22 global money # グローバル変数 23 print(str(x) + "円を手に入れた!") 24 money += x 25 26# NPCを選択 27choice_txt = "誰と話す?" 28npc_choice = choice_txt + \ 29 "[1]" + npc['villager']['name'] + \ 30 "[2]" + npc['armsshop']['name'] + \ 31 "[3]" + npc['banker']['name'] 32 33def act(): 34 act_number = int(input(npc_choice)) 35 36 if act_number == 1: 37 print(npc['villager']['quote']) 38 elif act_number == 2: 39 print(npc['armsshop']['quote']) 40 elif act_number == 3: 41 print(npc['banker']['quote']) 42 banker_event() 43 44# 実行 45def main(): 46 for _ in range(5): 47 status() 48 act() 49 50main() 51
補足情報(FW/ツールのバージョンなど)
OS:Mac
Editor:Atom
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/06 06:20
2018/09/06 07:04