python
1# プレイアウト2def playout(state):3 # 負けは状態価値-14 if state.is_lose():5 return -16 7 # 引き分けは状態価値08 if state.is_draw():9 return 010 11 # 次の状態の状態価値12 return -playout(state.next(random_action(state))) 13 14# 三目並べの作成15import random 16 17# ゲームの状態18class State:19 # 初期化20 def __init__(self,mikatapokemon="ヒトカゲ",tekipokemon="ゼニガメ"):21 self.mikatapokemon1=mikatapokemon 22 self.tekipokemon1=tekipokemon 23 self.senkou="ヒトカゲ"24 # ポケモンステータス初期計算25 pd.set_option('display.max_columns',40)26 df=pd.read_csv("種族値技.csv")27 df2=pd.read_csv("わざ.csv")28 29 self.pokemon=[mikatapokemon,tekipokemon]30 print(mikatapokemon,"と",tekipokemon,"のバトル!")31 mikata = df[df["ポケモン名"]==self.pokemon[0]]32 teki = df[df["ポケモン名"]==self.pokemon[1]]33 mikatasubayasa=mikata=int((int((mikata["すばやさ"].values*2+31)*50/100)/5)*1)34 tekisubayasa=int((int((teki["すばやさ"].values*2/31)*50/100)+5)*1)35 if(mikatasubayasa >= tekisubayasa):36 self.senkou=mikatapokemon 37 else:38 self.senkou=tekipokemon 39 if(self.pokemon[0] != self.senkou):40 self.pokemon=[tekipokemon,mikatapokemon]41 42 self.mikatapokemon1 = df[df["ポケモン名"]==self.pokemon[0]]43 self.mikata1waza = df[df["ポケモン名"]==self.pokemon[0]][["わざ1","わざ2","わざ3","わざ4"]]44 self.mikata1HP=int((self.mikatapokemon1["HP"].values*2+31)*50/100)+10/5045 self.mikata1kougeki= int((int((self.mikatapokemon1["こうげき"].values*2/31)*50/100)+5)*1)46 self.mikata1bougyo=int((int((self.mikatapokemon1["ぼうぎょ"].values*2/31)*50/100)+5)*1)47 self.mikata1tokukou=int((int((self.mikatapokemon1["とくこう"].values*2/31)*50/100)+5)*1)48 self.mikata1tokubou=int((int((self.mikatapokemon1["とくぼう"].values*2/31)*50/100)+5)*1)49 self.mikata1subayasa=int((int((self.mikatapokemon1["すばやさ"].values*2/31)*50/100)+5)*1)50 51 self.tekipokemon1 = df[df["ポケモン名"]==self.pokemon[1]]52 self.teki1waza = df[df["ポケモン名"]==self.pokemon[1]][["わざ1","わざ2","わざ3","わざ4"]]53 self.teki1HP=int((self.tekipokemon1["HP"].values*2/31)*50/100)+10+5054 self.teki1kougeki= int((int((self.tekipokemon1["こうげき"].values*2/31)*50/100)+5)*1)55 self.teki1bougyo=int((int((self.tekipokemon1["ぼうぎょ"].values*2/31)*50/100)+5)*1)56 self.teki1tokukou=int((int((self.tekipokemon1["とくこう"].values*2/31)*50/100)+5)*1)57 self.teki1tokubou=int((int((self.tekipokemon1["とくぼう"].values*2/31)*50/100)+5)*1)58 self.teki1subayasa=int((int((self.tekipokemon1["すばやさ"].values*2/31)*50/100)+5)*1)59 60 #print(pokemon[0],"のHP:",self.mikata1HP)61 #print(pokemon[1],"のHP:",self.teki1HP)62 63 # 味方敵残りHP、ダメージ、の取得64 def HP_count(self,mikatawaza,tekiwaza): #文字で入力65 df=pd.read_csv("種族値技.csv")66 df2=pd.read_csv("わざ.csv")67 df1=df.set_index('ポケモン名')68 mikatapokemon=self.mikatapokemon1 69 tekipokemon=self.tekipokemon1 70 waza1="わざ"+str(mikatawaza)71 waza2="わざ"+str(tekiwaza)72 waza1=df1.loc[mikatapokemon,waza1]73 waza2=df1.loc[tekipokemon,waza2]74 if(df2.query('わざ名 == @waza1')["分類"].values == "とくしゅ"):75 #print(pokemon[0],"の",waza1,"!")76 iryoku=df2.query('わざ名 == @waza1')["いりょく"].values 77 damage=int(int(int(50*2/5+2)*iryoku*self.mikata1tokukou/self.teki1tokubou)/50+2)78 #攻撃側のレベル×25+2×物理技(特殊技)の威力×攻撃側のこうげき(とくこう)防御側のぼうぎょ(とくぼう)79 else:80 iryoku=df2.query('わざ名 == @waza1')["いりょく"].values 81 damage=int(int(int(50*2/5+2)*iryoku*self.mikata1kougeki/self.teki1bougyo)/50+2)82 #タイプ一致83 if(df2.query('わざ名 == @waza1')["タイプ"].values in df[df["ポケモン名"]==self.pokemon[0]][["タイプ1","タイプ2"]].values):84 damage = int(damage*1.5)85 #こうかばつぐん86 if(df2.query('わざ名 == @waza1')["タイプ"].values in df[df["ポケモン名"]==self.pokemon[1]][["こうかばつぐん1","こうかばつぐん2","こうかばつぐん3","こうかばつぐん4"]].values):87 #print("こうかはばつぐんだ!")88 damage *= 289 #こうかばつぐん4倍90 if(df2.query('わざ名 == @waza1')["タイプ"].values in df[df["ポケモン名"]==self.pokemon[1]][["こうかばつぐん4倍"]].values):91 #print("とてもこうかはばつぐんだ!")92 damage *= 493 #こうかいまひとつ94 if(df2.query('わざ名 == @waza1')["タイプ"].values in df[df["ポケモン名"]==self.pokemon[1]][["こうかいまひとつ1","こうかいまひとつ2","こうかいまひとつ3","こうかいまひとつ4","こうかいまひとつ5","こうかいまひとつ6","こうかいまひとつ7","こうかいまひとつ8"]].values):95 #print("こうかはいまひとつ!")96 damage = int(damage/2)97 #こうかいまひとつ0.2598 if(df2.query('わざ名 == @waza1')["タイプ"].values in df[df["ポケモン名"]==self.pokemon[1]][["こうかいまひとつ0.25の1","こうかいまひとつ0.25の2"]].values):99 #print("とてもこうかはいまひとつ!")100 damage = int(damage/4)101 self.teki1HP -= damage
0 コメント