前提・実現したいこと
can't set attribute を解決したいです。
私のコードはとても長くて汚いものですが、もし助言をいただけるとありがたいです。
発生している問題・エラーメッセージ
AttributeError: can't set attribute
エラーメッセージ
Traceback (most recent call last):
File "c:/Users/###########/Downloads/19#############/Excbsys.py", line 47, in <module>
combat_system(Monster1=Monster01,Monster2=Monster02)
File "c:/Users/###########/Downloads/19#############/Excbsys.py", line 12, in combat_system
Monster1.Hit_point -= (+(Monster2.Offensive_power - (Monster1.Defense_power**2 / Monster2.Offensive_power)*0.8))
AttributeError: can't set attribute
該当のソースコード
Excbsys.py
import hakyuuPlayerIO as hIO
import random
import collections
from extra import PocketMonster
def combat_system(Monster1,Monster2):
Monster1_Initiative=random.uniform(0, 1)
Monster2_Initiative=random.uniform(0,1)
if Monster1_Initiative <= Monster2_Initiative:
Monster1.Hit_point -= (+(Monster2.Offensive_power - (Monster1.Defense_power2 / Monster2.Offensive_power)*0.8))
while Monster1.Hit_point==0 or Monster2.Hit_point==0:
if Monster1.Quickness <= Monster2.Quickness:
Monster1.Hit_point -= (+(Monster2.Offensive_power - (Monster1.Defense_power2 / Monster2.Offensive_power)*0.8))
Monster2.Hit_point -= (+(Monster1.Offensive_power - (Monster2.Defense_power2 / Monster1.Offensive_power)*0.8))
else:
Monster2.Hit_point -= (+(Monster1.Offensive_power - (Monster2.Defense_power2 / Monster1.Offensive_power)*0.8))
Monster1.Hit_point -= (+(Monster2.Offensive_power - (Monster1.Defense_power2 / Monster2.Offensive_power)*0.8))
else:
Monster2.Hit_point -= (+(Monster1.Offensive_power - (Monster2.Defense_power2 / Monster1.Offensive_power)*0.8))
while Monster1.Hit_point==0 or Monster2.Hit_point==0:
if Monster1.Quickness <= Monster2.Quickness:
Monster1.Hit_point -= (+(Monster2.Offensive_power - (Monster1.Defense_power2 / Monster2.Offensive_power)*0.8))
Monster2.Hit_point -= (+(Monster1.Offensive_power - (Monster2.Defense_power2 / Monster1.Offensive_power)*0.8))
else:
Monster2.Hit_point -= (+(Monster1.Offensive_power - (Monster2.Defense_power2 / Monster1.Offensive_power)*0.8))
Monster1.Hit_point -= (+(Monster2.Offensive_power - (Monster1.Defense_power2 / Monster2.Offensive_power)*0.8))
if Monster1.Hit_point==0:
return 2
elif Monster2.Hit_point==0:
return 1
else:
return 0
if name=="main":
fileHandle2=open("outputFile.txt","r")
List = []
for w in range(6):
List.append(hIO.readPlayerFromFile(fileHandle2))
fileHandle2.close()
Monster01 = random.choice(List)
Monster02 = random.choice(List)
print(Monster01)
print(Monster02)
combat_system(Monster1=Monster01,Monster2=Monster02)
試したこと
考えてみましたが何が悪いのかわかず、調べてもみましたがどのサイトも自分のエラーと似ているものが見つからませんでした。
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
使用しているエディタはVs codeです。
使用しているパソコンはWindows10です。
ここにより詳細な情報を記載してください。
#importするコード
hakyuuPlayerIO.py
import collections
from extra import PocketMonster
import random
def modifyRandomly(fValue, percentage):
return fValue**round(random.uniform(1-1float(percentage)/100,1+1float(percentage)/100 ),3)
def createRandomPlayer(nameInit="noname",Offensive_powerInit=-1,Defense_powerInit=-1,QuicknessInit=-1,Hit_pointInit=-1,Special_attack_powerInit=-1,Special_defense_powerInit=-1):
if(Offensive_powerInit==-1):Offensive_powerInit=random.randint(0, 101)
if(Defense_powerInit==-1):Defense_powerInit=random.randint(0, 101)
if(QuicknessInit==-1):QuicknessInit=random.randint(0, 11)
if(Hit_pointInit==-1):Hit_pointInit=random.randint(0, 51)
if(Special_attack_powerInit==-1):Special_attack_powerInit=random.randint(0, 101)
if(Special_defense_powerInit==-1):Special_defense_powerInit=random.randint(0,101)
randomPokemon=PocketMonster(name=nameInit,Offensive_power=Offensive_powerInit, Defense_power=Defense_powerInit, Quickness=QuicknessInit,Hit_point=Hit_pointInit, Special_attack_power= Special_attack_powerInit, Special_defense_power=Special_defense_powerInit) return randomPokemon
#receives a file that has already been open in fileHandle
def writePlayerToFile(fileHandle,pokemon):
fileHandle.write(pokemon.name+"\n")
fileHandle.write(str(pokemon.Offensive_power)+"\n")
fileHandle.write(str(pokemon.Defense_power)+"\n")
fileHandle.write(str(pokemon.Quickness)+"\n")
fileHandle.write(str(pokemon.Hit_point)+"\n")
fileHandle.write(str(pokemon.Special_attack_power)+"\n")
fileHandle.write(str(pokemon.Special_defense_power)+"\n")
#receives a file that has already been open in fileHandle
def readPlayerFromFile(fileHandle):
nameInit=fileHandle.readline().strip()
Offensive_powerInit=float(fileHandle.readline().strip())
Defense_powerInit=float(fileHandle.readline().strip())
QuicknessInit=int(fileHandle.readline().strip())
Hit_pointInit=int(fileHandle.readline().strip())
Special_attack_powerInit=float(fileHandle.readline().strip())
Special_defense_powerInit=float(fileHandle.readline().strip())
return PocketMonster(name=nameInit, Offensive_power=Offensive_powerInit, Defense_power=Defense_powerInit, Quickness=QuicknessInit, Hit_point=Hit_pointInit, Special_attack_power= Special_attack_powerInit, Special_defense_power=Special_defense_powerInit)
#importするコード
extra.py
import collections
PocketMonster = collections.namedtuple("PocketMonster","name Offensive_power Defense_power Quickness Hit_point Special_attack_power Special_defense_power")
あなたの回答
tips
プレビュー