前提・実現したいこと
野球ゲームのプログラムを書いているのですが、
作った打順をリストに格納してヒットかアウト判定する関数に入れた所
1回の処理を終えてしまうと1番打者に戻ってしまいます。
打順なので処理を終えた所からリストを読み込める様にしたい。
該当のソースコード
python
1# bは塁打。ホームランも4塁打として扱えば良い。 2def hit(base_state, b): 3 # どの塁までランナーが到達したか。3塁のあとは4塁,5塁と突き進む。 4 ret = [] 5 point = 0 6 if b == 0: 7 for e in base_state: 8 ret.append(e) 9 return ret, point 10 else: 11 new_state = [b] 12 for e in base_state: 13 new_state.append(e+b) 14 # 4塁を超えたランナーをホームインさせる。 15 for e in new_state: 16 if e < 4: 17 ret.append(e) 18 else: 19 point += 1 20 21 # ベース上の状況と、今の打席の点数を返す。 22 return ret, point
python
1#選手毎のデータ読み込み 2base_defn = 3 3def pro_name(pros): 4 state = [] 5 total_point=[] 6 out = 0 7 point = 0 8 while True: 9 for pro in pros: 10 one_date = df3.loc[[pro],['安打','二塁打','三塁打','本塁打','打率(割合)']] 11 for index, row in one_date.iterrows(): 12 #選手名 13 name = index 14 #安打数 15 a_bat = row[0] + row[1] + row[2] + row[3] 16 #安打数からの単打の割合 17 a_hit = row[0] / a_bat 18 #安打数からの二塁打の割合 19 two = row[1] / a_bat + a_hit 20 #安打数からの三塁打の割合 21 thr = row[2] / a_bat + two 22 #打率 23 atta = row[4] 24 coin1 = random.random() 25 coin2 = random.random() 26 #3の数字は後に相手投手の防御率が入る。 27 print('-'*16) 28 if coin1 < (atta + 3 - base_defn): 29 if coin2 < a_hit: 30 print(name+'ヒット') 31 h = 1 32 elif coin2 < two: 33 print(name+'ツーベースヒット') 34 h = 2 35 elif coin2 < thr: 36 print(name+'スリーベースヒット') 37 h = 3 38 else: 39 print(name+'ホームラン!!!!!!!!!!!!!!!') 40 h = 4 41 else: 42 print(name+'アウト!') 43 out += 1 44 h = 0 45 print('-'*16) 46 state, point = hit(state, h) # 塁上の状況の更新。 47 print(f'只今{out}アウト') 48 if not state: 49 print('ランナーなし') 50 else: 51 print(f'ただいまランナー{state}塁') 52 print(f'{point}点入りました') 53 total_point.append(point) 54 print(f'只今{sum(total_point)}点') 55 if out == 3: 56 return print('チェンジ!!') 57 sys.exit()
python
1player=['荻野 貴司','角中 勝也','清田 育宏','井上 晴哉','加藤 翔平','藤岡 裕大','藤原 恭大','細谷 圭','三木 亮'] 2member = [player[i%9] for i in range(0,100)] 3for i in range(9): 4 pro_name(member)
補足情報(FW/ツールのバージョンなど)
python3.7
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/22 10:28