サイズが違うとエラーが出る

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.senkou="ヒトカゲ"22 # ポケモンステータス初期計算23 pd.set_option('display.max_columns',40)24 df=pd.read_csv("種族値技.csv")25 df2=pd.read_csv("わざ.csv")26 27 self.pokemon=[mikatapokemon,tekipokemon]28 print(mikatapokemon,"と",tekipokemon,"のバトル!")29 mikata = df[df["ポケモン名"]==self.pokemon[0]]30 teki = df[df["ポケモン名"]==self.pokemon[1]]31 mikatasubayasa=mikata=int((int((mikata["すばやさ"].values*2+31)*50/100)/5)*1)32 tekisubayasa=int((int((teki["すばやさ"].values*2/31)*50/100)+5)*1)33 if(mikatasubayasa >= tekisubayasa):34 self.senkou=mikatapokemon 35 else:36 self.senkou=tekipokemon 37 if(self.pokemon[0] != self.senkou):38 self.pokemon=[tekipokemon,mikatapokemon]39 40 self.mikatapokemon1 = df[df["ポケモン名"]==self.pokemon[0]]41 self.mikata1waza = df[df["ポケモン名"]==self.pokemon[0]][["わざ1","わざ2","わざ3","わざ4"]]42 self.mikata1HP=int((mikatapokemon1["HP"].values*2+31)*50/100)+10/5043 self.mikata1kougeki= int((int((self.mikatapokemon1["こうげき"].values*2/31)*50/100)+5)*1)44 self.mikata1bougyo=int((int((self.mikatapokemon1["ぼうぎょ"].values*2/31)*50/100)+5)*1)45 self.mikata1tokukou=int((int((self.mikatapokemon1["とくこう"].values*2/31)*50/100)+5)*1)46 self.mikata1tokubou=int((int((self.mikatapokemon1["とくぼう"].values*2/31)*50/100)+5)*1)47 self.mikata1subayasa=int((int((self.mikatapokemon1["すばやさ"].values*2/31)*50/100)+5)*1)48 49 self.tekipokemon1 = df[df["ポケモン名"]==self.pokemon[1]]50 self.teki1waza = df[df["ポケモン名"]==self.pokemon[1]][["わざ1","わざ2","わざ3","わざ4"]]51 self.teki1HP=int((self.tekipokemon1["HP"].values*2/31)*50/100)+10+5052 self.teki1kougeki= int((int((self.tekipokemon1["こうげき"].values*2/31)*50/100)+5)*1)53 self.teki1bougyo=int((int((self.tekipokemon1["ぼうぎょ"].values*2/31)*50/100)+5)*1)54 self.teki1tokukou=int((int((self.tekipokemon1["とくこう"].values*2/31)*50/100)+5)*1)55 self.teki1tokubou=int((int((self.tekipokemon1["とくぼう"].values*2/31)*50/100)+5)*1)56 self.teki1subayasa=int((int((self.tekipokemon1["すばやさ"].values*2/31)*50/100)+5)*1)57 58 #print(pokemon[0],"のHP:",self.mikata1HP)59 #print(pokemon[1],"のHP:",self.teki1HP)60 61 # 味方敵残りHP、ダメージ、の取得62 def HP_count(self,mikatawaza,tekiwaza):63 waza1="わざ"+str(mikatawaza)64 waza2="わざ"+str(tekiwaza)65 if(df2.query('わざ名 == @waza1')["分類"].values == "とくしゅ"):66 #print(pokemon[0],"の",waza1,"!")67 iryoku=df2.query('わざ名 == @waza1')["いりょく"].values 68 damage=int(int(int(50*2/5+2)*iryoku*self.mikata1tokukou/self.teki1tokubou)/50+2)69 #攻撃側のレベル×25+2×物理技(特殊技)の威力×攻撃側のこうげき(とくこう)防御側のぼうぎょ(とくぼう)70 else:71 iryoku=df2.query('わざ名 == @waza1')["いりょく"].values 72 damage=int(int(int(50*2/5/2)*iryoku*self.mikata1kougeki/self.teki1bougyo)/50+2)73 #タイプ一致74 if(df2.query('わざ名 == @waza1')["タイプ"].values in df[df["ポケモン名"]==self.pokemon[0]][["タイプ1","タイプ2"]].values):75 damage = int(damage*1.5)76 #こうかばつぐん77 if(df2.query('わざ名 == @waza1')["タイプ"].values in df[df["ポケモン名"]==self.pokemon[1]][["こうかばつぐん1","こうかばつぐん2","こうかばつぐん3","こうかばつぐん4"]].values):78 #print("こうかはばつぐんだ!")79 damage *= 280 #こうかばつぐん4倍81 if(df2.query('わざ名 == @waza1')["タイプ"].values in df[df["ポケモン名"]==self.pokemon[1]][["こうかばつぐん4倍"]].values):82 #print("とてもこうかはばつぐんだ!")83 damage *= 484 #こうかいまひとつ85 if(df2.query('わざ名 == @waza1')["タイプ"].values in df[df["ポケモン名"]==self.pokemon[1]][["こうかいまひとつ1","こうかいまひとつ2","こうかいまひとつ3","こうかいまひとつ4","こうかいまひとつ5","こうかいまひとつ6","こうかいまひとつ7","こうかいまひとつ8"]].values):86 #print("こうかはいまひとつ!")87 damage = int(damage/2)88 #こうかいまひとつ0.2589 if(df2.query('わざ名 == @waza1')["タイプ"].values in df[df["ポケモン名"]==self.pokemon[1]][["こうかいまひとつ0.25の1","こうかいまひとつ0.25の2"]].values):90 #print("とてもこうかはいまひとつ!")91 damage = int(damage/4)92 self.teki1HP -= damage 93 94 if(self.teki1HP > 0):95 #print(pokemon[1],"の",waza2,"!")96 if(df2.query('わざ名 == @waza2')["分類"].values == "とくしゅ"):97 iryoku=df2.query('わざ名 == @waza2')["いりょく"].values 98 damage=int(int(int(50*2/5/2)*iryoku*self.mikata1tokukou/self.teki1tokubou)/50+2)99 #攻撃側のレベル×25+2×物理技(特殊技)の威力×攻撃側のこうげき(とくこう)防御側のぼうぎょ(とくぼう)100 else:101 iryoku=df2.query('わざ名 == @waza2')["いりょく"].values 102 damage=int(int(int(50*2/5/2)*iryoku*self.mikata1kougeki/self.teki1bougyo)/50+2)103 #タイプ一致104 if(df2.query('わざ名 == @waza2')["タイプ"].values in df[df["ポケモン名"]==pokemon[1]][["タイプ1","タイプ2"]].values):105 damage = int(damage*1.5)106 #こうかばつぐん107 if(df2.query('わざ名 == @waza2')["タイプ"].values in df[df["ポケモン名"]==pokemon[0]][["こうかばつぐん1","こうかばつぐん2","こうかばつぐん3","こうかばつぐん4"]].values):108 #print("こうかはばつぐんだ!")109 damage *= 2110 #こうかばつぐん4倍111 if(df2.query('わざ名 == @waza1')["タイプ"].values in df[df["ポケモン名"]==pokemon[0]][["こうかばつぐん4倍"]].values):112 #print("とてもこうかはばつぐんだ!")113 damage *= 4114 #こうかいまひとつ115 if(df2.query('わざ名 == @waza1')["タイプ"].values in df[df["ポケモン名"]==pokemon[0]][["こうかいまひとつ1","こうかいまひとつ2","こうかいまひとつ3","こうかいまひとつ4","こうかいまひとつ5","こうかいまひとつ6","こうかいまひとつ7","こうかいまひとつ8"]].values):116 #print("こうかはいまひとつ!")117 damage = int(damage/2)118 #こうかいまひとつ0.25119 if(df2.query('わざ名 == @waza1')["タイプ"].values in df[df["ポケモン名"]==pokemon[0]][["こうかいまひとつ0.25の1","こうかいまひとつ0.25の2"]].values):120 #print("とてもこうかはいまひとつ!")121 damage = int(damage/4)122 self.mikata1HP -= damage 123 124 # 負けかどうか125 def is_lose(self):126 if(self.mikata1HP<=0):127 return True128 else:129 return False130 131 132 # ゲーム終了かどうか133 def is_done(self):134 return self.is_lose()135 136 # 次の状態の取得137 def next(self, mikataaction,tekiaction):#0,1,2,3が入る138 self.HP_count(mikataaction,tekiaction)139 140 return State(self.teki1HP,self.mikata1HP)141 142 # 合法手のリストの取得143 def legal_actions(self):144 actions = [0,1,2,3]145 return actions 146 # 先手かどうか147 def is_first_player(self):148 return self.piece_count(self.pieces) == self.piece_count(self.enemy_pieces)149 150# ランダムで行動選択151def random_action(state):152 legal_actions = state.legal_actions()153 return legal_actions[random.randint(0, len(legal_actions)-1)]154 155

コメントを投稿

0 コメント