2017年3月1日水曜日

FC版ドラクエ1 りゅうおうとの戦いシミュレーション【Python】

前回よりいろいろ改良し、いい感じのところまで作れてきたと思います

午前4時前・・・今日ももちろん仕事です、
プログラミングにはまっちゃうとやばいですね


さて、今日のところは詳しく書きませんが、以下の設定で1000回戦うコードを作りました(何万回でも良いですが)

勝率およそ63%くらいでした
かなり高いと思いますので、ドラクエ1に詳しい方いらっしゃいましたらご指導お願い致します

"""
基礎データ
ゆうしゃ(Lv18を想定)
HP115
MP100
こうげきとベホイミのみ
こうげき 6~12のランダム
ベホイミ 85~100のランダム

りゅうおう
HP130
こうげき 24~48
ほのお 42~48
こうげきとほのおの確率を半分とする

ルーチーン
HP49以上ならこうげき
HP48以下になったらMPが尽きるまでベホイミで回復
"""

# -*- coding: utf-8 -*-
"""
基礎データ
ゆうしゃ
HP115
MP100
こうげきとベホイミのみ
こうげき 6~12のランダム
ベホイミ 85~100のランダム
りゅうおう
HP130
こうげき 24~48
ほのお 42~48
確率半分とする
ルーチーン
HP49以上ならこうげき
HP48以下になったらMPが尽きるまでベホイミで回復
"""
import random
kati = 0
make = 0
for i in range(1000):
myHP =115
myMP = 100
HP = 130
syouhiMP = 10
turn = 1
try:
while HP > 0:
print("ターン"+str(turn))
turn += 1
if myHP >48:
print("ゆうしゃ のこうげき")
damage = random.randint(6,12)
print ("  りゅうおうに " + str(damage) + " のダメージ")
HP -= damage
if HP <= 0:
print("りゅうおうを たおした!")
kati +=1
raise Exception
elif myHP >0:
if myMP >= 10:
behoimi = random.randint(85,100)
print ("ゆうしゃ は ベホイミのじゅもんを となえた!")
myHP += behoimi
myMP -= syouhiMP
if myHP >115:
myHP =115
else:
damage = random.randint(6,12)
print ("  りゅうおうに " + str(damage) + " のダメージ")
HP -= damage
if HP <= 0:
print("りゅうおうを たおした!")
kati +=1
raise Exception
ryucommand = random.randint(0,1)
if ryucommand == 0:
mydamage = random.randint(24,48)
print("りゅうおうの こうげき")
print("ゆうしゃ は"+str(mydamage)+"のダメージを うけた!")
myHP -= mydamage
elif ryucommand == 1:
mydamage = random.randint(42,48)
print("りゅうおうは ほのおをはいた!")
print("ゆうしゃ は"+str(mydamage)+"のダメージを うけた!")
myHP -= mydamage
print(HP)
print(myHP)
if myHP < 0:
print ("ゆうしゃは しんでしまった!")
make +=1
raise Exception
except Exception:
print (kati)
print (make)
view raw DQ1-v1 hosted with ❤ by GitHub

---------------


出力例
ターン1
ゆうしゃ のこうげき
  りゅうおうに 7 のダメージ
りゅうおうの こうげき
ゆうしゃ は47のダメージを うけた!
ターン2
ゆうしゃ のこうげき
  りゅうおうに 11 のダメージ
りゅうおうの こうげき
ゆうしゃ は40のダメージを うけた!
ターン3
ゆうしゃ は ベホイミのじゅもんを となえた!
りゅうおうの こうげき
ゆうしゃ は44のダメージを うけた!
ターン4
ゆうしゃ のこうげき
  りゅうおうに 7 のダメージ
りゅうおうの こうげき
ゆうしゃ は34のダメージを うけた!
ターン5
ゆうしゃ は ベホイミのじゅもんを となえた!
りゅうおうは ほのおをはいた!
ゆうしゃ は45のダメージを うけた!
105
70
ターン6
ゆうしゃ のこうげき
  りゅうおうに 11 のダメージ
りゅうおうは ほのおをはいた!
ゆうしゃ は43のダメージを うけた!
94
27
ターン7
ゆうしゃ は ベホイミのじゅもんを となえた!
  りゅうおうに 6 のダメージ
りゅうおうは ほのおをはいた!
ゆうしゃ は46のダメージを うけた!
88
69
ターン8
ゆうしゃ のこうげき
  りゅうおうに 7 のダメージ
りゅうおうの こうげき
ゆうしゃ は43のダメージを うけた!
ターン9
ゆうしゃ は ベホイミのじゅもんを となえた!
りゅうおうは ほのおをはいた!
ゆうしゃ は45のダメージを うけた!
81
70
ターン10
ゆうしゃ のこうげき
  りゅうおうに 6 のダメージ
りゅうおうの こうげき
ゆうしゃ は25のダメージを うけた!
ターン11
ゆうしゃ は ベホイミのじゅもんを となえた!
りゅうおうの こうげき
ゆうしゃ は46のダメージを うけた!
ターン12
ゆうしゃ のこうげき
  りゅうおうに 10 のダメージ
りゅうおうの こうげき
ゆうしゃ は30のダメージを うけた!
ターン13
ゆうしゃ は ベホイミのじゅもんを となえた!
りゅうおうの こうげき
ゆうしゃ は26のダメージを うけた!
ターン14
ゆうしゃ のこうげき
  りゅうおうに 7 のダメージ
りゅうおうの こうげき
ゆうしゃ は33のダメージを うけた!
ターン15
ゆうしゃ のこうげき
  りゅうおうに 12 のダメージ
りゅうおうは ほのおをはいた!
ゆうしゃ は42のダメージを うけた!
46
14
ターン16
ゆうしゃ は ベホイミのじゅもんを となえた!
  りゅうおうに 8 のダメージ
りゅうおうの こうげき
ゆうしゃ は37のダメージを うけた!
ターン17
ゆうしゃ のこうげき
  りゅうおうに 7 のダメージ
りゅうおうは ほのおをはいた!
ゆうしゃ は44のダメージを うけた!
31
26
ターン18
ゆうしゃ は ベホイミのじゅもんを となえた!
りゅうおうの こうげき
ゆうしゃ は41のダメージを うけた!
ターン19
ゆうしゃ のこうげき
  りゅうおうに 11 のダメージ
りゅうおうの こうげき
ゆうしゃ は41のダメージを うけた!
ターン20
ゆうしゃ は ベホイミのじゅもんを となえた!
りゅうおうの こうげき
ゆうしゃ は42のダメージを うけた!
ターン21
ゆうしゃ のこうげき
  りゅうおうに 12 のダメージ
りゅうおうは ほのおをはいた!
ゆうしゃ は44のダメージを うけた!
8
29
ターン22
ゆうしゃ は ベホイミのじゅもんを となえた!
りゅうおうは ほのおをはいた!
ゆうしゃ は48のダメージを うけた!
8
67
ターン23
ゆうしゃ のこうげき
  りゅうおうに 9 のダメージ
りゅうおうを たおした!
kati637
make363


<<<   りゅうおうを倒すまでの攻撃回数【Python】if文,while文

0 件のコメント:

コメントを投稿